СКДБилдер: упрощаем программное создание СКД

09.02.26

Разработка - Инструментарий разработчика

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
СКДБилдер: упрощаем программное создание СКД
.bsl 60,16Kb
315 Скачать бесплатно

Введение

Схема компоновки данных (СКД) — мощный инструмент для создания отчетов в 1С, но её программное формирование требует значительных усилий. Чтобы создать простейший отчет с группировкой и парой полей, приходится писать десятки строк кода, помнить иерархию объектов и порядок инициализации.

 

Проблема

Стандартный подход к созданию СКД

 
Типичный код для программного создания СКД выглядит так:

 

Проблемы такого подхода:

  • Много шаблонного кода

  • Легко ошибиться в иерархии объектов

  • Сложно читать и поддерживать

  • Нужно каждый раз вспоминать синтаксис


Решение: СКДБилдер

СКДБилдер — это общий модуль с набором процедур-обёрток, которые инкапсулируют рутинные операции. Схема передаётся первым параметром в каждый метод.

 
Тот же код с СКДБилдером:

Результат: 6 строк вместо 30+.


Реализация

Структура общего модуля

Общий модуль СКДБилдер (Сервер, Вызов сервера) содержит следующие группы методов:

  1. Инициализация: НоваяСхема()ПолучитьНастройки()

  2. Наборы данных: УстановитьЗапрос()ДобавитьПолеНабора()

  3. Ресурсы: ДобавитьРесурс()ДобавитьРесурсы()

  4. Параметры: ДобавитьПараметр()ДобавитьПараметрыПериода()

  5. Структура: ДобавитьГруппировку()ДобавитьДетальныеЗаписи()

  6. Поля и отборы: ДобавитьПоле()ДобавитьОтбор()ДобавитьСортировку()

  7. Вывод: СформироватьТабличныйДокумент()СформироватьТаблицуЗначений()

 
Пример кода модуля (фрагмент):

 

Примеры использования

 

 
Пример 1: Простой отчёт по продажам 
 
Пример 2: Отчёт с вложенными группировками
 
Пример 3: Быстрый вывод в консоль запросов

 

Схема = СКДБилдер.НоваяСхема();
СКДБилдер.УстановитьЗапрос(Схема, "Данные", ТекстЗапроса);
СКДБилдер.ДобавитьДетальныеЗаписи(Схема);
СКДБилдер.ДобавитьАвтоПоле(Схема);

ТаблицаРезультат = СКДБилдер.СформироватьТаблицуЗначений(Схема);

 

 

Преимущества

  1. Сокращение кода — в 3-4 раза меньше строк

  2. Читаемость — структура отчёта видна сразу

  3. Простота поддержки — легко добавить поле или группировку

  4. Снижение порога входа — не нужно помнить всю иерархию объектов СКД

  5. Универсальность — один общий модуль, работает в любой конфигурации


Ограничения

  • Не покрывает 100% возможностей СКД (сложные условия, вычисляемые поля)

  • Для специфических сценариев всё равно придётся обращаться к объектной модели напрямую

  • Требует понимания базовых принципов СКД


Заключение

СКДБилдер — это не замена объектной модели СКД, а удобная обёртка для типовых задач. Он особенно полезен при:

  • Создании динамических отчётов

  • Разработке печатных форм с группировками

  • Быстром прототипировании в консоли запросов

  • Обучении джунов работе с СКД

Модуль можно легко расширить под свои нужды, добавив методы для таблиц, диаграмм или условного оформления.

Вступайте в нашу телеграмм-группу Инфостарт

общий модуль

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    63715    333    162    

298

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    251551    1392    421    

1147

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15250 руб.

25.08.2025    48152    100    27    

113

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22570 руб.

06.10.2023    36581    96    40    

116

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    24316    92    42    

101

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9500 руб.

17.05.2024    51211    180    63    

210

SALE! %

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

5000 4000 руб.

25.02.2026    2575    10    1    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. GarriSoft 446 29.01.26 10:20 Сейчас в теме
Коллега, выглядит реально круто!
Скачал, обязательно попробую.
Спасибо!
shapa_pro; +1 Ответить
2. dsdred 4216 29.01.26 10:21 Сейчас в теме
Попробую на своих примерах. Отпишусь.
shapa_pro; +1 Ответить
3. tormozit 7372 29.01.26 10:49 Сейчас в теме
Имя модуля лучше сменить на "ПостроительСхемы" или "ПостроительСКД".
o.nikolaev; obemgyorik; alexandr_yang; Dach; shapa_pro; +5 Ответить
4. shapa_pro 77 29.01.26 10:56 Сейчас в теме
(3) Можно и поменять! Но есть ПостроительОтчета и думаю будет неудобно искать по контекстной подсказке, поэтому что-то рандомно-уникальное.
5. alexandr_yang 29.01.26 11:47 Сейчас в теме
Общий модуль можно заменить на обработку и сделать флюент-интерфейс. Это позволит не передавать в каждый метод схему.

Результат = Обработки.СКДБилдер.НоваяСхема()
    .УстановитьЗапрос("Данные", ТекстЗапроса)
    .ДобавитьДетальныеЗаписи()
    .ДобавитьАвтоПоле()
    .СформироватьТаблицуЗначений();
