Внешний отчет по данным документа: от Конфигуратора до кнопки в форме

· 10 мин

Содержание

Внешний отчет по документу создают в Конфигураторе: Файл → Новый → Внешний отчет, затем в нём собирают схему компоновки данных с запросом к документу и параметром-ссылкой, сохраняют файл .erf и подключают в базе. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) такой отчет регистрируют в справочнике дополнительных отчетов, и он появляется прямо в форме нужного документа.

Конфигурацию при этом не снимают с поддержки и не обновляют. Отчет живёт отдельным файлом, его можно поправить и перезагрузить без остановки работы пользователей. Ниже пример для документа «Реализация (акт, накладная)» в Бухгалтерии 3.0, но схема та же для любого документа.

Что подготовить до открытия Конфигуратора

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

Перед стартом проверьте:

  • 🔑 Доступ к Конфигуратору. Монопольный режим не нужен: внешний отчет не меняет конфигурацию. Лучше работать на копии рабочей базы — в ней конструктор запроса покажет реальные документы и реквизиты, а тестовые данные не помешают пользователям.
  • 📄 Имя документа в метаданных. В интерфейсе документ называется «Реализация (акт, накладная)», а в метаданных — РеализацияТоваровУслуг. Найдите его в дереве конфигурации, раскройте и посмотрите реквизиты шапки и табличные части.
  • 👤 Права пользователя. Чтобы открыть .erf через меню «Файл», нужна роль с правом интерактивного открытия внешних отчетов. В типовых решениях это отдельная роль, её выдаёт администратор.
  • 🧭 Способ запуска. Решите заранее: отчет будут открывать как файл или он должен появиться кнопкой в форме документа. От этого зависит, нужна ли функция регистрации в модуле (раздел про подключение).

Сначала соберите запрос в консоли запросов на копии базы и убедитесь, что данные выходят нужные. Схему компоновки удобнее строить на уже проверенном запросе.

Шаг 1. Заготовка внешнего отчета в Конфигураторе

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

Форму отчета на этом этапе создавать не обязательно. Если её нет, платформа покажет стандартную форму с кнопкой «Сформировать», настройками и полем результата. Свою форму делают только тогда, когда отчет должен принимать документ из внешнего вызова — это понадобится в разделе про подключение.

Шаг 2. Запрос к документу: шапка, товары, движения

В схеме компоновки добавьте набор данных «Запрос» и откройте конструктор запроса. Данные документа лежат в трёх местах, и выбор зависит от задачи.

Что нужно в отчетеОткуда братьПример таблицы
Реквизиты шапки (дата, контрагент, договор)таблица документаДокумент.РеализацияТоваровУслуг
Строки товаров и услугтабличная частьДокумент.РеализацияТоваровУслуг.Товары
Проводки, сформированные документомрегистр бухгалтерииРегистрБухгалтерии.Хозрасчетный
Движения по складу и взаиморасчётамрегистры накопленияотбор по полю Регистратор

Запрос по строкам товаров одного или нескольких документов:

ВЫБРАТЬ
	Товары.Ссылка КАК Документ,
	Товары.Ссылка.Дата КАК Дата,
	Товары.Ссылка.Контрагент КАК Контрагент,
	Товары.Номенклатура КАК Номенклатура,
	Товары.Количество КАК Количество,
	Товары.Цена КАК Цена,
	Товары.Сумма КАК Сумма,
	Товары.СуммаНДС КАК СуммаНДС
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК Товары
ГДЕ
	Товары.Ссылка В (&Документы)

Параметр &Документы после закрытия конструктора появится на вкладке «Параметры» схемы. Откройте его свойства и поставьте флаг «Доступен список значений». Так отчет примет и один документ, и выделенные в списке десять.

Проводки документа выбирают из регистра бухгалтерии по регистратору:

ВЫБРАТЬ
	Х.Регистратор КАК Документ,
	Х.СчетДт КАК СчетДт,
	Х.СчетКт КАК СчетКт,
	Х.Сумма КАК Сумма
