Разработка и Конфигурация · 10 мин
Каким образом создаётся схема компоновки данных в 1С
Способы создания схемы компоновки данных в 1С: конструктор СКД, наборы данных, ресурсы, параметры и настройки. Практическое руководство для разработчика.
Схема компоновки данных (СКД) — это декларативное описание отчёта: источники данных, связи между ними, вычисляемые поля, ресурсы и настройки группировок. Разработчик создаёт схему один раз, а пользователь затем меняет варианты отчёта без изменения кода. Понимание того, как именно создаётся СКД, — базовый навык для построения отчётов в управляемых и обычных приложениях 1С.
Существует несколько способов получить схему: визуальный конструктор в конфигураторе, мастер при создании отчёта, программное построение через объектную модель и загрузка готовой схемы из XML-файла. На практике чаще всего используют визуальный конструктор, а программный способ применяют для динамических отчётов, где структура заранее неизвестна.
Ниже разобраны все способы создания СКД, структура её вкладок, типовые ошибки и критерии выбора подхода под конкретную задачу.
Что представляет собой схема компоновки данных
СКД — это макет специального типа, который хранится в объекте конфигурации (отчёте, внешнем отчёте или общем макете) и описывает, откуда брать данные и как их агрегировать. Сама схема не формирует табличный документ: она лишь основа, на базе которой компоновщик настроек строит конкретный вариант отчёта.
Внутри схема состоит из нескольких логических блоков: наборы данных (запросы, объекты, объединения), связи между наборами, вычисляемые поля, ресурсы (итоговые поля), параметры и настройки по умолчанию. Каждый блок редактируется на отдельной закладке конструктора.
Способ 1. Визуальный конструктор в конфигураторе
Основной путь — создать объект «Отчёт» в дереве конфигурации и открыть его основную схему компоновки данных. Для этого в свойствах отчёта нажимают кнопку «Открыть схему компоновки данных» либо ссылку «Основная схема компоновки данных». При первом открытии платформа предложит создать схему и запустит конструктор.
Конструктор сначала предлагает добавить набор данных. Чаще всего выбирают тип «Запрос» и пишут текст запроса на встроенном языке запросов — вручную или через конструктор запроса. После этого платформа автоматически заполняет список полей, доступных для отчёта.
- 1Создайте объект «Отчёт» в конфигураторе и откройте основную схему компоновки данных
- 2Добавьте набор данных типа «Запрос» и введите текст запроса
- 3Проверьте автоматически заполненный список полей на закладке «Компоновка данных»
- 4На закладке «Ресурсы» отметьте поля, по которым считаются итоги (суммы, количества)
- 5На закладке «Параметры» настройте период и отборы, задайте значения по умолчанию
- 6На закладке «Настройки» сформируйте структуру варианта отчёта: группировки и выбранные поля
- 7Сохраните схему и запустите отчёт в режиме предприятия для проверки
После заполнения запроса обязательно перейдите на закладку «Ресурсы» и нажмите кнопку автозаполнения — платформа сама подберёт числовые поля, которые можно суммировать. Без ресурсов отчёт с группировками не покажет итоги, и это одна из самых частых причин «неправильно работающего» отчёта у начинающих.
Способ 2. Мастер при создании отчёта
При добавлении нового отчёта в конфигурацию палитра свойств и диалог создания позволяют сразу сгенерировать основную схему. Это тот же конструктор, но запущенный в момент создания объекта: платформа сразу открывает окно СКД и предлагает добавить набор данных.
В типовых конфигурациях также встречается подход, когда отчёт создаётся копированием существующего: схема копируется вместе с объектом, и разработчику остаётся изменить запрос и настройки. Это быстрее, чем строить схему с нуля, особенно если нужен похожий вариант группировок.
Способ 3. Программное создание схемы
Схему можно построить кодом, используя объектную модель СКД. Такой подход нужен, когда структура отчёта динамическая: например, набор колонок зависит от настроек пользователя или от данных в базе. Схема создаётся через конструктор Новый СхемаКомпоновкиДанных, затем в неё добавляются источники данных, наборы и поля.
Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "ИсточникДанных1";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "НаборДанных1";
Набор.ИсточникДанных = Источник.Имя;
Набор.Запрос = "ВЫБРАТЬ Номенклатура.Ссылка КАК Товар ИЗ Справочник.Номенклатура КАК Номенклатура";После построения схемы её передают компоновщику макета, который формирует макет компоновки, а затем процессор компоновки выводит результат. Программный способ требует аккуратности: имена полей в настройках должны точно совпадать с именами полей набора данных, иначе отчёт завершится ошибкой.
Способ 4. Загрузка схемы из XML-файла
Любую схему можно выгрузить в XML: в конструкторе СКД есть кнопки сохранения и загрузки схемы в файл. Это используют для переноса схем между конфигурациями, хранения шаблонов отчётов и подключения внешних схем через метод ПолучитьСхемуКомпоновкиДанных или чтение файла сериализатором XDTO.
Типовой сценарий — внешние отчёты: схема разрабатывается в конфигураторе, выгружается в файл, а внешний отчёт загружает её при открытии. Также XML-выгрузка удобна для сравнения версий схемы в системе контроля версий, потому что визуальный конструктор не показывает различий между двумя состояниями.
Наборы данных: запрос, объект, объединение
Выбор типа набора данных определяет, откуда отчёт получит записи. Тип «Запрос» подходит для большинства задач: данные выбираются из базы средствами языка запросов, включая виртуальные таблицы регистров. Тип «Объект» принимает готовую таблицу значений или результат произвольного алгоритма — его передают в процессор компоновки из кода. Тип «Объединение» склеивает несколько наборов по общим полям.
Типы наборов данных
Данные из информационной базы через язык запросов. Оптимален по скорости, поддерживает виртуальные таблицы и параметры. Ограничение — только то, что умеет язык запросов
Таблица значений, сформированная кодом: данные из веб-сервисов, файлов, сложных расчётов. Гибко, но данные загружаются в память целиком
Склейка нескольких наборов в один по совпадающим полям. Используется, когда часть данных из запроса, а часть — из объекта
Если в отчёте несколько наборов, на закладке «Связи наборов данных» задают соединения: источник, приёмник, поля связи. Неправильно заданная связь приводит к декартову произведению строк — данные в отчёте задваиваются или заумножаются, поэтому после настройки связей результат обязательно сверяют с контрольными цифрами из базы.
Ресурсы, параметры и вычисляемые поля
Ресурсы — это поля, по которым система считает агрегаты: сумму, количество, среднее, максимум. Для каждого ресурса указывают выражение (например, Сумма(СуммаОборот)) и группировки, по которым ресурс рассчитывается. Если ресурс нужен не по всем группировкам, список «Рассчитывать по» заполняют вручную.
Параметры добавляются на одноимённой закладке. Периодические отчёты обычно строят на параметрах «НачалоПериода» и «КонецПериода», которые передаются в виртуальные таблицы запроса. Для параметра задают тип, значение по умолчанию и доступность пользователю. Вычисляемые поля позволяют добавить колонки, которых нет в запросе: например, процент от итога или конкатенацию строк.
Настройки и проверка результата
На закладке «Настройки» создают вариант отчёта по умолчанию: добавляют группировки строк и колонок, выбирают поля, задают отборы и сортировку. Если настройки не задать, пользователь увидит пустой шаблон и будет вынужден строить структуру самостоятельно.
Проверка выполняется в режиме предприятия: отчёт формируют на тестовых данных и сверяют итоги с независимым источником — оборотно-сальдовой ведомостью, запросом в консоли или данными регистра. Совпадение контрольных сумм — главный признак корректно собранной схемы.
Как проверить готовую схему
Суммы совпадают с контрольным запросом или отчётом из базы
Итоги пустые, завышены или кратно увеличены
Изменение параметра меняет результат отчёта
Отчёт выдаёт одни и те же данные при любых параметрах
Количество строк соответствует ожидаемому объёму данных
Строки дублируются — признак декартова произведения
Что важно запомнить
Основной способ создания СКД — визуальный конструктор: набор данных с запросом, ресурсы, параметры и настройки. Программное построение и XML-загрузка применяют для динамических и переносимых отчётов. Корректность схемы всегда проверяют сверкой итогов с независимым источником.
Частые вопросы
Можно ли создать СКД без написания запроса?
Частично. Конструктор запроса формирует текст автоматически: достаточно перетащить таблицы и поля мышью. Полностью без источника данных обойтись нельзя — схеме нужен хотя бы один набор, но его содержимое можно собрать визуально.
Чем СКД отличается от обычного запроса с выводом в табличный документ?
Запрос только возвращает данные, а СКД дополнительно описывает группировки, ресурсы, отборы и варианты оформления. Пользователь может менять структуру отчёта на СКД без участия разработчика, что невозможно при ручном выводе.
Можно ли использовать одну схему для нескольких отчётов?
Да. Схему сохраняют в общий макет типа «Схема компоновки данных» и получают из любого объекта через ПолучитьМакет. Это удобно для семейства однотипных отчётов с разными настройками по умолчанию.
Почему отчёт на СКД работает медленно?
Частые причины: соединения с виртуальными таблицами без отборов, запрос без параметров периода, левые соединения больших таблиц и обращения к данным через точку (разыменование). Оптимизацию начинают с текста запроса набора данных, а не с настроек компоновки.
Как открыть конструктор СКД, если кнопка недоступна?
Сначала убедитесь, что у объекта «Отчёт» не задана пустая основная схема — в палитре свойств нажмите «Открыть схему компоновки данных». Если отчёт внешний, схема создаётся на закладке «Основные» формы редактирования объекта в конфигураторе.
Можно ли редактировать схему в режиме предприятия?
Штатно — нет, схема редактируется только в конфигураторе. В режиме предприятия пользователю доступны настройки варианта отчёта (отборы, группировки, поля), но не структура наборов данных и ресурсов. В некоторых типовых конфигурациях есть расширенные инструменты настройки, однако они изменяют настройки, а не саму схему.