ardn; starik-2005; bestuzheff; shapa_pro; pavlov_dv; +5 Ответить
6. shapa_pro 77 29.01.26 11:56 Сейчас в теме
(5) А ты абсолютно прав и наработки уже есть, это следующая итерация, если мне не станет лень))
пока накидываем примеры для тестов
Прикрепленные файлы:
starik-2005; bestuzheff; +2 Ответить
19. evgeniti 3 29.01.26 19:17 Сейчас в теме
(5) да, ждем такое. очень лень свое доделывать
Прикрепленные файлы:
22. tormozit 7372 30.01.26 00:16 Сейчас в теме
(5) Без текучего интерфейса обработка тоже будет работать прекрасно и даже сохранит возможность возвращать из каждой функции созданный ею дочерний объект для редких случаев особой донастройки.
Построитель = Обработки.ПостроительСхемы.Создать();
Запрос = Построитель.Добавить(Запрос);
Ресурс = Построитель.ДобавитьРесурс("Сумма");
Схема = Построитель.Схема;
mvxyz; unichkin; +2 Ответить
7. Dach 390 29.01.26 11:57 Сейчас в теме
(0) Модуль полезный, за выкладку на гитхаб - отдельный плюс. Название тоже предлагаю сменить, например "МастерКомпоновки" или "МастерСКД" или "МастерНадСКД" (в духе Игры Престолов)
shapa_pro; +1 Ответить
9. ixijixi 2141 29.01.26 12:07 Сейчас в теме
(7) Предлагаю ПовелительОтчетов!
Arte_; SergMuravev; ubnkfl; dsdred; bulpi; SerVer1C; 0x00; shapa_pro; top_1c; +9 Ответить
20. RustIG 1946 29.01.26 20:59 Сейчас в теме
8. SerVer1C 1067 29.01.26 12:01 Сейчас в теме
Отлично!
Побольше бы подобных публикаций на портале!
shapa_pro; starik-2005; +2 Ответить
10. bestuzheff 685 29.01.26 15:01 Сейчас в теме
Для форм есть "Накидка", а это надо переименовать в "Шапка"!
11. JohnyDeath 302 29.01.26 15:19 Сейчас в теме
Выглядит красиво.
Предложение: методы добавления типа "ДобавитьПолеВГруппировку", "ДобавитьРесурс" лучше все-таки делать функциями, которые возвращают то, что они добавляют. Вдруг, например, мне будет нужна другая формула в Ресурсе
shapa_pro; ubnkfl; tormozit; ixijixi; +4 Ответить
14. shapa_pro 77 29.01.26 15:57 Сейчас в теме
(11) Можно много что сделать, форкайте, переписывайте или шлите предложения на гх :) Я как основатель вайб-кодинда и вайб-врайтинга на этом сайте, возможно когда-то подгружу все ваши пожелания в ИИ и выпущу новую версию :)
16. JohnyDeath 302 29.01.26 16:24 Сейчас в теме
(14) Если речь про этот модуль на гитхабе: https://github.com/ShapaPro/DCSBuilder/blob/main/СКДБилдер.bsl
то там совсем не то, что описано в статье. Программный интерфейс точно не такой.
Где-то вы перевайбили )
shapa_pro; +1 Ответить
17. shapa_pro 77 29.01.26 16:48 Сейчас в теме
(16) Возможно пока писалась статья и согласовывалась код уже изменился, проект в альфе и меняется динамически.
18. shapa_pro 77 29.01.26 16:49 Сейчас в теме
(16) Плюс изначально разрабатывалась две ветки флюент и обычная. Флюент не доросла до альфы, поэтому пока запостил обычную, но есть вероятность, что взял имена функций из флюент.
12. starik-2005 3217 29.01.26 15:44 Сейчас в теме
Нехватает флюент-стайл.
13. shapa_pro 77 29.01.26 15:54 Сейчас в теме
(12) ну это первая альфа, посмотрим, что будет дальше
15. starik-2005 3217 29.01.26 16:02 Сейчас в теме
(13) У нас на каком-то проекте юзается типа такой штуки: https://infostart.ru/1c/tools/2303678/
21. RustIG 1946 29.01.26 21:25 Сейчас в теме
великолепно! тренд будущего десятилетия - упрощать все, что усложнили в текущем десятилетии...
shapa_pro; t278; +2 Ответить
23. Viktor_Ermakov 400 30.01.26 13:01 Сейчас в теме
оказывается в 23 году уже выкладывали что то подобное https://infostart.ru/1c/tools/1973473/ и у меня коллега говорит активно использует, все работает без ошибок.
shapa_pro; +1 Ответить
24. shapa_pro 77 30.01.26 13:06 Сейчас в теме
(23) о. еще и на флюенте, круто, а я не нашел, поэтому напряг искуственный мозг на создание))
25. korvintorson 86 20.02.26 21:12 Сейчас в теме
Тут для запросов решение подъехало: https://infostart.ru/1c/tools/2598405/
Для отправки сообщения требуется регистрация/авторизация