Почти все отчёты в типовых конфигурациях сделаны на СКД. Она даёт пользователю самому настраивать группировки, отборы и оформление, а разработчику не писать вывод вручную.
Из чего состоит
Схема компоновки данных:
- наборы данных: запрос, объект (данные из кода), объединение (как ОБЪЕДИНИТЬ ВСЕ);
- связи наборов: работают как левое соединение от источника к приёмнику;
- вычисляемые поля: выражения над полями без изменения запроса;
- ресурсы: поля, по которым считаются итоги в группировках;
- параметры: период, организация и др.;
- макеты, вложенные схемы.
Настройки: структура группировок, выбранные поля, отборы, сортировка, условное оформление. Сохраняются вариантами: из одной схемы получаются разные отчёты. Часть настроек выводят в шапку как пользовательские (быстрые).
Запрос набора данных
Пишется на языке запросов с дополнениями. Фигурные скобки описывают необязательные части: ГДЕ {Т.Склад} попадёт в запрос, только если пользователь задал отбор. С автозаполнением СКД сама определяет поля для отбора. Цель: чтобы отборы пользователя попадали внутрь запроса и в параметры виртуальных таблиц, а не накладывались на готовый результат.
Ресурсы и итоги
Ресурс задаётся выражением: СУММА(Сумма), МАКСИМУМ(Дата). Проценты не суммируют: наценку в итогах считают из сумм:
(СУММА(Продажа) - СУММА(Себестоимость)) / СУММА(Себестоимость) * 100
Программный вывод
Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = Схема.НастройкиПоУмолчанию;
Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = Компоновщик.Выполнить(Схема, Настройки);
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(Макет);
Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Вывод.УстановитьДокумент(ТабДок);
Вывод.Вывести(Процессор);
Для набора «Объект» данные передают вторым параметром Инициализировать: Новый Структура("Данные", Таблица). Для расшифровки передают ДанныеРасшифровкиКомпоновкиДанных в Выполнить и Инициализировать. Чтобы получить результат как таблицу значений, используют ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.
Расшифровка
Данные расшифровки связывают ячейки результата со значениями полей. По клику открывается объект или новый отчёт с отбором по ячейке. Своё поведение задают в обработчике ОбработкаРасшифровки формы отчёта.
Производительность отчётов
- Смотреть итоговый запрос, который построила СКД (технологический журнал).
- Отборы в параметрах виртуальных таблиц.
- Без лишних полей и точек от составных полей.
- Связи наборов проверять на размножение строк.
- Для тяжёлой аналитики агрегаты или отдельные регистры.
В конфигурациях на БСП отчёты подключаются к подсистеме «Варианты отчётов»: хранение вариантов, размещение в разделах, рассылка.
Что спросят на собесе
- Из чего состоит СКД?
- Что такое ресурс и как правильно посчитать итог по проценту?
- Как вывести отчёт программно?
- Как передать в отчёт таблицу значений?
- Почему отчёт на СКД тормозит и как ускорить?