К статье
Практический материал

Разработка и Конфигурация · 10 мин

Каким образом создаётся схема компоновки данных в 1С

Способы создания схемы компоновки данных в 1С: конструктор СКД, наборы данных, ресурсы, параметры и настройки. Практическое руководство для разработчика.

Схема компоновки данных (СКД) — это декларативное описание отчёта: источники данных, связи между ними, вычисляемые поля, ресурсы и настройки группировок. Разработчик создаёт схему один раз, а пользователь затем меняет варианты отчёта без изменения кода. Понимание того, как именно создаётся СКД, — базовый навык для построения отчётов в управляемых и обычных приложениях 1С.

Существует несколько способов получить схему: визуальный конструктор в конфигураторе, мастер при создании отчёта, программное построение через объектную модель и загрузка готовой схемы из XML-файла. На практике чаще всего используют визуальный конструктор, а программный способ применяют для динамических отчётов, где структура заранее неизвестна.

Ниже разобраны все способы создания СКД, структура её вкладок, типовые ошибки и критерии выбора подхода под конкретную задачу.

Что представляет собой схема компоновки данных

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

Внутри схема состоит из нескольких логических блоков: наборы данных (запросы, объекты, объединения), связи между наборами, вычисляемые поля, ресурсы (итоговые поля), параметры и настройки по умолчанию. Каждый блок редактируется на отдельной закладке конструктора.

Способ 1. Визуальный конструктор в конфигураторе

Основной путь — создать объект «Отчёт» в дереве конфигурации и открыть его основную схему компоновки данных. Для этого в свойствах отчёта нажимают кнопку «Открыть схему компоновки данных» либо ссылку «Основная схема компоновки данных». При первом открытии платформа предложит создать схему и запустит конструктор.

Конструктор сначала предлагает добавить набор данных. Чаще всего выбирают тип «Запрос» и пишут текст запроса на встроенном языке запросов — вручную или через конструктор запроса. После этого платформа автоматически заполняет список полей, доступных для отчёта.

Создание СКД через конструктор
  1. 1
    Создайте объект «Отчёт» в конфигураторе и откройте основную схему компоновки данных
  2. 2
    Добавьте набор данных типа «Запрос» и введите текст запроса
  3. 3
    Проверьте автоматически заполненный список полей на закладке «Компоновка данных»
  4. 4
    На закладке «Ресурсы» отметьте поля, по которым считаются итоги (суммы, количества)
  5. 5
    На закладке «Параметры» настройте период и отборы, задайте значения по умолчанию
  6. 6
    На закладке «Настройки» сформируйте структуру варианта отчёта: группировки и выбранные поля
  7. 7
    Сохраните схему и запустите отчёт в режиме предприятия для проверки

После заполнения запроса обязательно перейдите на закладку «Ресурсы» и нажмите кнопку автозаполнения — платформа сама подберёт числовые поля, которые можно суммировать. Без ресурсов отчёт с группировками не покажет итоги, и это одна из самых частых причин «неправильно работающего» отчёта у начинающих.

Способ 2. Мастер при создании отчёта

При добавлении нового отчёта в конфигурацию палитра свойств и диалог создания позволяют сразу сгенерировать основную схему. Это тот же конструктор, но запущенный в момент создания объекта: платформа сразу открывает окно СКД и предлагает добавить набор данных.

В типовых конфигурациях также встречается подход, когда отчёт создаётся копированием существующего: схема копируется вместе с объектом, и разработчику остаётся изменить запрос и настройки. Это быстрее, чем строить схему с нуля, особенно если нужен похожий вариант группировок.

Способ 3. Программное создание схемы

Схему можно построить кодом, используя объектную модель СКД. Такой подход нужен, когда структура отчёта динамическая: например, набор колонок зависит от настроек пользователя или от данных в базе. Схема создаётся через конструктор Новый СхемаКомпоновкиДанных, затем в неё добавляются источники данных, наборы и поля.

bsl
Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "ИсточникДанных1";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "НаборДанных1";
Набор.ИсточникДанных = Источник.Имя;
Набор.Запрос = "ВЫБРАТЬ Номенклатура.Ссылка КАК Товар ИЗ Справочник.Номенклатура КАК Номенклатура";

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

Способ 4. Загрузка схемы из XML-файла

Любую схему можно выгрузить в XML: в конструкторе СКД есть кнопки сохранения и загрузки схемы в файл. Это используют для переноса схем между конфигурациями, хранения шаблонов отчётов и подключения внешних схем через метод ПолучитьСхемуКомпоновкиДанных или чтение файла сериализатором XDTO.

Типовой сценарий — внешние отчёты: схема разрабатывается в конфигураторе, выгружается в файл, а внешний отчёт загружает её при открытии. Также XML-выгрузка удобна для сравнения версий схемы в системе контроля версий, потому что визуальный конструктор не показывает различий между двумя состояниями.

Наборы данных: запрос, объект, объединение

Выбор типа набора данных определяет, откуда отчёт получит записи. Тип «Запрос» подходит для большинства задач: данные выбираются из базы средствами языка запросов, включая виртуальные таблицы регистров. Тип «Объект» принимает готовую таблицу значений или результат произвольного алгоритма — его передают в процессор компоновки из кода. Тип «Объединение» склеивает несколько наборов по общим полям.

