==== СКД ====
=== Описание названий группировок и методика применения макета в СКД ===
Статья находится [[https://its.1c.ru/db/metod8dev/content/1811/hdoc|здесь.]]
=== Создание документа на основании отчета СКД. 1С 8.2 ===
Процедура СоздатьЗаказПоставщикуНажатие(Элемент)
// получаем настройки СКД, хранимые в макете
СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
// получаем настройки СКД, введенные пользователем.
Настройки = ЭтотОбъект.КомпоновщикНастроек.Настройки;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,);
ТЗ = Новый ТаблицаЗначений;
// вывод должен быть именно в коллекцию значений, а не в документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТЗ);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Док = Документы.ЗаказПоставщику.СоздатьДокумент();
Для Каждого Стр из ТЗ Цикл
Если Стр.КоличествоКЗаказу > 0 Тогда
Товар = Док.Товары.Добавить();
Товар.Номенклатура = Стр.Номенклатура;
Товар.Количество = Стр.КоличествоКЗаказу;
КонецЕсли;
КонецЦикла;
Форма = Док.ПолучитьФорму();
Форма.Открыть();
КонецПроцедуры
=== Как добавить варианты отчета СКД на обычную форму ===
В модуль формы добавить код:
Процедура УстановитьВариантыНастроек()
КП = ЭлементыФормы.ДействияФормы;
НоваяКнопка = КП.Кнопки.Вставить(1,"_ВариантыОтчета", ТипКнопкиКоманднойПанели.Подменю, "Варианты отчетов", );
НовоеДействие = Новый Действие("_СменаВариантаНастройки");
ч = 1;
Для каждого Настройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
НоваяКнопка = КП.Кнопки._ВариантыОтчета.Кнопки.Добавить("Вариант"+Строка(ч), ТипКнопкиКоманднойПанели.Действие,
Настройка.Представление,
НовоеДействие);
ч = ч + 1;
КонецЦикла;
КонецПроцедуры
Процедура ПриОткрытии()
УстановитьВариантыНастроек();
КонецПроцедуры
Процедура _СменаВариантаНастройки (Элемент)
Для каждого Настройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
Если Элемент.Текст = Настройка.Представление Тогда
КомпоновщикНастроек.ЗагрузитьНастройки(Настройка.Настройки);
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры;