Создает Компановщик настроек.
Заполняет его отборами на основании Построителя (он на форме)
Подсовывает этот Компановщик в СКД и выводит результат в Дерево значений
используется тут: http://infostart.ru/public/91297
Процедура ЗаполнитьТаблицуТоваров()
ТабличноеПолеДокумент.Строки.Очистить();
ГруппировкаПоНом = Неопределено;
СписГруппировок = Новый СписокЗначений;
СписГруппировок.Добавить("Номенклатура");
СписГруппировок.Добавить("Размер");
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
Группировка = КомпоновщикНастроек.Настройки;
Группировка.Структура.Очистить();
Для i=1 По СписГруппировок.Количество() Цикл
Значение = СписГруппировок.Получить(i-1).Значение;
Группировка = Группировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Группировка.Имя = Значение;
Группировка.Использование = Истина;
Группировка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
Поле = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
Поле.Поле = Новый ПолеКомпоновкиДанных(Значение);
Поле.Использование = Истина;
ВыбранноеПоле = Группировка.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Поле.Поле;
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле = Группировка.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ОстатокСклад1");
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле = Группировка.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ОстатокСклад2");
ВыбранноеПоле.Использование = Истина;
Если ГруппировкаПоНом = Неопределено Тогда
ГруппировкаПоНом = Группировка;
КонецЕсли;
КонецЦикла;
Для Каждого ЭлементОтбора Из ПостроительОтчета.Отбор Цикл
Если Не ЭлементОтбора.Использование Тогда
Продолжить;
КонецЕсли;
ВидСравненияВОтборе = мСоответствиеВидовСравнения.Получить(ЭлементОтбора.ВидСравнения);
Если ВидСравненияВОтборе = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Лев(ЭлементОтбора.ПутьКДанным, 8) = "Свойство" Тогда
ИмяПоля = "Номенклатура.["+СоответствиеНазначений[ЭлементОтбора.Представление]+" (свойство)]";
Иначе
ИмяПоля = ЭлементОтбора.ПутьКДанным;
КонецЕсли;
ПолеОтбора = Новый ПолеКомпоновкиДанных(ИмяПоля);
Отбор = ГруппировкаПоНом.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = ПолеОтбора;
Отбор.Использование = Истина;
Отбор.ВидСравнения = ВидСравненияВОтборе;
Отбор.ПравоеЗначение = ЭлементОтбора.Значение;
КонецЦикла;
СхемаКомпоновкиДанных = ПолучитьМакет("Схема");
СхемаКомпоновкиДанных.Параметры.Период.Значение = ДокументСсылка.Дата;
СхемаКомпоновкиДанных.Параметры.Склад1.Значение = СкладОтправитель;
СхемаКомпоновкиДанных.Параметры.Склад2.Значение = СкладПолучатель;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТабличноеПолеДокумент);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Для Каждого Стр Из ТабличноеПолеДокумент.Строки Цикл
Стр.Колонка2 = Стр.Колонка1;
КонецЦикла;
ЛишняяСтрока = ТабличноеПолеДокумент.Строки[ТабличноеПолеДокумент.Строки.Количество()-1];
ТабличноеПолеДокумент.Строки.Удалить(ЛишняяСтрока);
КонецПроцедуры