Типы наборов данных

Запрос

Данные из информационной базы через язык запросов. Оптимален по скорости, поддерживает виртуальные таблицы и параметры. Ограничение — только то, что умеет язык запросов

Объект

Таблица значений, сформированная кодом: данные из веб-сервисов, файлов, сложных расчётов. Гибко, но данные загружаются в память целиком

Объединение

Склейка нескольких наборов в один по совпадающим полям. Используется, когда часть данных из запроса, а часть — из объекта

Если в отчёте несколько наборов, на закладке «Связи наборов данных» задают соединения: источник, приёмник, поля связи. Неправильно заданная связь приводит к декартову произведению строк — данные в отчёте задваиваются или заумножаются, поэтому после настройки связей результат обязательно сверяют с контрольными цифрами из базы.

Ресурсы, параметры и вычисляемые поля

Ресурсы — это поля, по которым система считает агрегаты: сумму, количество, среднее, максимум. Для каждого ресурса указывают выражение (например, Сумма(СуммаОборот)) и группировки, по которым ресурс рассчитывается. Если ресурс нужен не по всем группировкам, список «Рассчитывать по» заполняют вручную.

Параметры добавляются на одноимённой закладке. Периодические отчёты обычно строят на параметрах «НачалоПериода» и «КонецПериода», которые передаются в виртуальные таблицы запроса. Для параметра задают тип, значение по умолчанию и доступность пользователю. Вычисляемые поля позволяют добавить колонки, которых нет в запросе: например, процент от итога или конкатенацию строк.

Типичные ошибки при создании СКД
01
Не заполнены ресурсы — группировки выводятся без итогов, отчёт выглядит пустым
02
Параметры периода не переданы в виртуальную таблицу — запрос возвращает данные за всё время или пустой результат
03
Связь наборов задана не по всем ключевым полям — строки дублируются
04
Поле в настройках переименовано, а в выражении ресурса осталось старое имя — ошибка компоновки при формировании
05
Автоотбор в запросе отключён, а отбор пользователя не учитывается — отчёт игнорирует фильтры

Настройки и проверка результата

На закладке «Настройки» создают вариант отчёта по умолчанию: добавляют группировки строк и колонок, выбирают поля, задают отборы и сортировку. Если настройки не задать, пользователь увидит пустой шаблон и будет вынужден строить структуру самостоятельно.

Проверка выполняется в режиме предприятия: отчёт формируют на тестовых данных и сверяют итоги с независимым источником — оборотно-сальдовой ведомостью, запросом в консоли или данными регистра. Совпадение контрольных сумм — главный признак корректно собранной схемы.

Контрольные точки

Как проверить готовую схему

Итоги по группировкам
Норма

Суммы совпадают с контрольным запросом или отчётом из базы

Тревожный признак

Итоги пустые, завышены или кратно увеличены

Отборы и параметры
Норма

Изменение параметра меняет результат отчёта

Тревожный признак

Отчёт выдаёт одни и те же данные при любых параметрах

Связи наборов
Норма

Количество строк соответствует ожидаемому объёму данных

Тревожный признак

Строки дублируются — признак декартова произведения

Итог

Что важно запомнить

Основной способ создания СКД — визуальный конструктор: набор данных с запросом, ресурсы, параметры и настройки. Программное построение и XML-загрузка применяют для динамических и переносимых отчётов. Корректность схемы всегда проверяют сверкой итогов с независимым источником.

Частые вопросы

Можно ли создать СКД без написания запроса?

Частично. Конструктор запроса формирует текст автоматически: достаточно перетащить таблицы и поля мышью. Полностью без источника данных обойтись нельзя — схеме нужен хотя бы один набор, но его содержимое можно собрать визуально.

Чем СКД отличается от обычного запроса с выводом в табличный документ?

Запрос только возвращает данные, а СКД дополнительно описывает группировки, ресурсы, отборы и варианты оформления. Пользователь может менять структуру отчёта на СКД без участия разработчика, что невозможно при ручном выводе.

Можно ли использовать одну схему для нескольких отчётов?

Да. Схему сохраняют в общий макет типа «Схема компоновки данных» и получают из любого объекта через ПолучитьМакет. Это удобно для семейства однотипных отчётов с разными настройками по умолчанию.

Почему отчёт на СКД работает медленно?

Частые причины: соединения с виртуальными таблицами без отборов, запрос без параметров периода, левые соединения больших таблиц и обращения к данным через точку (разыменование). Оптимизацию начинают с текста запроса набора данных, а не с настроек компоновки.

Как открыть конструктор СКД, если кнопка недоступна?

Сначала убедитесь, что у объекта «Отчёт» не задана пустая основная схема — в палитре свойств нажмите «Открыть схему компоновки данных». Если отчёт внешний, схема создаётся на закладке «Основные» формы редактирования объекта в конфигураторе.

Можно ли редактировать схему в режиме предприятия?

Штатно — нет, схема редактируется только в конфигураторе. В режиме предприятия пользователю доступны настройки варианта отчёта (отборы, группировки, поля), но не структура наборов данных и ресурсов. В некоторых типовых конфигурациях есть расширенные инструменты настройки, однако они изменяют настройки, а не саму схему.