Подскажите пожалуйста, через расширение внес новые изменения в макет печатной формы обработки, пытаюсь откорректировать заполнение, но выдаёт ошибку

1. user973528 24.01.21 16:21 Сейчас в теме
Добрый день, есть обработка по формированию прайс листа (УНФ)
Через расширение я изменил макет, внес туда новую область макета и картинку.

Пытаюсь добавить к типовому заполнению этой печатной формы процедуру через расширение, но при попытке сформировать печатную форму, вылетает ошибка "Метод объекта не обнаружен (Вывести)".
Скажите пожалуйста куда копать?

Пишу в модуле менеджера

&НаСервере
&После("ВывестиГруппуВТабличныйДокументПолотно")
Процедура Расш_ЗаполнитьВВидеПолотно(ПараметрыФормирования, ТабличныйДокумент, СтруктураТаблицДанных)
		
		МакетПФ				= УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно");
		ОбластьТест			= МакетПФ.ПолучитьОбласть("Тест");
		ОбластьТест.Параметры.Тест = "Тест";
		ТабличныйДокумент.Вывести(ОбластьТест);
	
КонецПроцедуры
Показать


Сама процедура типовая вот
Процедура ЗаполнитьВВидеПолотно(ПараметрыФормирования, ТабличныйДокумент, СтруктураТаблицДанных)
	
	ТабличныйДокумент	= Новый ТабличныйДокумент;
	ТабличныйДокумент.Область(1, 1, 1, 1).ШиринаКолонки = 2;
	
	МакетПФ				= УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно");
	
	ОбластьЗаголовок	= СоздатьОбластьЗаголовок(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
	ОбластьКИ			= МакетПФ.ПолучитьОбласть("КИ");
	ОбластьКИАвтор		= МакетПФ.ПолучитьОбласть("КИАвтор");
	ОбластьФормирование	= МакетПФ.ПолучитьОбласть("ДатаФормированияИВалюта");
	ОбластьШапка		= СоздатьОбластьШапка(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
	ОбластьГруппа		= МакетПФ.ПолучитьОбласть("Группа");
	ОбластьСтрока		= СоздатьОбластьСтрока(ПараметрыФормирования, МакетПФ);
	ОбластьОписание 	= МакетПФ.ПолучитьОбласть("Описание");
	
	ЗначенияПараметров	= Новый Структура;
	ЗначенияПараметров.Вставить("Заголовок", ПараметрыФормирования.НаименованиеПрайсЛиста);
	
	Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию
		И ЗначениеЗаполнено(ПараметрыФормирования.Логотип) Тогда
		
		ДанныеКартинки = УправлениеНебольшойФирмойСервер.ПолучитьДвоичныеДанныеФайла(ПараметрыФормирования.Логотип);
		Если ЗначениеЗаполнено(ДанныеКартинки) Тогда
			
			ОбластьЗаголовок.Область("Логотип").Картинка = Новый Картинка(ДанныеКартинки);
			
		КонецЕсли;
		
	КонецЕсли;
	
	ОбластьЗаголовок.Параметры.Заполнить(ЗначенияПараметров);
	ТабличныйДокумент.Вывести(ОбластьЗаголовок);
	
	Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию Тогда
		
		ПараметрыСекцииКонтактнаяИнформацияОрганизации(ЗначенияПараметров, ПараметрыФормирования.Организация);
		
		ОбластьКИ.Параметры.Заполнить(ЗначенияПараметров);
		ТабличныйДокумент.Вывести(ОбластьКИ);
		
	КонецЕсли;
	
	Если ПараметрыФормирования.УказатьКонтактыОтветственного Тогда
		
		ПараметрыСекцииКонтактнаяИнформацияАвтора(ЗначенияПараметров, ПараметрыФормирования.Автор);
		
		ОбластьКИАвтор.Параметры.Заполнить(ЗначенияПараметров);
		ТабличныйДокумент.Вывести(ОбластьКИАвтор);
		
	КонецЕсли;
	
	ДатаФормированияИВалюта = СтрокаДатаФормированияИВалюта(ПараметрыФормирования);
	Если НЕ ПустаяСтрока(ДатаФормированияИВалюта) Тогда
		
		ЗначенияПараметров.Очистить();
		ЗначенияПараметров.Вставить("ДатаФормированияИВалюта", ДатаФормированияИВалюта);
		ОбластьФормирование.Параметры.Заполнить(ЗначенияПараметров);
		ТабличныйДокумент.Вывести(ОбластьФормирование);
		
	КонецЕсли;
	
	КоличествоЦен = ПараметрыФормирования.ТаблицаВидовЦен.Количество();
	Для ИндексЦены = 1 По КоличествоЦен Цикл
		
		ЗначенияПараметров.Вставить("ВидЦен_" + Строка(ИндексЦены - 1), ПараметрыФормирования.ТаблицаВидовЦен[ИндексЦены - 1].ВидЦен);
		
	КонецЦикла;
	
	ОбластьШапка.Параметры.Заполнить(ЗначенияПараметров);
	ТабличныйДокумент.Вывести(ОбластьШапка);
	
	ПараметрыФормирования.Вставить("ОбластьГруппа", ОбластьГруппа);
	ПараметрыФормирования.Вставить("ОбластьСтрока", ОбластьСтрока);
	ВывестиГруппуВТабличныйДокументПолотно(СтруктураТаблицДанных.ДеревоНоменклатуры.Строки, ПараметрыФормирования, ТабличныйДокумент);
	
	Если НЕ ПустаяСтрока(ПараметрыФормирования.Описание) Тогда
		
		ЗначенияПараметров.Очистить();
		ЗначенияПараметров.Вставить("Описание", ПараметрыФормирования.Описание);
		ОбластьОписание.Параметры.Заполнить(ЗначенияПараметров);
		ТабличныйДокумент.Вывести(ОбластьОписание);
		
	КонецЕсли;
	
	ТабличныйДокумент.ФиксацияСлева = ПараметрыФормирования.ПоследняяКолонкаЗаголовка;
	
КонецПроцедуры
Показать
Вознаграждение за ответ
Показать полностью
Найденные решения
21. insurgut 207 24.01.21 19:12 Сейчас в теме +0.2 $m
(20) если честно, не видя вашего расширения не понять в чем проблема. Ниже прикрепил расширение с примером доработки печати прайс-листа организации. Все работает. Строки с доработками с комментариями. Проверяйте, в чем различия.
Прикрепленные файлы:
Расширение1.cfe
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. pyrkin_vanya 488 24.01.21 16:33 Сейчас в теме
Воспользуйтесь отладкой. Видимо у вас в ТабличныйДокумент - неопределено.
3. user973528 24.01.21 16:34 Сейчас в теме
(2) Отладка почему то не работает, база файловая, процедура которую я дописываю находится в модуле менеджера на сервере
5. pyrkin_vanya 488 24.01.21 16:40 Сейчас в теме
(3)Запустите из конфигуратора режим предприятия в режиме толстого клиента и поставьте подключение отладки при работе на сервере и фоновых заданиях.
4. insurgut 207 24.01.21 16:39 Сейчас в теме
Через расширение нужно создавать новый макет (создав копию существующего), а не добавлять в расширение существующий макет и редактировать его. В процедуре вывода ПФ соответственно прописывать имя добавленного в расширении макета:
МакетПФ                = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно_Расширение");


По крайней мере так я обошел непонятные ошибки.
6. user973528 24.01.21 16:41 Сейчас в теме
(4) Назначение расширение у меня "Исправление"
7. insurgut 207 24.01.21 16:44 Сейчас в теме
(6) ну и поменяйте на "Адаптация". Вам "ехать" нужно или просто теоретический интерес? :)
8. user973528 24.01.21 16:44 Сейчас в теме
(7) Так а если я поменяю на адаптацию, мне же заново руками придётся прописывать заполнение печатной формы же?
9. insurgut 207 24.01.21 16:45 Сейчас в теме
(8) ничего не нужно прописывать заново, адаптация просто более широкое применение расширения.
10. user973528 24.01.21 16:48 Сейчас в теме
(9) Не понимаю, я сейчас поменял на "Адаптацию", запустил предприятия, моя картинка пропала, которую я просто внёс в уже имеющуюся область, получается же в анотации "вместо", я должен буду в расширении перезаполнять свой новый макет программно
11. insurgut 207 24.01.21 16:49 Сейчас в теме
(10) типовую процедуру печати обязательно добавлять "Вместо". Копировать весь код типовой в свою процедуру в расширении и комментировать что именно исправляете в коде.
12. user973528 24.01.21 17:13 Сейчас в теме
(11) Не взлетает, скопировал макет, прописал я вообщем заполнение, но валится при ошибке заполнения. Я так понял что в структуре он не может найти реквизит
13. user973528 24.01.21 17:17 Сейчас в теме
(11) Почему он не может его найти, если я заменяю одну процедуру, параметры же должны передаваться между Конфигурацией и расширением?
14. insurgut 207 24.01.21 18:10 Сейчас в теме
(13) точнее что за ошибка? Что за реквизит в структуре?
15. user973528 24.01.21 18:13 Сейчас в теме
(14) В типовой процедуре ПараметрыФормирования имеет значение (КоллекцияСтрокДереваЗначений) и заполненные данные, при переходе в процедуру расширения, этот реквизит полностью очищается и заполненные данные в нем сразу становятся "Неопределено"
16. insurgut 207 24.01.21 18:25 Сейчас в теме
(15) нет "перехода" между расширением и конфигурацией, в момент выполнения кода все уже скомпилировано. Пространство общее. Проверьте набор и порядок параметров процедуры, чтобы в расширении он был 1 в 1 как в типовой.

Как сейчас выглядит модуль менеджера полностью?
17. user973528 24.01.21 18:41 Сейчас в теме
(16)
&Вместо("ВывестиГруппуВТабличныйДокументПолотно")
Процедура Расш_ЗаполнитьВВидеПолотно(ПараметрыФормирования, ТабличныйДокумент, СтруктураТаблицДанных)
	
	ТабличныйДокумент	= Новый ТабличныйДокумент;
	ТабличныйДокумент.Область(1, 1, 1, 1).ШиринаКолонки = 2;
	
	МакетПФ				= УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно");
	
	ОбластьЗаголовок	= СоздатьОбластьЗаголовок(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
	ОбластьКИ			= МакетПФ.ПолучитьОбласть("КИ");
	ОбластьКИАвтор		= МакетПФ.ПолучитьОбласть("КИАвтор");
	ОбластьФормирование	= МакетПФ.ПолучитьОбласть("ДатаФормированияИВалюта");
	ОбластьШапка		= СоздатьОбластьШапка(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
	ОбластьГруппа		= МакетПФ.ПолучитьОбласть("Группа");
	ОбластьСтрока		= СоздатьОбластьСтрока(ПараметрыФормирования, МакетПФ);
	ОбластьОписание 	= МакетПФ.ПолучитьОбласть("Описание");
	
	ЗначенияПараметров	= Новый Структура;
	ЗначенияПараметров.Вставить("Заголовок", ПараметрыФормирования.НаименованиеПрайсЛиста);
	
	Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию
		И ЗначениеЗаполнено(ПараметрыФормирования.Логотип) Тогда
		
		ДанныеКартинки = УправлениеНебольшойФирмойСервер.ПолучитьДвоичныеДанныеФайла(ПараметрыФормирования.Логотип);
		Если ЗначениеЗаполнено(ДанныеКартинки) Тогда
			
			ОбластьЗаголовок.Область("Логотип").Картинка = Новый Картинка(ДанныеКартинки);
			
		КонецЕсли;
		
	КонецЕсли;
	
	ОбластьЗаголовок.Параметры.Заполнить(ЗначенияПараметров);
	ТабличныйДокумент.Вывести(ОбластьЗаголовок);
	
	Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию Тогда
		
		ПараметрыСекцииКонтактнаяИнформацияОрганизации(ЗначенияПараметров, ПараметрыФормирования.Организация);
		
		ОбластьКИ.Параметры.Заполнить(ЗначенияПараметров);
		ТабличныйДокумент.Вывести(ОбластьКИ);
		
	КонецЕсли;
	
	Если ПараметрыФормирования.УказатьКонтактыОтветственного Тогда
		
		ПараметрыСекцииКонтактнаяИнформацияАвтора(ЗначенияПараметров, ПараметрыФормирования.Автор);
		
		ОбластьКИАвтор.Параметры.Заполнить(ЗначенияПараметров);
		ТабличныйДокумент.Вывести(ОбластьКИАвтор);
		
	КонецЕсли;
	
	ДатаФормированияИВалюта = СтрокаДатаФормированияИВалюта(ПараметрыФормирования);
	Если НЕ ПустаяСтрока(ДатаФормированияИВалюта) Тогда
		
		ЗначенияПараметров.Очистить();
		ЗначенияПараметров.Вставить("ДатаФормированияИВалюта", ДатаФормированияИВалюта);
		ОбластьФормирование.Параметры.Заполнить(ЗначенияПараметров);
		ТабличныйДокумент.Вывести(ОбластьФормирование);
		
	КонецЕсли;
	
	КоличествоЦен = ПараметрыФормирования.ТаблицаВидовЦен.Количество();
	Для ИндексЦены = 1 По КоличествоЦен Цикл
		
		ЗначенияПараметров.Вставить("ВидЦен_" + Строка(ИндексЦены - 1), ПараметрыФормирования.ТаблицаВидовЦен[ИндексЦены - 1].ВидЦен);
		
	КонецЦикла;
	
	ОбластьШапка.Параметры.Заполнить(ЗначенияПараметров);
	ТабличныйДокумент.Вывести(ОбластьШапка);
	
	ПараметрыФормирования.Вставить("ОбластьГруппа", ОбластьГруппа);
	ПараметрыФормирования.Вставить("ОбластьСтрока", ОбластьСтрока);
	ВывестиГруппуВТабличныйДокументПолотно(СтруктураТаблицДанных.ДеревоНоменклатуры.Строки, ПараметрыФормирования, ТабличныйДокумент);
	
	Если НЕ ПустаяСтрока(ПараметрыФормирования.Описание) Тогда
		
		ЗначенияПараметров.Очистить();
		ЗначенияПараметров.Вставить("Описание", ПараметрыФормирования.Описание);
		ОбластьОписание.Параметры.Заполнить(ЗначенияПараметров);
		ТабличныйДокумент.Вывести(ОбластьОписание);
		
	КонецЕсли;
	
	ТабличныйДокумент.ФиксацияСлева = ПараметрыФормирования.ПоследняяКолонкаЗаголовка;
	    
КонецПроцедуры

&Вместо("СформироватьПрайсЛистОрганизации")
Процедура Расш_СформироватьПрайсЛистОрганизации(ПараметрыФормирования, ФоновоеЗаданиеАдресХранилища = "") Экспорт
	
	Если НЕ ПараметрыФормирования.Свойство("ОтборНоменклатуры") Тогда
		
		ВызватьИсключение НСтр("ru ='Ошибка в начальных параметрах прайс-листа организации'");
		
	КонецЕсли;
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	
	АдаптироватьПараметрыФормирования(ПараметрыФормирования);
	ПостроитьПрайсЛист(ПараметрыФормирования, ТабличныйДокумент);
	
	// Для работы с вкл. параметром РежимОтладки
	ПараметрыФормирования.ТаблицаВидовЦен = Неопределено;
	ПараметрыФормирования.ПредставлениеНоменклатуры = Неопределено;
	
	РезультатВыполнения = Новый Структура;
	РезультатВыполнения.Вставить("ПоследняяКолонкаЗаголовка",	ПараметрыФормирования.ПоследняяКолонкаЗаголовка);
	РезультатВыполнения.Вставить("ПоследняяКолонкаПрайсЛиста",	ПараметрыФормирования.ПоследняяКолонкаПрайсЛиста);
	РезультатВыполнения.Вставить("ИменаКолонок",				ПараметрыФормирования.ИменаКолонок);
	РезультатВыполнения.Вставить("РазмерКартинокБайт",			ПараметрыФормирования.РазмерКартинокБайт);
	РезультатВыполнения.Вставить("ТабличныйДокумент",			ТабличныйДокумент);
	
	ПоместитьВоВременноеХранилище(РезультатВыполнения, ФоновоеЗаданиеАдресХранилища);
	
КонецПроцедуры
Показать
19. insurgut 207 24.01.21 18:54 Сейчас в теме
(17) для чего:
&Вместо("СформироватьПрайсЛистОрганизации")
Процедура Расш_СформироватьПрайсЛистОрганизации(ПараметрыФормирования, ФоновоеЗаданиеАдресХранилища = "") Экспорт


Если в нем ничего не меняется?

Так же не понятно, что изменилось в:
&Вместо("ВывестиГруппуВТабличныйДокументПолотно")
Процедура Расш_ЗаполнитьВВидеПолотно(ПараметрыФормирования, ТабличныйДокумент, СтруктураТаблицДанных)


Макет тот же самый

Безопасный решим в расширении отключен?
20. user973528 24.01.21 19:05 Сейчас в теме
(19)Отключен, даже если прописать мой скопированный макет, оборвется. Параметры формирования не передаются на расширение, вот в чем проблема, из за чего они не передаются я так понять и не могу.

Отладкой смотрел что данные этого параметра заполняются в модуле менеджера, но при переходе на заполнение в моем расширении сразу уходят в «Неопределено»
21. insurgut 207 24.01.21 19:12 Сейчас в теме +0.2 $m
(20) если честно, не видя вашего расширения не понять в чем проблема. Ниже прикрепил расширение с примером доработки печати прайс-листа организации. Все работает. Строки с доработками с комментариями. Проверяйте, в чем различия.
Прикрепленные файлы:
Расширение1.cfe
22. user973528 24.01.21 19:33 Сейчас в теме
(21) У вас тип расширения "Адаптация"?
23. insurgut 207 24.01.21 19:53 Сейчас в теме
(22)
Прикрепленные файлы:
24. user973528 24.01.21 21:41 Сейчас в теме
(23) Честно сказать это какая то магия, скопировал ваш код из модуля менеджера расширения, всё прогнало без ошибок, хотя вот я так же писал как у вас выполнено. Может быть какое-нибудь кеширование у меня проходило, что параметр не передавался на расширение, спасибо большое за помощь, буду дальше разбираться, очень помогли. Появилось хоть какое то представление что такое расширение
18. user973528 24.01.21 18:43 Сейчас в теме
(16) ПараметрыФормирования = Неопределено в моей процедуре почему то, а если не делать "Вместо" то в модуле менеджера типовой печати всё заполняется
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот