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