При разработке и подключении внешних печатных форм (ВПФ) в конфигурациях на базе 1С:ERP и других систем с использованием Библиотеки Стандартных Подсистем (БСП), разработчики часто сталкиваются с сообщением «ВПФ недоступна». Рассмотрим, почему это происходит и как пошагово диагностировать и устранить проблему.
Первая и самая распространенная причина — некорректное заполнение функции СведенияОВнешнейОбработке. Система не может инициализировать команду, если в массиве параметров не указан тип вызова или если назначение формы не соответствует документам, из которых происходит вызов.
Важно убедиться, что вы указали тип команды. Если в параметрах отсутствует Использование, система не понимает, как именно выполнять процедуру. Добавьте в массив команд следующую строку:
ПараметрыРегистрации.Вставить("Использование", "ВызовСерверногоМетода");
Также проверьте массив Назначение. Если в параметрах регистрации указан Документ.ТранспортнаяНакладная, а вы пытаетесь вызвать форму из Документ.РеализацияТоваровУслуг, система выдаст ошибку доступности, так как контекст вызова не совпадает с заявленным в метаданных.
Частая проблема заключается в том, что печатная форма ожидает данные от одного объекта, а запрос внутри нее жестко привязан к другому. Когда БСП вызывает процедуру печати, она передает в нее массив ссылок на текущие документы. Если ваш запрос не учитывает эти ссылки (например, жестко обращается к ТранспортнойНакладной при открытии из Заказа), функция ПолучитьДанныеДляПечати возвращает пустой табличный документ.
Помните: система интерпретирует пустой табличный документ как сбой. Чтобы решить эту задачу, приведите запрос к универсальному виду:
ВЫБРАТЬ
Документ.Ссылка КАК Ссылка
ИЗ
Документ.РеализацияТоваровУслуг КАК Документ
ГДЕ
Документ.Ссылка В (&МассивОбъектов)
Здесь параметр &МассивОбъектов должен динамически заполняться значениями, которые БСП передает в вашу функцию.
Если код падает с ошибкой, БСП часто перехватывает ее и выводит обобщенное «ВПФ недоступна». Чтобы увидеть реальную причину, оберните формирование печатной формы в блок Попытка...Исключение и используйте ЗаписьЖурналаРегистрации.
Разберем пример реализации такой защиты:
Процедура Печать(МассивОбъектов, ПараметрыПечати) Экспорт
Попытка
// Ваш основной код формирования макета
ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов);
Исключение
ЗаписьЖурналаРегистрации("Печать ВПФ", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
ВызватьИсключение "Ошибка при формировании печатной формы: " + ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
Иногда после внесения изменений в код 1С:ERP продолжает использовать старую версию ВПФ из-за кэширования метаданных. Рекомендуем придерживаться следующего алгоритма после правок:
Дополнительные отчеты и обработки.Идентификатором, указанным в СведенияОВнешнейОбработке.Резюме: в 90% случаев «недоступность» вызвана либо неверным списком Назначения в регистрации, либо тем, что процедура формирования макета не возвращает заполненный объект ТабличныйДокумент. Проверьте соответствие типов документов и корректность параметров ВызовСерверногоМетода, и ваша печатная форма заработает.