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

Отчеты и Аналитика · 9 мин

Как сделать внешний отчет в 1С 8.3: практический пример

Пошаговая инструкция создания внешнего отчета в 1С 8.3: настройка СКД, регистрация в базе, пример кода, типичные ошибки и проверка результата.

Внешний отчет в 1С 8.3 — это файл с расширением .erf, который позволяет выводить данные из базы без изменения конфигурации. Его используют, когда типового отчета не хватает: нужна другая группировка, дополнительные колонки или отчет по регистру, который разработчики не вывели в интерфейс. Главное преимущество подхода — обновление конфигурации не затрагивает внешние отчеты, и их можно дорабатывать без снятия базы с поддержки.

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

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

Что такое внешний отчет и когда он нужен

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

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

Подготовка: что понадобится перед началом

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

Работайте на копии базы или в тестовом контуре. Сам по себе отчет только читает данные и ничего не портит, но ошибка в запросе может надолго «подвесить» сеанс на больших таблицах, а неаккуратный код в модуле способен выполнить запись в базу.

Создание внешнего отчета в конфигураторе

Откройте конфигуратор и выполните Файл → Новый → Внешний отчет. Задайте имя латиницей, например «ПродажиЗаПериодВнешний», и синоним — он будет виден пользователям. Сразу сохраните файл на диск: Файл → Сохранить, укажите папку проекта. Файл получит расширение .erf.

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

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

Настройка запроса в СКД на примере отчета по продажам

На закладке «Наборы данных» нажмите «Добавить» → «Запрос» и откройте конструктор запроса. Для примера выберем виртуальную таблицу оборотов регистра накопления «Продажи» (в УТ, КА и ERP она обычно называется ПродажиОбороты). Перетащите в поля: Номенклатура, КоличествоОборот, СтоимостьОборот. В параметрах виртуальной таблицы задайте периодичность и оставьте параметры начала и конца периода — СКД сама подставит их в настройки отчета.

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

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

Когда СКД не хватает: программный модуль

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

Регистрация отчета в базе через «Дополнительные отчеты и обработки»

Чтобы пользователи видели отчет в интерфейсе рядом с типовыми, зарегистрируйте его в справочнике дополнительных отчетов. В режиме 1С:Предприятие откройте «Администрирование» → «Печатные формы, отчеты и обработки», включите флажок «Дополнительные отчеты и обработки», перейдите по ссылке списка и добавьте файл .erf.

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

bsl
Функция СведенияОВнешнейОбработке() Экспорт
  ПараметрыРегистрации = Новый Структура;
  ПараметрыРегистрации.Вставить("Вид", "ДополнительныйОтчет");
  ПараметрыРегистрации.Вставить("Версия", "1.0");
  ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
  Возврат ПараметрыРегистрации;
КонецФункции

Проверка результата и типичные ошибки

Откройте отчет в режиме 1С:Предприятие через Файл → Открыть, задайте короткий период и сформируйте. Сверьте итоги с типовым отчетом по тому же регистру за тот же период — суммы должны совпасть. Если цифры расходятся, чаще всего причина в разных отборах или в том, что во внешнем отчете не учтены иерархия и валюта.

Типичные ошибки
01
Запрос к полной таблице регистра вместо виртуальной таблицы оборотов — отчет формируется медленно и долго блокирует данные
02
Не заданы параметры периода — отчет выводит данные за все время и перегружает базу
03
Отчет редактируют прямо в рабочей папке пользователей — у части сотрудников открывается старая версия файла
04
Итоги не совпадают с типовым отчетом из-за разных отборов — перед паникой сравните настройки обоих отчетов
05
Хранение единственной копии .erf на локальном диске — при сбое диска разработка теряется
Контрольные точки

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

Итог по сумме за период
Норма

Совпадает с типовым отчетом по тому же регистру

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

Расхождение — проверьте отборы и виртуальную таблицу

Время формирования
Норма

Секунды на типовом периоде

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

Минуты — добавьте отборы и индексируемые поля в запрос

Запуск у рядового пользователя
Норма

Отчет открывается и формируется под его правами

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

Ошибка доступа — проверьте права на регистры в запросе

Практические замечания по эксплуатации

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

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

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

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

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

Можно ли сделать внешний отчет без программирования?

Да. Если данные лежат в регистрах и справочниках, достаточно схемы компоновки данных: запрос строится в визуальном конструкторе, а группировки и отборы настраиваются мышью. Код нужен только для нестандартных расчетов и регистрации по правилам БСП.

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

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

Почему пользователь видит пустой отчет, а у администратора данные есть?

Почти всегда это вопрос прав: у пользователя нет доступа к регистру или справочнику, из которых читает запрос. Проверьте роли на объекты, задействованные в запросе, либо сузьте запрос до доступных пользователю данных.

Как добавить в отчет печатную форму?

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

Отчет формируется очень долго, что делать?

Сначала ограничьте период и добавьте обязательные отборы. Затем проверьте, что запрос обращается к виртуальным таблицам (Обороты, Остатки), а не к полным таблицам регистров, и что в отборах используются индексированные поля. На очень больших объемах помогает периодическая агрегация итогов.