В начало

Программное создание СКД

 

Нужно программно описать систему компоновки данных, добавить набор данных и вывести простейший отчет по контрагентам.

Создаем отчет «Контрагенты» в режиме конфигуратора. Создаем форму отчета. На форму размешаем поле табличного документа с именем «Результат».

Рис. Поле табличного документа

            Добавляем кнопку на форму отчета, называем «Сформировать отчет». На действие кнопки прописываем код процедуры.

Листинг. Код процедуры в модуле формы отчета

Процедура ДействияФормыСформироватьОтчет(Кнопка)

                СКД = Новый СхемаКомпоновкиДанных;

               

                ИД = СКД.ИсточникиДанных.Добавить();

                ИД.Имя = "ИсточникДанных";  

                ИД.СтрокаСоединения = "";

                ИД.ТипИсточникаДанных = "Local";

               

                НД = СКД.НаборыДанных.Добавить(Тип ("НаборДанныхЗапросСхемыКомпоновкиДанных"));

                НД.Имя = "НаборДанных";

                НД.Запрос ="ВЫБРАТЬ

                           |    Контрагенты.Код,

                           |    Контрагенты.Наименование

                           |ИЗ

                           |    Справочник.Контрагенты КАК Контрагенты";

                НД.ИсточникДанных = "ИсточникДанных";

               

    //Поля в наборе данных

                Поле1 = НД.Поля.Добавить(Тип ("ПолеНабораДанныхСхемыКомпоновкиДанных"));

                Поле1.Поле = "Код";

                Поле1.ПутьКДанным = "Код";

                Поле1.Заголовок = "Код";

               

                Поле1 = НД.Поля.Добавить(Тип ("ПолеНабораДанныхСхемыКомпоновкиДанных"));

                Поле1.Поле = "Наименование";

                Поле1.ПутьКДанным = "Наименование";

                Поле1.Заголовок = "Наименование";

               

                //Выбранные поля

                ВыбранноеПоле = СКД.ВариантыНастроек[0].Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));

                ВыбранноеПоле.Использование = Истина;

                ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Код");

               

                ВыбранноеПоле = СКД.ВариантыНастроек[0].Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));

                ВыбранноеПоле.Использование = Истина;

                ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Наименование");

 

    //Добавляем группировку

                Структура = СКД.ВариантыНастроек[0].Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

                Структура.Использование = Истина;

                Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

                Структура.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));

 

                Настройки = СКД.НастройкиПоУмолчанию;

                ДанныеРасшифровкиСКД = Новый ДанныеРасшифровкиКомпоновкиДанных;

                КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

                ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;

                МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Настройки, ДанныеРасшифровкиСКД);

                ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровкиСКД);

                ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

               

                //Вывод результата отчета

                ЭлементыФормы.Результат.Очистить();

                ДР = ЭлементыФормы.Результат;

                ПроцессорВывода.УстановитьДокумент(ДР);     

                ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

 

КонецПроцедуры

 

            Запускаем режим «1С:Предприятие», проверяем отчет.

Рис. Простейший отчет «Контрагенты»

            Таким образом, была программно добавлена система компоновки данных, в которую добавлен набор данных с полями, после чего добавлены выбранные поля и группировка. И окончательно выведен отчет на форму.