ИЗ
	РегистрБухгалтерии.Хозрасчетный КАК Х
ГДЕ
	Х.Регистратор В (&Документы)

Обращение через точку (Товары.Ссылка.Контрагент) удобно, но каждое такое поле — неявное соединение с таблицей документа. Для одного документа это незаметно. Если отчет будут строить по тысячам документов за год, соберите шапку отдельным вложенным запросом или выберите поля из таблицы документа через соединение.

Если в одном отчете нужны и товары, и проводки, сделайте два набора данных. Связывать их в одном запросе через ЛЕВОЕ СОЕДИНЕНИЕ по ссылке нельзя: строки товаров размножатся на число проводок, и суммы задвоятся.

Шаг 3. Компоновка: ресурсы, группировки, вид результата

Когда запрос готов, поля автоматически переносятся на вкладку «Наборы данных». Дальше — четыре вкладки схемы.

Ресурсы. Перенесите туда Количество, Сумма, СуммаНДС. Для них выставится функция Сумма — итоги будут считаться по группировкам. Поле Цена в ресурсы не добавляйте: сумма цен смысла не имеет. Если нужна средняя цена в итоге, задайте выражение Сумма(Сумма) / Сумма(Количество).

Параметры. Здесь уже лежит Документы. Для отладки можно снять флаг ограничения доступности, чтобы параметр был виден в форме и его можно было выбрать вручную.

Настройки. Это то, что пользователь увидит после нажатия «Сформировать»:

  1. Нажмите кнопку «Открыть конструктор настроек», выберите тип «Список».
  2. Перенесите в поля Номенклатуру, Количество, Цену, Сумму, Сумму НДС.
  3. Задайте группировку по полю Документ — тогда у каждого документа будет свой заголовок и подытог.
  4. Внутри группировки добавьте детальные записи, иначе вместо строк товаров увидите одни итоги.

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

Если нужна печатная «шапка» с реквизитами документа, не рисуйте её текстом в запросе. Добавьте в настройки параметры вывода: заголовок отчета и вывод параметров данных. Этого хватает в большинстве служебных отчетов.

Шаг 4. Отладка: проверить, пока не отдали бухгалтеру

Ошибки в отчете по документу обычно двух видов: «отчет пустой» и «цифры не те». Проверяйте в таком порядке.

  1. Запрос отдельно. Скопируйте текст запроса в консоль запросов, задайте параметр — ссылку на конкретный документ. Сверьте строки с табличной частью документа на экране.
  2. Отчет как файл. Запустите 1С:Предприятие из Конфигуратора (Отладка → Начать отладку), откройте файл через меню «Файл → Открыть». В форме отчета откройте настройки, выберите документ в параметре и нажмите «Сформировать».
  3. Итоги. Сравните итог отчета с итогом документа. Расхождение почти всегда значит, что в запросе есть соединение, которое размножило строки.
  4. Модуль. Если в модуле объекта или формы есть код, поставьте точку останова (F9) и пройдите его по шагам. Отладка внешних отчетов работает так же, как отладка конфигурации, если в режиме предприятия открыт тот же файл, который вы правите в Конфигураторе.
Перед передачей пользователям
Выполнено: 0 / 6

Пункт про пустой параметр важен. Если пользователь откроет отчет без документа, условие В (&Документы) с незаполненным параметром выдаст ошибку, а не пустой результат. Это нормальное поведение, но лучше, чтобы отчет открывался сразу с документом.

Шаг 5. Сохранить и подключить к форме документа

Есть два пути.

СпособКогда подходитЧто нужно
Открыть файл через «Файл → Открыть»Разовая проверка, отчет для себяПраво на открытие внешних отчетов
Регистрация в дополнительных отчетах БСПОтчет для отдела, кнопка в документеФункция СведенияОВнешнейОбработке в модуле

Функция регистрации в модуле объекта

Чтобы типовая конфигурация приняла файл и показала команду в форме документа, в модуль объекта отчета добавьте экспортную функцию:

