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