Разработка и Конфигурация · 9 мин
Как писать внешние отчеты для 1С
Практическое руководство по созданию внешних отчетов для 1С: работа с СКД, подключение через механизм дополнительных отчетов, типовые ошибки и проверка результата.
Внешний отчет в 1С — это файл с расширением .erf, который работает без изменения конфигурации. Его можно разработать, протестировать и передать заказчику отдельным файлом, а пользователь подключит его через стандартный механизм «Дополнительные отчеты и обработки». Это основной способ добавить новую аналитику в типовую конфигурацию, находящуюся на поддержке, не снимая её с обновлений.
Технически внешний отчет почти не отличается от отчета, встроенного в конфигурацию: у него есть модуль объекта, формы, макеты и схема компоновки данных (СКД). Разница в том, что он хранится вне информационной базы и загружается в неё в момент подключения. Поэтому ключевой навык — умение работать с СКД и правильно описывать параметры подключения.
Ниже разобран полный цикл: от создания пустого файла в конфигураторе до регистрации отчета в базе пользователя, с типовыми ошибками и способами проверки результата.
Создание файла внешнего отчета в конфигураторе
Откройте конфигуратор той же версии платформы, что установлена у пользователя, и выполните «Файл → Новый → Внешний отчет». Задайте имя латиницей без пробелов — оно станет именем объекта и будет использоваться при программном обращении. Синоним заполните понятным названием на русском: именно его увидит пользователь в списке отчетов.
Файл сохраняется командой «Файл → Сохранить» с расширением .erf. Храните рабочие копии в системе контроля версий или хотя бы в отдельной папке с датами: внешние отчеты не попадают в историю хранилища конфигурации, и откатить неудачное изменение будет нечем.
Важно понимать ограничение: внешний отчет компилируется в контексте конкретной конфигурации. Отчет, написанный для «Бухгалтерии предприятия», не откроется в «Управлении торговлей», если использует отсутствующие там объекты метаданных. Перед разработкой откройте конфигуратор именно той базы, где отчет будет работать, или хотя бы её копии с идентичной структурой метаданных.
Построение запроса и схемы компоновки данных
Основной инструмент внешнего отчета — схема компоновки данных. В дереве объекта нажмите «Открыть схему компоновки данных» и создайте набор данных типа «Запрос». Текст запроса удобнее собирать конструктором: он проверит имена полей и таблиц по метаданным базы и сразу покажет синтаксические ошибки.
При написании запроса придерживайтесь нескольких правил. Используйте виртуальные таблицы с параметрами (например, ОстаткиИОбороты с указанием периода), а не полные таблицы регистров — это ускоряет выполнение в разы. Выносите отборы в параметры виртуальных таблиц, а не в секцию ГДЕ, где это возможно. Имена полей давайте осмысленные: они попадут в настройки отчета, которые увидит пользователь.
На закладках «Ресурсы», «Параметры» и «Настройки» определите итоговые поля, период по умолчанию и стартовый вариант отчета. Создайте хотя бы один вариант настроек в самой СКД — тогда отчет откроется с готовой структурой, а не с пустым конструктором, который напугает пользователя.
- 1Создайте внешний отчет и откройте схему компоновки данных
- 2Добавьте набор данных «Запрос» и соберите текст запроса конструктором
- 3Укажите ресурсы, параметры периода и вычисляемые поля
- 4Создайте вариант настроек с группировками и отборами по умолчанию
- 5Сохраните файл и проверьте формирование в режиме предприятия
Подключение через механизм дополнительных отчетов
Типовые конфигурации на библиотеке стандартных подсистем (БСП) загружают внешние отчеты через «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Чтобы отчет корректно зарегистрировался, в его модуле объекта должна быть экспортная функция СведенияОВнешнейОбработке, возвращающая структуру с параметрами регистрации.
В структуре указываются вид («ДополнительныйОтчет»), версия, наименование, безопасный режим и таблица команд. Каждая команда описывает кнопку запуска: идентификатор, представление и способ открытия (как правило, «ОткрытиеФормы» для отчета на СКД). Без этой функции типовая подсистема просто не распознает файл.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
ПараметрыРегистрации.Версия = "1.0";
Возврат ПараметрыРегистрации;
КонецФункцииПосле загрузки файла в справочник дополнительных отчетов укажите размещение — разделы командного интерфейса, где отчет будет доступен. Пользователю нужны права на выполнение дополнительных отчетов; если пункт меню не появился, первым делом проверьте роли и включенность функциональной опции «Дополнительные отчеты и обработки».
Отладка и проверка результата
Отлаживайте внешний отчет на копии базы, а не на рабочей. Открыть файл в режиме предприятия можно напрямую через «Файл → Открыть» — это быстрый способ проверить формирование без регистрации в справочнике. Для отладки кода модуля запустите предприятие из конфигуратора с открытым файлом отчета и поставьте точки останова.
Проверяйте отчет на трех уровнях: корректность данных (сверьте итоги со стандартным отчетом конфигурации, например с оборотно-сальдовой ведомостью), работу отборов и параметров (период, организация, контрагент), и поведение в пользовательском режиме — с правами рядового пользователя, а не администратора. Многие ошибки проявляются только при ограниченных правах, когда запрос обращается к недоступным таблицам.
Как проверить результат
Совпадают с типовым отчетом за тот же период
Расхождения без объяснимой причины
Данные меняются при смене дат
Период игнорируется, данные статичны
Отчет формируется без ошибок прав
Ошибка «Нарушение прав доступа»
Типичные ошибки при разработке
Самая частая ошибка — обращение к метаданным, которых нет в целевой конфигурации. Отчет разрабатывался на одной базе, а открывается в другой, и пользователь получает «Поле не найдено». Второе место занимают жестко прописанные отборы в запросе вместо параметров СКД: пользователь не может изменить условие через настройки и вынужден просить доработку.
Третья группа ошибок — производительность. Запрос без параметров виртуальной таблицы или с соединением по неиндексированным полям на большой базе выполняется минутами. Проверяйте отчет на объеме данных, близком к реальному, и смотрите план запроса при подозрении на проблемы.
Когда внешний отчет не подходит
Внешний отчет — не универсальное решение. Если требуется сложная интерактивная форма, фоновое выполнение по расписанию с записью данных или тесная интеграция с подсистемами конфигурации, правильнее встроить отчет в конфигурацию или использовать расширение. Расширения (.cfe) позволяют добавлять объекты в состав конфигурации без снятия с поддержки и подходят для долгоживущих доработок.
Ограничения внешних отчетов: нельзя создавать свои объекты метаданных (регистры, справочники), нет доступа к общим модулям, отсутствующим в конфигурации, сложнее версионирование при работе нескольких разработчиков. Для одноразовой аналитики и отчетов «под заказчика» эти ограничения некритичны, для постоянных механизмов — существенны.
Сравнение вариантов
Быстрая разработка и передача файлом; не подходит для сложных форм и регламентных заданий
Долгосрочные доработки без снятия с поддержки; требует контроля совместимости при обновлениях
Полная интеграция и распределенная разработка; усложняет обновление типовой конфигурации
FAQ
Можно ли писать внешний отчет без конфигуратора?
Нет, файл .erf создается только в конфигураторе. Однако для редактирования удобно использовать EDT: он работает с внешними отчетами как с проектом, поддерживает контроль версий и проверку кода.
Почему отчет работает у меня, но не открывается у заказчика?
Чаще всего причина в версии платформы: файл сохранен в более новой платформе, чем установлена у заказчика. Пересохраните отчет в нужной версии. Также проверьте совпадение конфигураций и наличие используемых объектов метаданных.
Как добавить в отчет кнопку сохранения в Excel?
Отчет на СКД выводит результат в табличный документ, который пользователь сохраняет стандартной командой «Файл → Сохранить» с выбором формата. Отдельная кнопка обычно не нужна, но её можно добавить программно через форму отчета.
Безопасно ли подключать внешний отчет из непроверенного источника?
Нет. Внешний отчет содержит исполняемый код и может читать или изменять данные базы. Загружайте файлы только от доверенных разработчиков и при возможности используйте безопасный режим, который ограничивает действия кода.
Как обновить отчет у пользователя после доработки?
Загрузите новую версию файла в тот же элемент справочника «Дополнительные отчеты и обработки» — старая версия заменится, настройки размещения сохранятся. Увеличьте номер версии в СведенияОВнешнейОбработке, чтобы отличать релизы.
Можно ли выводить в отчет данные из нескольких баз?
Напрямую СКД работает только с текущей базой. Для консолидации используйте COM-соединение или HTTP-сервисы в коде модуля отчета, либо выгружайте данные во временные таблицы и объединяйте в наборе-объекте.
Что важно запомнить
Внешний отчет создается в конфигураторе, строится на СКД и подключается через механизм дополнительных отчетов БСП. Контролируйте версию платформы, тестируйте под правами пользователя и сверяйте итоги с типовыми отчетами.