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

Разработка и Конфигурация · 11 мин

Как добавить СКД в расширение 1С

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

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

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

Ниже разобраны оба сценария с конкретными действиями в конфигураторе, ограничениями платформы и типичными ошибками, из-за которых отчёт из расширения не формируется или падает с ошибкой.

Когда СКД размещают именно в расширении

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

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

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

Создание нового отчёта со схемой компоновки в расширении

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

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

Форму отчёта создавать вручную не обязательно: платформа сгенерирует типовую форму отчёта автоматически при открытии. Если нужен нестандартный интерфейс — например, отборы в шапке или кнопки вариантов — создайте основную форму отчёта и разместите элементы программно или в визуальном редакторе.

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

Заимствование типового отчёта и замена его СКД

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

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

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

Два способа добавить СКД в расширение

Новый отчёт в расширении

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

Заимствование типового отчёта

Подходит для доработки существующих отчётов. Сохраняется место в интерфейсе и права, но есть риск конфликтов при обновлении типовой конфигурации.

Внешний отчёт вместо расширения

Подходит для разовых задач и тестирования. Не требует изменения конфигурации вообще, но хранится отдельно и сложнее администрируется.

Настройка запроса и параметров схемы

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

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

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

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

Подключение расширения и проверка работы отчёта

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

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

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

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

Расширение в списке подключённых
Норма

Статус активен, нет пометок об ошибках

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

Расширение отключено или помечено как неприменённое

Формирование отчёта
Норма

Отчёт строится, итоги сходятся с данными базы

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

Ошибка компоновки или пустой результат при наличии данных

Права пользователей
Норма

Отчёт доступен целевым ролям

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

Отчёт виден только администратору

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

После тестового обновления конфигурации отчёт работает

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

После обновления схема конфликтует с типовой

Типичные ошибки и их устранение

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

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

Третья типичная ситуация — конфликт имён: если в расширении создан отчёт с именем, совпадающим с типовым объектом, но без заимствования, платформа откажется применять расширение. Используйте префикс в имени, например «Расш1_АнализПродаж», — это общепринятая практика именования объектов расширений.

Типичные ошибки
01
Создание отчёта с именем типового объекта без заимствования — платформа не применяет расширение из-за конфликта имён
02
Забытые ресурсы на закладке «Ресурсы» — итоги по числовым полям не считаются
03
Фильтрация в настройках вместо параметров запроса — отчёт медленно работает на больших объёмах
04
Не снят флажок безопасного режима у доверенного расширения — запросы к данным блокируются
05
Отчёт не добавлен ни в одну подсистему — пользователи не находят его в интерфейсе

Ограничения и когда расширение не подходит

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

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

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

Частые вопросы

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

Нет, схема компоновки является частью объекта «Отчёт», поэтому для её замены объект нужно заимствовать в расширение целиком. Альтернатива — программная подмена схемы в обработчике «ПриКомпоновкеРезультата» через механизм перехвата методов, но это сложнее в сопровождении.

Почему отчёт из расширения не виден пользователям в меню?

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

Можно ли в запросе СКД расширения обращаться к объектам самого расширения?

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

Что произойдёт с отчётом из расширения при обновлении типовой конфигурации?

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

Можно ли хранить несколько вариантов схемы в одном отчёте расширения?

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

Нужны ли отдельные роли для отчёта из расширения?

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

Итог

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

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