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

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

Как работать с СКД в 1С: от схемы компоновки до готового отчёта

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

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

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

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

Что такое СКД и когда её использовать

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

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

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

Создание схемы компоновки и набора данных

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

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

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

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

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

На закладке «Ресурсы» укажите поля, по которым отчёт считает итоги: суммы, количество, средние. Если поле не добавлено в ресурсы, в группировках оно выведется пустым — типичная причина жалоб «в итогах ничего нет». Выражение ресурса можно изменить, например Сумма(СуммаОборот) или Максимум(Цена).

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

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

Настройки отчёта: группировки, отборы и варианты

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

Отборы делятся на жёсткие (в тексте запроса, пользователь их не видит) и пользовательские (на закладке «Отбор» настроек). Правило простое: всё, что должно быть неизменным для корректности данных, — в запрос; всё, что пользователь вправе менять, — в настройки. Поле в настройках можно пометить как недоступное, чтобы скрыть его от изменения.

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

Программная работа с СКД

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

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

bsl
Схема = Отчеты.ПродажиПоМенеджерам.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = Схема.НастройкиПоУмолчанию;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(Схема, Настройки);
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(Процессор);

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

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

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

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

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

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

Итог по сумме в отчёте
Норма

Совпадает с типовым отчётом или контрольным запросом за тот же период

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

Расхождение кратно числу строк детализации — признак задвоения связей

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

Отчёт по типовому периоду формируется за секунды на рабочей базе

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

Минутное ожидание — проверяйте параметры виртуальных таблиц и индексы

Поведение отборов
Норма

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

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

Отбор установлен, но данные не меняются — поле недоступно или отбор в запросе

СКД или альтернативы: как выбрать подход

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

Сравнение вариантов

СКД

Гибкие аналитические отчёты с пользовательскими отборами и группировками; требует понимания схемы и настроек

Запрос + табличный документ

Печатные формы и фиксированные структуры; полный контроль, но любое изменение — доработка кода

Консоль отчётов / произвольный макет СКД

Нестандартное оформление поверх СКД; сложнее в сопровождении, оправдано при жёстких требованиях к виду

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

Итог

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

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

Частые вопросы о работе с СКД

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

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

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

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

Как дать пользователю отбор по периоду?

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

Отчёт формируется очень долго. С чего начать оптимизацию?

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

Чем набор данных «Объект» отличается от «Запрос»?

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

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

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