При попытке загрузить внешнюю печатную форму через раздел Администрирование — Печатные формы, отчеты и обработки пользователи часто сталкиваются с ошибками подключения. Разберем, почему возникает эта проблема и как правильно оформить модуль внешней обработки для успешной регистрации в конфигурациях на базе Библиотеки Стандартных Подсистем (БСП).
Выясним причину поведения системы: при загрузке обработки механизмы БСП обращаются к специальным экспортным функциям модуля объекта. Если в обработке отсутствуют необходимые интерфейсные функции или структура возвращаемых данных содержит ошибки, регистрация прерывается со сбоем.
Основные причины ошибки:
СведенияОВнешнейОбработке() в модуле объекта.Назначение (использование синонима документа вместо его системного имени).Печать() с нужным составом параметров.Рассмотрим подробно, какие функции и процедуры должны быть обязательно объявлены в модуле объекта внешней печатной формы.
Функция СведенияОВнешнейОбработке() должна быть экспортной и возвращать структуру с параметрами регистрации обработки. Посмотрим на пример стандартного заполнения:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.Наименование = "Печатная форма списания НА";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
// Указываем точное имя документа из дерева метаданных
ПараметрыРегистрации.Назначение.Добавить("Документ.СписаниеНА");
// Добавляем команду печати
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "Списание НА (внешняя)";
НоваяКоманда.Идентификатор = "СписаниеНА_Внешняя";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Истина;
НоваяКоманда.Модификатор = "ПечатьMXL";
Возврат ПараметрыРегистрации;
КонецФункции
Для выполнения печати в модуле объекта должна быть реализована экспортная процедура Печать(). Проанализируем её сигнатуру и пример вызова:
Процедура Печать(МассивОбъектовНазначения, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПечатнаяФорма = УправлениеПечатью.СформироватьПечатнуюФорму(КоллекцияПечатныхФорм, "СписаниеНА_Внешняя");
Если ПечатнаяФорма <> Неопределено Тогда
// Вызов функции формирования табличного документа
ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатнуюФормуСписания(МассивОбъектовНазначения, ОбъектыПечати);
КонецЕсли;
КонецПроцедуры
Разберем практические рекомендации по отладке и подключению внешней печатной формы:
Назначение необходимо передавать точное имя объекта (например, "Документ.СписаниеНА"), указанное в Конфигураторе, а не пользовательский синоним.ПараметрыРегистрации.БезопасныйРежим = Ложь.