Внешний отчёт для 1С 8.3 своими руками: разработка, подключение и перенос в рабочую базу
Содержание
Сторонний отчёт в 1С 8.3 делают в конфигураторе: Файл → Новый → Внешний отчет, затем основная схема компоновки данных с запросом, и сохраняют файл .erf. Чтобы им пользовались бухгалтеры, его подключают через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Для конфигурации ничего снимать с поддержки не нужно.
Частое заблуждение: «сторонний отчёт — это обязательно доработка типовой конфигурации». Нет. Внешний отчёт живёт отдельным файлом, обновления конфигурации его не затирают. А выгрузить или отключить его можно за минуту.
Подготовка: что нужно до первой строки запроса
Сначала сформулируйте задачу на бумаге. Отчёт без чёткого ТЗ переделывают по три раза.
📌 Ответьте себе на вопросы:
- 🎯 Какие показатели нужны в колонках: количество, сумма, остаток, оборот?
- 🧩 Какие группировки в строках: контрагент, номенклатура, подразделение, месяц?
- 🗓 Какие отборы и параметры: период, организация, склад?
- 📊 Откуда брать данные: регистр накопления, регистр бухгалтерии , табличная часть документа?
Инструменты:
- Платформа 1С 8.3 с установленным конфигуратором. Версия платформы для разработки — та же, что в рабочей базе: файл, сохранённый более новой платформой, у старых клиентов может не открыться.
- Учётная запись с правами администратора в информационной базе.
- Копия рабочей базы для разработки. Её можно развернуть из выгрузки
.dtили из резервной копии файловой базы.
Не отлаживайте запросы на рабочей базе в часы работы бухгалтерии. Тяжёлый запрос без отборов по периоду может минутами нагружать сервер и мешать остальным.
💡 Чтобы понять, в каком регистре лежат нужные данные, откройте копию в конфигураторе и посмотрите движения нужного документа: в дереве метаданных у документа есть вкладка «Движения». В пользовательском режиме то же видно по кнопке «Показать проводки и другие движения документа» (значок ДтКт).
Внешний или встроенный отчёт: что выбрать
Отчёт можно сделать двумя способами: внешним файлом или объектом внутри конфигурации (напрямую или через расширение).
| Вариант | Когда подходит | Минусы и риски |
|---|---|---|
Внешний отчёт .erf | Разовая или узкая задача, типовая конфигурация на поддержке, отчёт нужен быстро | Файл надо хранить и передавать; в безопасном режиме нельзя работать с файлами и внешними ресурсами |
Отчёт в расширении .cfe | Отчёт нужен постоянно, требуется своя роль или место в разделе меню | Расширение надо проверять после каждого обновления конфигурации |
| Отчёт в основной конфигурации | Конфигурация уже снята с поддержки и дорабатывается | Усложняет обновление: изменения придётся сравнивать и объединять |
Для типовых БП 3.0, ЗУП 3.1 и УТ 11 обычно начинают с внешнего отчёта. Если он прижился и им пользуются каждый день, его переносят в расширение.
Как сделать сторонний отчёт в конфигураторе: пошагово
Разберём пример: продажи за период по контрагентам и номенклатуре из документов реализации БП 3.0.
Шаг 1. Создайте файл отчёта
- Запустите конфигуратор на копии базы.
- Выберите
Файл → Новый, в списке — «Внешний отчет ». - В окне отчёта заполните «Имя» латиницей или кириллицей без пробелов, например
ПродажиПоКонтрагентам, и «Синоним» — то, что увидит пользователь.
Шаг 2. Добавьте основную схему компоновки данных
- Рядом с полем «Основная схема компоновки данных» нажмите кнопку «Открыть схему».
- Конфигуратор предложит создать макет — согласитесь, тип «Схема компоновки данных».
- В схеме нажмите «Добавить набор данных — запрос».
- Откройте конструктор запроса или вставьте текст запроса вручную.
Пример запроса:
ВЫБРАТЬ
РеализацияТовары.Ссылка.Контрагент КАК Контрагент,
РеализацияТовары.Номенклатура КАК Номенклатура,
СУММА(РеализацияТовары.Количество) КАК Количество,
СУММА(РеализацияТовары.Сумма) КАК Сумма
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары
ГДЕ
РеализацияТовары.Ссылка.Проведен
И РеализацияТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
РеализацияТовары.Ссылка.Контрагент,
РеализацияТовары.Номенклатура
Шаг 3. Настройте ресурсы и параметры
- На вкладке «Ресурсы» добавьте
КоличествоиСумма— СКД будет суммировать их в итогах групп. - На вкладке «Параметры» появятся
НачалоПериодаиКонецПериода. ДляКонецПериодаукажите в колонке «Выражение»КонецПериода(&КонецПериода, "День"), иначе документы последнего дня после 00:00 не попадут в выборку. - Снимите у параметров флажок ограничения доступности, чтобы пользователь мог менять период.
Шаг 4. Соберите структуру отчёта
- Вкладка «Настройки» → в структуре добавьте группировку по полю
Контрагент, внутрь неё — детальную группировку поНоменклатура. - На вкладке «Выбранные поля» отметьте
КоличествоиСумма. - На вкладке «Параметры» внутри настроек отметьте период флажком «Включать в пользовательские настройки». Тогда он появится в шапке отчёта.
Шаг 5. Добавьте вычисляемые поля, если нужно
Показатели, которых нет в базе, считают прямо в схеме. Вкладка «Вычисляемые поля» → добавьте поле СредняяЦена с выражением:
ВЫБОР КОГДА Количество = 0 ТОГДА 0 ИНАЧЕ Сумма / Количество КОНЕЦ
На вкладке «Ресурсы» задайте для него то же выражение через агрегатные функции: ВЫБОР КОГДА Сумма(Количество) = 0 ТОГДА 0 ИНАЧЕ Сумма(Сумма) / Сумма(Количество) КОНЕЦ. Иначе в итоге группы средние цены просто сложатся, и цифра получится бессмысленной.
Пример: 10 штук на 1 000 руб. и 30 штук на 4 500 руб. Средняя по группе — 5 500 / 40 = 137,50 руб., а не 100 + 150 = 250.
Шаг 6. Сохраните файл
Файл → Сохранить как → имя ПродажиПоКонтрагентам.erf. Форму отчёта рисовать не обязательно: платформа построит стандартную, а в конфигурациях на БСП подставится привычная форма отчёта с кнопкой «Настройки».
Подключение стороннего отчёта и проверка
Есть два пути: разовое открытие файла и постоянная регистрация в базе.
Открыть файл напрямую
В пользовательском режиме откройте главное меню (кнопка с тремя полосками слева вверху) → Файл → Открыть и выберите .erf. В современных релизах БП 3.0 и ЗУП 3.1 программа спросит подтверждение — это защита от опасных действий.
Этот способ годится для разработчика и проверки. Пользователю без права «Интерактивное открытие внешних отчетов и обработок» платформа файл не откроет.
Зарегистрировать в «Дополнительных отчётах»
Чтобы база приняла файл в справочник, в модуле объекта отчёта нужна экспортная функция СведенияОВнешнейОбработке(). Откройте отчёт в конфигураторе → кнопка «Действия» → «Модуль объекта» и добавьте:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Истина;
ПараметрыРегистрации.Информация = "Продажи по контрагентам и номенклатуре за период";
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = "Продажи по контрагентам";
Команда.Идентификатор = "ПродажиПоКонтрагентам";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Ложь;
Возврат ПараметрыРегистрации;
КонецФункции
Порядок подключения в БП 3.0:
Администрирование → Печатные формы, отчеты и обработки→ включите флажок «Дополнительные отчеты и обработки».- Перейдите по ссылке «Дополнительные отчеты и обработки» → «Добавить из файла».
- Выберите
.erf, подтвердите предупреждение о безопасности. - В карточке на вкладке «Размещение» укажите раздел, где появится команда, например «Продажи».
- На вкладке с пользователями (быстрый доступ) отметьте, кому показывать отчёт.
- Нажмите «Записать и закрыть».
Отчёт появится в выбранном разделе по команде «Дополнительные отчеты».
Отладить логику
- В конфигураторе откройте тот же файл
.erfи поставьте точку останова в модуле (F9). Отладка → Начать отладку → Тонкий клиент.- В клиенте откройте этот файл через
Файл → Открыть. Выполнение остановится на точке.
Для запроса удобнее консоль: в конструкторе запроса СКД есть кнопка выполнения, а в схеме — режим просмотра результата набора. Проверьте итоги на маленьком периоде и сверьте с типовым отчётом, например с оборотно-сальдовой ведомостью по счёту 90.01.
Как ускорить и доработать отчёт
Медленный отчёт почти всегда упирается в запрос. Что помогает:
- ⚡ Условия по периоду и измерениям передавайте в параметры виртуальных таблиц (
Остатки,Обороты), а не вГДЕ. Так платформа отбирает меньше записей. - 🔗 Не злоупотребляйте обращением через точку к полям составного типа, например
Регистратор.Контрагент: для каждого возможного типа появляется отдельное соединение. - 🧮 Сложную логику разбивайте на временные таблицы (
ПОМЕСТИТЬ) и соединяйте уже готовые небольшие выборки. - 🗂 Не выводите детальные записи «на всякий случай». Пусть пользователь сам раскроет группировку.
Доработки, которые пользователи просят чаще всего:
- 📅 Отбор по организации: добавьте поле в запрос, в «Настройках» на вкладке «Отбор» — с флажком «Включать в пользовательские настройки».
- 🎨 Условное оформление: красный цвет для отрицательных сумм задаётся на вкладке «Условное оформление».
- 📈 Диаграмма: в структуре настроек вместо группировки добавляется элемент «Диаграмма».
- 🧾 Несколько вариантов: на вкладке «Варианты» создайте, например, «По контрагентам» и «По номенклатуре» на одной схеме.
При каждом изменении поднимайте Версия в функции регистрации: «1.0» → «1.1». В карточке будет видно, какой файл сейчас подключён.
Перенос отчёта в рабочую базу
Внедрение — отдельный этап, а не «скопировал файл».
- Проверьте отчёт на копии с актуальными данными: не только на тестовом месяце, но и на годовом периоде.
- Загрузите файл в рабочей базе через «Добавить из файла». Если отчёт уже зарегистрирован, откройте его карточку и используйте команду загрузки нового файла — так сохранятся настройки размещения и пользователи.
- Проверьте под учётной записью обычного пользователя.
- Сохраните исходник в одном месте — сетевой папке или Git — с историей версий.
Безопасный режим и права
При БезопасныйРежим = Истина отчёт не может читать и писать файлы на диске, вызывать внешние компоненты и COM-объекты. Обычному отчёту на СКД это и не нужно.
Отключайте безопасный режим только для файлов, код которых вы прочитали целиком. Чужой отчёт с выключенным безопасным режимом выполняет на сервере любой код с правами базы.
Пользователь не обязан иметь административные права, чтобы запускать зарегистрированный отчёт. А вот чтение данных в отчёте ограничено его ролями: если в регистре стоит ограничение доступа на уровне записей, сотрудник увидит только свои организации.
Ошибки при создании и подключении сторонних отчётов
Альтернативы: когда программировать не нужно
Не каждую задачу решает новый файл. Иногда хватает возможностей самой программы:
| Способ | Что даёт | Ограничения |
|---|---|---|
| Настройка типового отчёта | Свои группировки, отборы, поля в «Настройках» отчёта, сохранение как свой вариант | Только данные, которые есть в схеме отчёта |
| Универсальный отчёт (найдите через поиск по командам) | Выборка из любого регистра, документа или справочника без кода | Нельзя соединить несколько источников в одной таблице |
| Консоль запросов или консоль СКД | Быстрая проверка гипотезы, выгрузка в Excel | Инструмент разработчика, не для бухгалтера |
| Выгрузка в Excel и сводная таблица | Подходит для разового анализа | Ручная работа, данные устаревают |
Если нужный отчёт строится настройками за 10 минут, внешний файл не нужен. Разработку оправдывают нестандартные расчёты, соединение нескольких регистров и регулярное использование.
Частые вопросы
Слетит ли внешний отчёт после обновления конфигурации?
Можно ли сделать сторонний отчёт без конфигуратора?
Работает ли внешний отчёт в облачной 1С (1С:Фреш)?
Чем внешний отчёт отличается от внешней обработки?
.epf.