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