Как в 1С сформировать отчет на СКД программно

preview_player
Показать описание

В данном видео рассмотрены основы формирования отчетов на СКД средствами языка 1С.
Таймкоды:
00:22 – Подготовка отчета
01:56 – Пример программного формирования отчета на СКД
07:24 – Программная установка параметров и отборов в отчетах на СКД
12:28 – Как программно изменить структуру группировок отчета?
17:57 – Использование обработчика ПриКомпоновкеРезультата
21:14 – Вывод отчета на СКД в таблицу значений

Курс «Разработчик 1С с нуля»

Индивидуальное обучение 1С

Рекомендации по теме
Комментарии
Автор

Листинг модуля формы:
&НаСервере
Процедура

ОбъектОтчетНаСервере =
// Здесь стоит обратить внимание, что мы можем работать с любым макетом,
// не обязательно с основной схемой компоновки данных
СхемаСКД =
= Новый


// Использование текущих настроек компоновщика вместо настроек по умолчанию из схемы


// Параметры в СКД можно найти по имени параметра.
ПараметрыДанных =
ЭлементНачалоПериода =
= Истина;
= ДАТА(2017, 01, 01, 00, 00, 00);

// В отличие от параметров, отбор необходимо обходить циклом и проверять каждую строку.
// Кроме того, сравниваем не строки, а поля компоновки, используя ПолеКомпоновкиДанных
ОтборКомпоновщика =
Для Каждого ЭлементОтбора Из ОтборКомпоновщика.Элементы Цикл
Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товар") Тогда

КонецЕсли;
КонецЦикла;

НоменклатураОтбор =
=
= Истина;
= Новый
=

// Добавим программно группировку по складу
Структура =
ГруппировкаПоСкладу =
ГруппировкаПоСкладу.Имя = "Мяу";
= Истина;

//группировка по полю "Склад". Если нужны детальные записи, то просто не заполняем ПоляГруппировки
ПолеГруппировкиСклад =
= Истина;
ПолеГруппировкиСклад.Поле = Новый
=

//добавить выводимые поля в группировке: склад и количество приход.
ВыбранноеПоле =
ВыбранноеПоле.Поле = Новый
ВыбранноеПоле =
ВыбранноеПоле.Поле = Новый

// В том случае, если нам нужно учитывать настройки, выполненные пользователем, их необходимо загрузить

КомпоновщикМакета = Новый
Макет = КомпоновщикМакета.Выполнить(СхемаСКД,

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


// Выведем полученные данные в табличный документ
ТабДок.Очистить();
ПроцессорВывода = Новый



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

&НаКлиенте
Процедура


= Ложь;
=

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

alexcode_c
Автор

Добрый день! Совсем недавно нашел Ваш канал, отличная подача материала. Спасибо за Ваш труд.

По этом ролику возник вопрос по следующей строке кода:

Для Каждого ЭлементОтбора Из ОтборКомпоновщика.Элементы Цикл
Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товар") Тогда

мне кажется не оптимально каждый раз в цикле выполнять создание нового: Новый ПолеКомпоновкиДанных("Товар") - это же затратная операция по ресурсам и времени. Или иначе здесь не сработает ?

АндрейАндрей-ттх
Автор

Привет, помести, пожалуйста, в закрепленный комментарий тексты модулей.

dsoldatkin
Автор

Добрый вечер. Время 3.42 инициализируем - это, по моему, и есть загрузка настроек.
Зачем еще метод "Загрузить". В чем разница между "Инициализация" и "Загрузить"?

ПавелЮркунас
Автор

Я кучу раз формировал отчет на скд программно, но никак не запомню как это делать, один раз написал сохранил и просто переиспользую)))

vladyan
Автор

А где было показано как вызывать этот отчет из другого места с передаваемыми параметрами и получить результат ?

vadimsergeev
Автор

А зачем удалять элемент отбора, если нашли нужный настраивате и установите Использование в Истина

Чешимрукиотскуки
Автор

Зачем вообще его программно формировать? Какая цель? Усложнить себе задачу и другим?

vadimsergeev