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