Введение
Схема компоновки данных (СКД) — мощный инструмент для создания отчетов в 1С, но её программное формирование требует значительных усилий. Чтобы создать простейший отчет с группировкой и парой полей, приходится писать десятки строк кода, помнить иерархию объектов и порядок инициализации.
Проблема
Стандартный подход к созданию СКД
Проблемы такого подхода:
-
Много шаблонного кода
-
Легко ошибиться в иерархии объектов
-
Сложно читать и поддерживать
-
Нужно каждый раз вспоминать синтаксис
Решение: СКДБилдер
СКДБилдер — это общий модуль с набором процедур-обёрток, которые инкапсулируют рутинные операции. Схема передаётся первым параметром в каждый метод.
Результат: 6 строк вместо 30+.
Реализация
Структура общего модуля
Общий модуль СКДБилдер (Сервер, Вызов сервера) содержит следующие группы методов:
-
Инициализация:
НоваяСхема(),ПолучитьНастройки() -
Наборы данных:
УстановитьЗапрос(),ДобавитьПолеНабора() -
Ресурсы:
ДобавитьРесурс(),ДобавитьРесурсы() -
Параметры:
ДобавитьПараметр(),ДобавитьПараметрыПериода() -
Структура:
ДобавитьГруппировку(),ДобавитьДетальныеЗаписи() -
Поля и отборы:
ДобавитьПоле(),ДобавитьОтбор(),ДобавитьСортировку() -
Вывод:
СформироватьТабличныйДокумент(),СформироватьТаблицуЗначений()
Примеры использования
Схема = СКДБилдер.НоваяСхема();
СКДБилдер.УстановитьЗапрос(Схема, "Данные", ТекстЗапроса);
СКДБилдер.ДобавитьДетальныеЗаписи(Схема);
СКДБилдер.ДобавитьАвтоПоле(Схема);
ТаблицаРезультат = СКДБилдер.СформироватьТаблицуЗначений(Схема);
Преимущества
-
Сокращение кода — в 3-4 раза меньше строк
-
Читаемость — структура отчёта видна сразу
-
Простота поддержки — легко добавить поле или группировку
-
Снижение порога входа — не нужно помнить всю иерархию объектов СКД
-
Универсальность — один общий модуль, работает в любой конфигурации
Ограничения
-
Не покрывает 100% возможностей СКД (сложные условия, вычисляемые поля)
-
Для специфических сценариев всё равно придётся обращаться к объектной модели напрямую
-
Требует понимания базовых принципов СКД
Заключение
СКДБилдер — это не замена объектной модели СКД, а удобная обёртка для типовых задач. Он особенно полезен при:
-
Создании динамических отчётов
-
Разработке печатных форм с группировками
-
Быстром прототипировании в консоли запросов
-
Обучении джунов работе с СКД
Модуль можно легко расширить под свои нужды, добавив методы для таблиц, диаграмм или условного оформления.
Вступайте в нашу телеграмм-группу Инфостарт
