|
программно вызвать печатную форму | ☑ | ||
---|---|---|---|---|
0
I_learn_1c
26.02.20
✎
12:36
|
Доброго дня,
Вопрос может для кого-то банальный, но у меня вот на нем затык случился... помогите разобраться пожалуйста что не так. Есть внешняя печатная форма, в ней используется NameDecl для склонения, хранится в макете этой же формы в двоичных данных. Форма как внешняя работает, через файл-открыть тоже работает. со склонением все хорошо Но есть необходимость вызывать функцию из этой формы программно. При определенном событии нужно вызвать из обработки функцию формирующую табличный документ, получить документ и сохранить его. При этом вылезает ошибка на ОбработкаФорма.СформироватьТабДок(МассивДок) {ВнешняяОбработка.ПриказСПодписью.МодульОбъекта(126)}: Значение не является значением объектного типа (Просклонять) вот такое есть в модуле обработки: Функция СформироватьТабДок(МассивОбъектов) Экспорт ....... Попытка // Подключаем внешнюю компоненту ПодключитьВнешнююКомпоненту(ПоместитьВоВременноеХранилище(ПолучитьМакет("КомпонентаСклонения")), "NameDecl", ТипВнешнейКомпоненты.Native); //ПодключитьВнешнююКомпоненту("Макет.КомпонентаСклонения", "NameDecl",ТипВнешнейКомпоненты.Native ); ОбъектСклонение = Новый("AddIn.NameDecl.CNameDecl"); Исключение // Не удалось выполнить операции с внешней компонентой Сообщить("Не удалось подключить внешнюю компоненту по причине: " + ОписаниеОшибки()); КонецПопытки; Для Каждого ДокСсылка из МассивОбъектов Цикл ..... Если ОтделГруппаЗакупки<>Справочники.Подразделения.ПустаяСсылка() Тогда Если ЗначениеЗаполнено(ОтделГруппаЗакупки.Руководитель) Тогда Сообщить("123"+ОтделГруппаЗакупки.Руководитель); ОбластьПриказ.Параметры.ФИОЗакупки ="Группе по проведению закупок ("+ОбъектСклонение.Просклонять(ОтделГруппаЗакупки.Руководитель.Фамилия,3)+" "+Лев(ОтделГруппаЗакупки.Руководитель.Имя,1)+"."+Лев(ОтделГруппаЗакупки.Руководитель.Отчество,1)+". )"; Иначе ОбластьПриказ.Параметры.ФИОЗакупки = "___________________________________"; КонецЕсли; Иначе ОбластьПриказ.Параметры.ФИОЗакупки = "___________________________________"; КонецЕсли; ..... КонецЦикла; КонецФункции вот так вызываю программно (в модуле объекта): МассивДок поступает одинаковый, на выходе функция должна вернуть ТабДок, но валится на склонении, Сообщить("123") даже не выводит, ну это потому что программно наверно... Данные заполнены, все ок, в обычном режиме работает ПечОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("ПриказСПодписью"); Если ПечОбработка<>Справочники.ДополнительныеОтчетыИОбработки.ПустаяСсылка() Тогда ПечФормаОбъект = ПечОбработка.ПолучитьОбъект(); МассивДок = Новый Массив; МассивДок.Добавить(Предмет.Предмет); ИмяФайлаОбработки = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = ПечОбработка.ХранилищеОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайлаОбработки); Попытка ОбработкаФорма = ВнешниеОбработки.Создать(ИмяФайлаОбработки); ТабДок = ОбработкаФорма.СформироватьТабДок(МассивДок); ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF); Исключение КонецПопытки; КонецЕсли; |
|||
1
I_learn_1c
26.02.20
✎
12:54
|
(0) может нужно компоненту эту как то вызвать по другому? Вероятно ее не удается подключить
|
|||
2
Ц_У
26.02.20
✎
13:08
|
А так можно? ПодключитьВнешнююКомпоненту(ПоместитьВоВременноеХранилище(ПолучитьМакет("КомпонентаСклонения")), "NameDecl", ТипВнешнейКомпоненты.Native);
В СП говорят вот так: //ПодключитьВнешнююКомпоненту("Макет.КомпонентаСклонения", "NameDecl",ТипВнешнейКомпоненты.Native ); ОбъектСклонение = Новый("AddIn.NameDecl.CNameDecl"); Проверить на то, что это он, может NULL/Неопределено? |
|||
3
Ц_У
26.02.20
✎
13:11
|
Может быть это: ОбъектСклонение = Новый("AddIn.NameDecl.CNameDecl");
Заменить на Это: ОбъектСклонение = ПодключитьВнешнююКомпоненту("AddIn.NameDecl.CNameDecl") |
|||
4
I_learn_1c
26.02.20
✎
13:20
|
(2) взяла из какого-то примера, но действительно....
в обычном режиме внешней и через файл-открыть работают оба варианта, а при программном вызове действительно помогло ПодключитьВнешнююКомпоненту("Макет.КомпонентаСклонения", "NameDecl",ТипВнешнейКомпоненты.Native ); В итоге подходит так Попытка // Подключаем внешнюю компоненту ПодключитьВнешнююКомпоненту("Макет.КомпонентаСклонения", "NameDecl",ТипВнешнейКомпоненты.Native ); ОбъектСклонение = Новый("AddIn.NameDecl.CNameDecl"); Исключение // Не удалось выполнить операции с внешней компонентой Сообщить("Не удалось подключить внешнюю компоненту по причине: " + ОписаниеОшибки()); КонецПопытки; Спасииибо!)))) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |