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