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