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

Отчеты и Аналитика · 11 мин

Как сделать схему компоновки данных в 1С

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

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

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

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

Что такое схема компоновки данных и когда она нужна

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

Схема хранится в макете отчёта с типом «Схема компоновки данных». У внешнего отчёта (файл .erf) она создаётся автоматически при создании файла. У объекта конфигурации «Отчёт» макет добавляется вручную через кнопку «Макеты» в окне редактирования объекта.

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

Создание отчёта и схемы в конфигураторе

Откройте конфигуратор и в дереве конфигурации найдите ветку «Отчёты». Через контекстное меню выберите «Добавить», задайте имя отчёта, например «ПродажиПоМенеджерам». На закладке «Основные» нажмите кнопку «Открыть схему компоновки данных» или «Макеты» → «Создать макет» → выберите тип «Схема компоновки данных». Платформа предложит создать схему и откроет конструктор.

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

Для внешнего отчёта последовательность проще: в конфигураторе выберите «Файл» → «Новый» → «Внешний отчёт», задайте имя и нажмите кнопку открытия основной схемы компоновки данных — она создастся автоматически.

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

Набор данных и запрос

На закладке «Наборы данных» нажмите «Добавить» → «Добавить набор данных — запрос». В поле «Запрос» откроется конструктор запроса. Выберите нужные таблицы — для отчёта по продажам это, например, виртуальная таблица «Продажи.Обороты». Перенесите поля: Номенклатура, Менеджер, КоличествоОборот, СуммаОборот.

Если данные нужны за период, добавьте параметры виртуальной таблицы: НачалоПериода и КонецПериода. В конструкторе это делается кнопкой «Параметры виртуальной таблицы». Важно: параметры виртуальной таблицы эффективнее отбора в предложении ГДЕ, потому что отбор применяется на уровне СУБД до выборки данных.

После закрытия конструктора СКД автоматически заполнит список полей набора данных. Проверьте типы полей и при необходимости скорректируйте роли: для полей периода можно указать роль «Период», для измерений — «Измерение». Это влияет на поведение полей в настройках отчёта.

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

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

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

На закладке «Параметры» проверьте автоматически созданные параметры периода. Для удобства пользователей замените пару «НачалоПериода/КонецПериода» на стандартный период: добавьте параметр типа «СтандартныйПериод» и в выражениях параметров виртуальной таблицы используйте &Период.ДатаНачала и &Период.ДатаОкончания. Также снимите для служебных параметров флаг «Ограничение доступности», если они должны быть видны пользователю, или наоборот — скройте технические.

Вычисляемые поля нужны, когда показатель не хранится в базе, а рассчитывается, например средняя цена: СуммаОборот / КоличествоОборот. Добавьте такое поле на закладке «Вычисляемые поля», задайте выражение и тип. Чтобы вычисляемое поле участвовало в итогах, добавьте его в ресурсы с выражением вида Сумма(СуммаОборот) / Сумма(КоличествоОборот) — иначе итог посчитается как сумма строк, что для средних и процентов неверно.

Настройка структуры отчёта

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

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

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

Проверка результата и типичные ошибки

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

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

Типичные ошибки
01
Использование ИТОГИ в запросе — конфликтует с механизмом итогов СКД и замедляет отчёт
02
Отбор в предложении ГДЕ вместо параметров виртуальной таблицы — резкое падение производительности на больших базах
03
Выражение ресурса Сумма() для средних и процентов — итоги по группировкам считаются неверно
04
Связь наборов данных по неуникальному полю — задвоение или заумножение строк
05
Не заданы пользовательские представления полей — пользователи видят технические имена вроде СуммаОборот
Контрольные точки

Как проверить результат

Итоги отчёта
Норма

Совпадают с данными типового отчёта или оборотами регистра

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

Расхождения, задвоенные суммы

Скорость формирования
Норма

Отчёт за месяц формируется за секунды

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

Формирование занимает минуты, растёт нагрузка на сервер

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

Отбор по организации и периоду меняет результат корректно

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

Отбор не влияет на данные или обнуляет отчёт

Альтернативы и границы применения СКД

Не всякая задача решается схемой компоновки. Печатные формы документов со строгой структурой (счета, акты, ТОРГ-12) обычно делаются через табличный макет и программный вывод. Оперативные списки с простым отбором часто удобнее показать динамическим списком. А сложную аналитику с произвольной обработкой иногда проще собрать программно, передав в СКД готовую таблицу значений через набор данных «Объект».

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

Сравнение подходов

Схема компоновки данных

Аналитические отчёты с группировками, отборами, вариантами. Ограничение: сложно делать строго фиксированные печатные формы

Табличный макет и программный вывод

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

Динамический список

Рабочие списки с отбором в реальном времени. Ограничение: нет итогов по произвольным группировкам

СКД с набором «Объект»

Данные предварительно обрабатываются кодом и передаются в компоновку. Подходит для расчётов, которые не выразить запросом

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

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

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

Чем схема компоновки отличается от обычного запроса?

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

Почему отчёт формируется очень долго?

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

Как дать пользователю несколько вариантов одного отчёта?

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

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

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

Как отладить запрос схемы отдельно от отчёта?

Скопируйте текст запроса из набора данных в консоль запросов (типовая или внешняя обработка), подставьте значения параметров и выполните. Так проще найти ошибку в логике выборки, чем анализировать готовый отчёт. После исправления перенесите запрос обратно в схему.

Итог

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

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