Функция СведенияОВнешнейОбработке() Экспорт

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

	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = "Отчет по реализации";
	Команда.Идентификатор = "ОтчетПоРеализации";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	Команда.ПоказыватьОповещение = Ложь;

	Возврат ПараметрыРегистрации;

КонецФункции

Вид «Отчет» — это контекстный отчет: он привязан к объектам из списка Назначение и вызывается из их форм. Вид «Дополнительный отчет» появился бы в общем списке отчетов раздела, без привязки к документу. Для нашей задачи нужен именно первый.

Как отчет получает документ

При вызове команды БСП открывает форму отчета и передаёт в параметре ОбъектыНазначения массив ссылок: текущий документ или выделенные в списке. Поэтому у отчета должна быть своя основная форма. Создайте её через ветку «Формы» в окне отчета, добавьте реквизит формы Документы с типом «Список значений» и два обработчика:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Если Параметры.Свойство("ОбъектыНазначения") Тогда
		Документы.ЗагрузитьЗначения(Параметры.ОбъектыНазначения);
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПриЗагрузкеВариантаНаСервере(Настройки)
	Если Документы.Количество() > 0 Тогда
		Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Документы", Документы);
	КонецЕсли;
КонецПроцедуры

Значение ставится во втором обработчике, а не в первом, потому что вариант отчета загружается после создания формы и перезаписал бы настройки.

Загрузка в базу

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

При регистрации программа предупреждает о небезопасном коде. Внешний файл выполняется с правами пользователя на сервере. Загружайте только отчеты, исходный код которых вы видели. Если отчет не работает с файлами, COM и внешними ресурсами, оставьте безопасный режим включённым.

В ЗУП 3.1 и УТ 11 механизм тот же — он из БСП. Отличается только расположение ссылки в разделе администрирования, а флаг и справочник называются так же.

Сбои при создании и подключении

Диагностика: выберите симптом

Что ещё можно добавить в отчет по документу

Базовый вариант готов. Дальше — доработки, которые чаще всего просят бухгалтеры.

  • 📊 Несколько вариантов. В схеме можно сохранить два варианта настроек: «Товары» и «Проводки». Пользователь переключает их в форме, не открывая другой отчет.
  • 🔗 Расшифровка. Поля Документ и Номенклатура в результате кликабельны: двойной щелчок откроет документ или карточку номенклатуры. Ничего программировать не нужно, это стандартное поведение компоновки.
  • 🧮 Вычисляемые поля. На вкладке «Вычисляемые поля» добавьте, например, сумму без НДС выражением Сумма - СуммаНДС, если в документе цены указаны с НДС.
  • 🖨️ Макет вместо компоновки. Если нужна строгая печатная форма с подписями, это уже не отчет, а внешняя печатная форма. Её регистрируют с видом «Печатная форма», и она появляется в меню «Печать» документа.
  • 👥 Права. В карточке дополнительного отчета на вкладке команд ограничьте доступ нужными группами, а не открывайте его всем.
Можно ли сделать внешний отчет без Конфигуратора?
Нет. Файл .erf создаётся и правится только в Конфигураторе. В режиме 1С:Предприятие можно лишь настраивать варианты уже готового отчета.
Нужно ли снимать конфигурацию с поддержки?
Нет. Внешний отчет не меняет конфигурацию, поэтому обновления типового релиза ставятся как обычно.
Будет ли отчет работать в облаке или в 1С:Фреш?
Только если сервис разрешает загрузку дополнительных отчетов. Обычно файл проходит проверку на стороне сервиса и работает в безопасном режиме.
Чем внешний отчет отличается от отчета в расширении?
Расширение встраивается в конфигурацию и устанавливается в базу, его можно добавить в командный интерфейс без БСП. Внешний отчет проще распространять: это один файл, который загружают через справочник.
Как обновить уже загруженный отчет?
Откройте его карточку в списке дополнительных отчетов, загрузите новый файл через команду загрузки из файла и запишите. Настройки доступа и размещения сохранятся.