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

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

СКД в 1С: для чего нужна система компоновки данных и как ей пользоваться

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

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

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

Материал ниже объясняет, из чего состоит СКД, для каких задач она подходит, как создать простой отчёт и каких ошибок стоит избегать при работе со схемой и настройками.

Что такое СКД и из чего она состоит

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

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

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

Для чего используют СКД на практике

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

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

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

Аналитический отчёт с отборамиПодходит идеально

Пользователь сам меняет период, отборы и группировки

Печатная форма ТОРГ-12Не подходит

Жёсткая разметка — используйте макет табличного документа

Динамический список в формеПодходит

Произвольный запрос и отборы работают из коробки

Выгрузка в стороннюю системуС оговорками

Возможно через набор данных-объект, но обычно проще запросом

Структура схемы: наборы данных, ресурсы и параметры

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

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

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

Как создать простой отчёт на СКД: порядок действий

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

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

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

Вычисляемые поля и выражения

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

Несколько наборов и связи

Когда данные лежат в разных источниках, добавляют несколько наборов и связывают их на закладке «Связи наборов данных» — аналог левого соединения. Связи заметно влияют на производительность: при больших объёмах часто выгоднее соединить таблицы прямо в одном запросе.

Настройки отчёта: что может менять пользователь

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

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

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

Маршрут решения

Как выбрать подход к отчёту

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

Производительность и ограничения

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

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

Типичные ошибки при работе со СКД

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

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

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

Как проверить готовый отчёт

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

Суммы по группам сходятся с общим итогом и контрольным отчётом

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

Итоги пустые или не равны сумме детальных строк

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

Отчёт по типовому периоду формируется за приемлемое время

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

Формирование занимает минуты даже за один день

Отборы пользователя
Норма

Изменение отбора корректно меняет результат без ошибок

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

При отборе появляются дубли строк или ошибка компоновки

Расшифровка
Норма

Клик по цифре открывает осмысленный детальный отчёт

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

Расшифровка пустая или показывает чужие данные

FAQ: частые вопросы о СКД

Нужно ли знать программирование, чтобы пользоваться СКД?

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

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

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

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

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

Почему в группировке не считаются итоги?

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

Как ускорить медленный отчёт на СКД?

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

Подходит ли СКД для печатных форм документов?

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

Итог

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

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