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