Подскажите пожалуйста, через расширение внес новые изменения в макет печатной формы обработки, пытаюсь откорректировать заполнение, но выдаёт ошибку
Добрый день, есть обработка по формированию прайс листа (УНФ)
Через расширение я изменил макет, внес туда новую область макета и картинку.
Пытаюсь добавить к типовому заполнению этой печатной формы процедуру через расширение, но при попытке сформировать печатную форму, вылетает ошибка "Метод объекта не обнаружен (Вывести)".
Скажите пожалуйста куда копать?
Пишу в модуле менеджера
Сама процедура типовая вот
Через расширение я изменил макет, внес туда новую область макета и картинку.
Пытаюсь добавить к типовому заполнению этой печатной формы процедуру через расширение, но при попытке сформировать печатную форму, вылетает ошибка "Метод объекта не обнаружен (Вывести)".
Скажите пожалуйста куда копать?
Пишу в модуле менеджера
&НаСервере
&После("ВывестиГруппуВТабличныйДокументПолотно")
Процедура Расш_ЗаполнитьВВидеПолотно(ПараметрыФормирования, ТабличныйДокумент, СтруктураТаблицДанных)
МакетПФ = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно");
ОбластьТест = МакетПФ.ПолучитьОбласть("Тест");
ОбластьТест.Параметры.Тест = "Тест";
ТабличныйДокумент.Вывести(ОбластьТест);
КонецПроцедуры
ПоказатьСама процедура типовая вот
Процедура ЗаполнитьВВидеПолотно(ПараметрыФормирования, ТабличныйДокумент, СтруктураТаблицДанных)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Область(1, 1, 1, 1).ШиринаКолонки = 2;
МакетПФ = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно");
ОбластьЗаголовок = СоздатьОбластьЗаголовок(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
ОбластьКИ = МакетПФ.ПолучитьОбласть("КИ");
ОбластьКИАвтор = МакетПФ.ПолучитьОбласть("КИАвтор");
ОбластьФормирование = МакетПФ.ПолучитьОбласть("ДатаФормированияИВалюта");
ОбластьШапка = СоздатьОбластьШапка(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
ОбластьГруппа = МакетПФ.ПолучитьОбласть("Группа");
ОбластьСтрока = СоздатьОбластьСтрока(ПараметрыФормирования, МакетПФ);
ОбластьОписание = МакетПФ.ПолучитьОбласть("Описание");
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("Заголовок", ПараметрыФормирования.НаименованиеПрайсЛиста);
Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию
И ЗначениеЗаполнено(ПараметрыФормирования.Логотип) Тогда
ДанныеКартинки = УправлениеНебольшойФирмойСервер.ПолучитьДвоичныеДанныеФайла(ПараметрыФормирования.Логотип);
Если ЗначениеЗаполнено(ДанныеКартинки) Тогда
ОбластьЗаголовок.Область("Логотип").Картинка = Новый Картинка(ДанныеКартинки);
КонецЕсли;
КонецЕсли;
ОбластьЗаголовок.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию Тогда
ПараметрыСекцииКонтактнаяИнформацияОрганизации(ЗначенияПараметров, ПараметрыФормирования.Организация);
ОбластьКИ.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьКИ);
КонецЕсли;
Если ПараметрыФормирования.УказатьКонтактыОтветственного Тогда
ПараметрыСекцииКонтактнаяИнформацияАвтора(ЗначенияПараметров, ПараметрыФормирования.Автор);
ОбластьКИАвтор.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьКИАвтор);
КонецЕсли;
ДатаФормированияИВалюта = СтрокаДатаФормированияИВалюта(ПараметрыФормирования);
Если НЕ ПустаяСтрока(ДатаФормированияИВалюта) Тогда
ЗначенияПараметров.Очистить();
ЗначенияПараметров.Вставить("ДатаФормированияИВалюта", ДатаФормированияИВалюта);
ОбластьФормирование.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьФормирование);
КонецЕсли;
КоличествоЦен = ПараметрыФормирования.ТаблицаВидовЦен.Количество();
Для ИндексЦены = 1 По КоличествоЦен Цикл
ЗначенияПараметров.Вставить("ВидЦен_" + Строка(ИндексЦены - 1), ПараметрыФормирования.ТаблицаВидовЦен[ИндексЦены - 1].ВидЦен);
КонецЦикла;
ОбластьШапка.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьШапка);
ПараметрыФормирования.Вставить("ОбластьГруппа", ОбластьГруппа);
ПараметрыФормирования.Вставить("ОбластьСтрока", ОбластьСтрока);
ВывестиГруппуВТабличныйДокументПолотно(СтруктураТаблицДанных.ДеревоНоменклатуры.Строки, ПараметрыФормирования, ТабличныйДокумент);
Если НЕ ПустаяСтрока(ПараметрыФормирования.Описание) Тогда
ЗначенияПараметров.Очистить();
ЗначенияПараметров.Вставить("Описание", ПараметрыФормирования.Описание);
ОбластьОписание.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьОписание);
КонецЕсли;
ТабличныйДокумент.ФиксацияСлева = ПараметрыФормирования.ПоследняяКолонкаЗаголовка;
КонецПроцедуры
ПоказатьНайденные решения
(20) если честно, не видя вашего расширения не понять в чем проблема. Ниже прикрепил расширение с примером доработки печати прайс-листа организации. Все работает. Строки с доработками с комментариями. Проверяйте, в чем различия.
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Через расширение нужно создавать новый макет (создав копию существующего), а не добавлять в расширение существующий макет и редактировать его. В процедуре вывода ПФ соответственно прописывать имя добавленного в расширении макета:
По крайней мере так я обошел непонятные ошибки.
МакетПФ = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно_Расширение");
По крайней мере так я обошел непонятные ошибки.
(15) нет "перехода" между расширением и конфигурацией, в момент выполнения кода все уже скомпилировано. Пространство общее. Проверьте набор и порядок параметров процедуры, чтобы в расширении он был 1 в 1 как в типовой.
Как сейчас выглядит модуль менеджера полностью?
Как сейчас выглядит модуль менеджера полностью?
(16)
&Вместо("ВывестиГруппуВТабличныйДокументПолотно")
Процедура Расш_ЗаполнитьВВидеПолотно(ПараметрыФормирования, ТабличныйДокумент, СтруктураТаблицДанных)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Область(1, 1, 1, 1).ШиринаКолонки = 2;
МакетПФ = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно");
ОбластьЗаголовок = СоздатьОбластьЗаголовок(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
ОбластьКИ = МакетПФ.ПолучитьОбласть("КИ");
ОбластьКИАвтор = МакетПФ.ПолучитьОбласть("КИАвтор");
ОбластьФормирование = МакетПФ.ПолучитьОбласть("ДатаФормированияИВалюта");
ОбластьШапка = СоздатьОбластьШапка(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
ОбластьГруппа = МакетПФ.ПолучитьОбласть("Группа");
ОбластьСтрока = СоздатьОбластьСтрока(ПараметрыФормирования, МакетПФ);
ОбластьОписание = МакетПФ.ПолучитьОбласть("Описание");
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("Заголовок", ПараметрыФормирования.НаименованиеПрайсЛиста);
Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию
И ЗначениеЗаполнено(ПараметрыФормирования.Логотип) Тогда
ДанныеКартинки = УправлениеНебольшойФирмойСервер.ПолучитьДвоичныеДанныеФайла(ПараметрыФормирования.Логотип);
Если ЗначениеЗаполнено(ДанныеКартинки) Тогда
ОбластьЗаголовок.Область("Логотип").Картинка = Новый Картинка(ДанныеКартинки);
КонецЕсли;
КонецЕсли;
ОбластьЗаголовок.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию Тогда
ПараметрыСекцииКонтактнаяИнформацияОрганизации(ЗначенияПараметров, ПараметрыФормирования.Организация);
ОбластьКИ.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьКИ);
КонецЕсли;
Если ПараметрыФормирования.УказатьКонтактыОтветственного Тогда
ПараметрыСекцииКонтактнаяИнформацияАвтора(ЗначенияПараметров, ПараметрыФормирования.Автор);
ОбластьКИАвтор.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьКИАвтор);
КонецЕсли;
ДатаФормированияИВалюта = СтрокаДатаФормированияИВалюта(ПараметрыФормирования);
Если НЕ ПустаяСтрока(ДатаФормированияИВалюта) Тогда
ЗначенияПараметров.Очистить();
ЗначенияПараметров.Вставить("ДатаФормированияИВалюта", ДатаФормированияИВалюта);
ОбластьФормирование.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьФормирование);
КонецЕсли;
КоличествоЦен = ПараметрыФормирования.ТаблицаВидовЦен.Количество();
Для ИндексЦены = 1 По КоличествоЦен Цикл
ЗначенияПараметров.Вставить("ВидЦен_" + Строка(ИндексЦены - 1), ПараметрыФормирования.ТаблицаВидовЦен[ИндексЦены - 1].ВидЦен);
КонецЦикла;
ОбластьШапка.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьШапка);
ПараметрыФормирования.Вставить("ОбластьГруппа", ОбластьГруппа);
ПараметрыФормирования.Вставить("ОбластьСтрока", ОбластьСтрока);
ВывестиГруппуВТабличныйДокументПолотно(СтруктураТаблицДанных.ДеревоНоменклатуры.Строки, ПараметрыФормирования, ТабличныйДокумент);
Если НЕ ПустаяСтрока(ПараметрыФормирования.Описание) Тогда
ЗначенияПараметров.Очистить();
ЗначенияПараметров.Вставить("Описание", ПараметрыФормирования.Описание);
ОбластьОписание.Параметры.Заполнить(ЗначенияПараметров);
ТабличныйДокумент.Вывести(ОбластьОписание);
КонецЕсли;
ТабличныйДокумент.ФиксацияСлева = ПараметрыФормирования.ПоследняяКолонкаЗаголовка;
КонецПроцедуры
&Вместо("СформироватьПрайсЛистОрганизации")
Процедура Расш_СформироватьПрайсЛистОрганизации(ПараметрыФормирования, ФоновоеЗаданиеАдресХранилища = "") Экспорт
Если НЕ ПараметрыФормирования.Свойство("ОтборНоменклатуры") Тогда
ВызватьИсключение НСтр("ru ='Ошибка в начальных параметрах прайс-листа организации'");
КонецЕсли;
ТабличныйДокумент = Новый ТабличныйДокумент;
АдаптироватьПараметрыФормирования(ПараметрыФормирования);
ПостроитьПрайсЛист(ПараметрыФормирования, ТабличныйДокумент);
// Для работы с вкл. параметром РежимОтладки
ПараметрыФормирования.ТаблицаВидовЦен = Неопределено;
ПараметрыФормирования.ПредставлениеНоменклатуры = Неопределено;
РезультатВыполнения = Новый Структура;
РезультатВыполнения.Вставить("ПоследняяКолонкаЗаголовка", ПараметрыФормирования.ПоследняяКолонкаЗаголовка);
РезультатВыполнения.Вставить("ПоследняяКолонкаПрайсЛиста", ПараметрыФормирования.ПоследняяКолонкаПрайсЛиста);
РезультатВыполнения.Вставить("ИменаКолонок", ПараметрыФормирования.ИменаКолонок);
РезультатВыполнения.Вставить("РазмерКартинокБайт", ПараметрыФормирования.РазмерКартинокБайт);
РезультатВыполнения.Вставить("ТабличныйДокумент", ТабличныйДокумент);
ПоместитьВоВременноеХранилище(РезультатВыполнения, ФоновоеЗаданиеАдресХранилища);
КонецПроцедуры
Показать
(17) для чего:
Если в нем ничего не меняется?
Так же не понятно, что изменилось в:
Макет тот же самый
Безопасный решим в расширении отключен?
&Вместо("СформироватьПрайсЛистОрганизации")
Процедура Расш_СформироватьПрайсЛистОрганизации(ПараметрыФормирования, ФоновоеЗаданиеАдресХранилища = "") Экспорт
Если в нем ничего не меняется?
Так же не понятно, что изменилось в:
&Вместо("ВывестиГруппуВТабличныйДокументПолотно")
Процедура Расш_ЗаполнитьВВидеПолотно(ПараметрыФормирования, ТабличныйДокумент, СтруктураТаблицДанных)
Макет тот же самый
Безопасный решим в расширении отключен?
(19)Отключен, даже если прописать мой скопированный макет, оборвется. Параметры формирования не передаются на расширение, вот в чем проблема, из за чего они не передаются я так понять и не могу.
Отладкой смотрел что данные этого параметра заполняются в модуле менеджера, но при переходе на заполнение в моем расширении сразу уходят в «Неопределено»
Отладкой смотрел что данные этого параметра заполняются в модуле менеджера, но при переходе на заполнение в моем расширении сразу уходят в «Неопределено»
(20) если честно, не видя вашего расширения не понять в чем проблема. Ниже прикрепил расширение с примером доработки печати прайс-листа организации. Все работает. Строки с доработками с комментариями. Проверяйте, в чем различия.
Прикрепленные файлы:
(23) Честно сказать это какая то магия, скопировал ваш код из модуля менеджера расширения, всё прогнало без ошибок, хотя вот я так же писал как у вас выполнено. Может быть какое-нибудь кеширование у меня проходило, что параметр не передавался на расширение, спасибо большое за помощь, буду дальше разбираться, очень помогли. Появилось хоть какое то представление что такое расширение
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот