СКД
August 20, 2021
Полное программное создание отчета на 1C СКД
&НаСервере
Функция СформироватьНаСервере()
//1. создаем схему компоновки данных
СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
//1.1 определяем источник данных для схемы
//для наших целей - текущая ИБ
Источник = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
Источник.Имя = "ЛокальнаяБаза";
Источник.СтрокаСоединения = "";
Источник.ТипИсточникаДанных = "Local";
//1.2 определяем набор данных
НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
НаборДанных.Имя = "Продажи";
НаборДанных.ИсточникДанных = "ЛокальнаяБаза";
НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина;
НаборДанных.Запрос = (
"ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
| РеализацияТоваровУслугТовары.Сумма КАК СтоимостьОборот
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары"
);
//1.2.1 добавляем поля
ПолеНоменклатуры = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
ПолеНоменклатуры.Заголовок = "Номенклатура";
ПолеНоменклатуры.ПутьКДанным = "Номенклатура";
ПолеНоменклатуры.Поле = "Номенклатура";
ПолеСтоимости = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
ПолеСтоимости.Заголовок = "Стоимость";
ПолеСтоимости.ПутьКДанным = "СтоимостьОборот";
ПолеСтоимости.Поле = "СтоимостьОборот";
//1.3 определяем ресурсы
ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
ПолеРесурса.Выражение = "Сумма(СтоимостьОборот)";
ПолеРесурса.ПутьКДанным = "СтоимостьОборот";
//2. создаем настройки для схемы
НастройкиКомпоновкиДанных = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
//2.1 определяем структуру
//2.1.1 добавляем группировку "Номенклатура"
ГруппировкаНоменклатуры = НастройкиКомпоновкиДанных.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = ГруппировкаНоменклатуры.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Использование = Истина;
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
АвтоПоле = ГруппировкаНоменклатуры.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоПоле.Использование = Истина;
ПолеСтоимости = ГруппировкаНоменклатуры.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеСтоимости.Заголовок = "Стоимость";
ПолеСтоимости.Использование = Истина;
ПолеСтоимости.Поле = Новый ПолеКомпоновкиДанных("СтоимостьОборот");
//2.2 определим выбранные поля
ВыбранноеПоле = НастройкиКомпоновкиДанных.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = "Стоимость";
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СтоимостьОборот");
//3. готовим макет
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных);
//4. исполняем макет
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорКомпоновки.Сбросить();
//5. выводим результат
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ТабДок = Новый ТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабДок);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
возврат ТабДок;
КонецФункции
&НаКлиенте
Процедура Сформировать(Команда)
ТабДок=СформироватьНаСервере();
ТабДок.Показать();
КонецПроцедурыhttps://wiki.programstore.ru/polnoe-programmnoe-sozdanie-otcheta-na-skd/