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