Некоторый нюанс в сведениях о внешней печатной обработке в облаках
Столкнулся с неприятной проблемой — печатная внешняя обработка прекрасно работала в 1С, но не работала в облачной базе на разделителях (42 Cloud), выдавала ошибку:
В обработчике печати не был сформирован табличный документ для: ***
Я сразу заподозрил, что проблема в названиях команды печати, поэтому добавил трассировку.
Увы, с первого раза она не сработала, потому что я использовал команду сообщить, а печать происходит в отдельном фоновом задании и сообщения теряются. Поэтому я стал выводить сообщения в журнал регистрации:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; ТекКоманды = СведенияОВнешнейОбработке().Команды; СообщитьЖР("Количество команды: " + ТекКоманды.Количество()); Для Каждого Строка ИЗ КоллекцияПечатныхФорм Цикл СообщитьЖР("ПФ в начале: " + Строка.ИмяМакета + " (" + Строка.ТабличныйДокумент + ")"); КонецЦикла; Для Каждого ТекКоманда ИЗ ТекКоманды Цикл Идентификатор = ТекКоманда.Идентификатор; Представление = ТекКоманда.Представление; ИдентификаторВР = ВРЕГ(Идентификатор); СообщитьЖР("Команда: " + Идентификатор + " (" + Представление + ")"); Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ИдентификаторВР) Тогда ПодготовленныйТабДок = ПечатьДокумента(МассивОбъектов, ОбъектыПечати, ИдентификаторВР); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, ИдентификаторВР, Представление, ПодготовленныйТабДок); КонецЕсли; Для Каждого Строка ИЗ КоллекцияПечатныхФорм Цикл СообщитьЖР("ПФ в конце: " + Строка.ИмяМакета + " (" + Строка.ТабличныйДокумент + ")"); КонецЦикла; КонецЦикла; КонецПроцедуры Процедура СообщитьЖР(Сообщение) Сообщить(Сообщение); ЗаписьЖурналаРегистрации("Отладка.ПечатнаяФормаКомитента",,,, Сообщение); КонецПроцедуры
И увидел следующую картину:
Видно, что у команды вместо идентификатора ПечатнаяФормаОтчетаКомитентуРасширенная используется GUID.
Проблема в том, что я использую имя обработки в качестве идентификатора команды, когда описываю команды в сведениях о внешней обработке:
Функция СведенияОВнешнейОбработке() Экспорт МД = Метаданные(); ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки()); МассивНазначений = Новый Массив; //Массив объектов метаданных, для которых будут определены печатная форма МассивНазначений.Добавить("Документ.ОтчетКомитенту"); Представление = МД.Синоним; ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); ПараметрыРегистрации.Версия = ЭтотОбъект.Метаданные().Комментарий; //Версия печатной формы, можно устанавливать в ручную ПараметрыРегистрации.Назначение = МассивНазначений; ПараметрыРегистрации.Наименование = Представление; ПараметрыРегистрации.Информация = СтрСоединить(МассивНазначений, ", "); //Перечисление объектов для печати НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = МД.Имя; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); НоваяКоманда.ПоказыватьОповещение = Истина; Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима("Печать накладной без контроля прав доступа ее реквизитов"); ПараметрыРегистрации.Разрешения.Добавить(Разрешение); Возврат ПараметрыРегистрации; КонецФункции
На облаке, видимо, формируют временную внешнюю обработку, где в качестве идентификатора используется GUID и эта конструкция не работает. Поэтому надо прописывать идентификатор в явном виде:
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = "ПечатнаяФормаОтчетаКомитентуРасширенная"; //МД.Имя; //На облаке так нельзя, это может быть временная обработка НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); НоваяКоманда.ПоказыватьОповещение = Истина;
Среда: УНФ 3.0.4.88. Объем 1.5 час. Облако: 42 Cloud
Свежие комментарии