СКД
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/