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