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

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

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

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

    МакетПФ = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно");
    ОбластьТест = МакетПФ.ПолучитьОбласть("Тест");
    ОбластьТест.Параметры.Тест = "Тест";
    ТабличныйДокумент.Вывести(ОбластьТест);

    КонецПроцедуры
```

Сама процедура типовая вот

```1c
    Процедура ЗаполнитьВВидеПолотно(ПараметрыФормирования, ТабличныйДокумент, СтруктураТаблицДанных)

    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.Область(1, 1, 1, 1).ШиринаКолонки = 2;

    МакетПФ = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно");

    ОбластьЗаголовок = СоздатьОбластьЗаголовок(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
    ОбластьКИ = МакетПФ.ПолучитьОбласть("КИ");
    ОбластьКИАвтор = МакетПФ.ПолучитьОбласть("КИАвтор");
    ОбластьФормирование = МакетПФ.ПолучитьОбласть("ДатаФормированияИВалюта");
    ОбластьШапка = СоздатьОбластьШапка(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
    ОбластьГруппа = МакетПФ.ПолучитьОбласть("Группа");
    ОбластьСтрока = СоздатьОбластьСтрока(ПараметрыФормирования, МакетПФ);
    ОбластьОписание = МакетПФ.ПолучитьОбласть("Описание");

    ЗначенияПараметров = Новый Структура;
    ЗначенияПараметров.Вставить("Заголовок", ПараметрыФормирования.НаименованиеПрайсЛиста);

    Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию
    И ЗначениеЗаполнено(ПараметрыФормирования.Логотип) Тогда

    ДанныеКартинки = УправлениеНебольшойФирмойСервер.ПолучитьДвоичныеДанныеФайла(ПараметрыФормирования.Логотип);
    Если ЗначениеЗаполнено(ДанныеКартинки) Тогда

    ОбластьЗаголовок.Область("Логотип").Картинка = Новый Картинка(ДанныеКартинки);

    КонецЕсли;

    КонецЕсли;

    ОбластьЗаголовок.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьЗаголовок);

    Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию Тогда

    ПараметрыСекцииКонтактнаяИнформацияОрганизации(ЗначенияПараметров, ПараметрыФормирования.Организация);

    ОбластьКИ.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьКИ);

    КонецЕсли;

    Если ПараметрыФормирования.УказатьКонтактыОтветственного Тогда

    ПараметрыСекцииКонтактнаяИнформацияАвтора(ЗначенияПараметров, ПараметрыФормирования.Автор);

    ОбластьКИАвтор.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьКИАвтор);

    КонецЕсли;

    ДатаФормированияИВалюта = СтрокаДатаФормированияИВалюта(ПараметрыФормирования);
    Если НЕ ПустаяСтрока(ДатаФормированияИВалюта) Тогда

    ЗначенияПараметров.Очистить();
    ЗначенияПараметров.Вставить("ДатаФормированияИВалюта", ДатаФормированияИВалюта);
    ОбластьФормирование.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьФормирование);

    КонецЕсли;

    КоличествоЦен = ПараметрыФормирования.ТаблицаВидовЦен.Количество();
    Для ИндексЦены = 1 По КоличествоЦен Цикл

    ЗначенияПараметров.Вставить("ВидЦен_" + Строка(ИндексЦены - 1), ПараметрыФормирования.ТаблицаВидовЦен[ИндексЦены - 1].ВидЦен);

    КонецЦикла;

    ОбластьШапка.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьШапка);

    ПараметрыФормирования.Вставить("ОбластьГруппа", ОбластьГруппа);
    ПараметрыФормирования.Вставить("ОбластьСтрока", ОбластьСтрока);
    ВывестиГруппуВТабличныйДокументПолотно(СтруктураТаблицДанных.ДеревоНоменклатуры.Строки, ПараметрыФормирования, ТабличныйДокумент);

    Если НЕ ПустаяСтрока(ПараметрыФормирования.Описание) Тогда

    ЗначенияПараметров.Очистить();
    ЗначенияПараметров.Вставить("Описание", ПараметрыФормирования.Описание);
    ОбластьОписание.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьОписание);

    КонецЕсли;

    ТабличныйДокумент.ФиксацияСлева = ПараметрыФормирования.ПоследняяКолонкаЗаголовка;

    КонецПроцедуры
```
---
если честно, не видя вашего расширения не понять в чем проблема. Ниже прикрепил расширение с примером доработки печати прайс-листа организации. Все работает. Строки с доработками с комментариями. Проверяйте, в чем различия.
---
Воспользуйтесь отладкой. Видимо у вас в ТабличныйДокумент - неопределено.
---
Отладка почему то не работает, база файловая, процедура которую я дописываю находится в модуле менеджера на сервере
---
Запустите из конфигуратора режим предприятия в режиме толстого клиента и поставьте подключение отладки при работе на сервере и фоновых заданиях.
---
Через расширение нужно создавать новый макет (создав копию существующего), а не добавлять в расширение существующий макет и редактировать его. В процедуре вывода ПФ соответственно прописывать имя добавленного в расширении макета:

```1c
    МакетПФ = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно_Расширение");
```

По крайней мере так я обошел непонятные ошибки.
---
Назначение расширение у меня "Исправление"
---
ну и поменяйте на "Адаптация". Вам "ехать" нужно или просто теоретический интерес? :)
---
Так а если я поменяю на адаптацию, мне же заново руками придётся прописывать заполнение печатной формы же?
---
ничего не нужно прописывать заново, адаптация просто более широкое применение расширения.
---
Не понимаю, я сейчас поменял на "Адаптацию", запустил предприятия, моя картинка пропала, которую я просто внёс в уже имеющуюся область, получается же в анотации "вместо", я должен буду в расширении перезаполнять свой новый макет программно
---
типовую процедуру печати обязательно добавлять "Вместо". Копировать весь код типовой в свою процедуру в расширении и комментировать что именно исправляете в коде.
---
Не взлетает, скопировал макет, прописал я вообщем заполнение, но валится при ошибке заполнения. Я так понял что в структуре он не может найти реквизит
---
Почему он не может его найти, если я заменяю одну процедуру, параметры же должны передаваться между Конфигурацией и расширением?
---
точнее что за ошибка? Что за реквизит в структуре?
---
В типовой процедуре ПараметрыФормирования имеет значение (КоллекцияСтрокДереваЗначений) и заполненные данные, при переходе в процедуру расширения, этот реквизит полностью очищается и заполненные данные в нем сразу становятся "Неопределено"
---
нет "перехода" между расширением и конфигурацией, в момент выполнения кода все уже скомпилировано. Пространство общее. Проверьте набор и порядок параметров процедуры, чтобы в расширении он был 1 в 1 как в типовой.

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

    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.Область(1, 1, 1, 1).ШиринаКолонки = 2;

    МакетПФ = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПрайсЛистыОрганизации.ПФ_MXL_Полотно");

    ОбластьЗаголовок = СоздатьОбластьЗаголовок(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
    ОбластьКИ = МакетПФ.ПолучитьОбласть("КИ");
    ОбластьКИАвтор = МакетПФ.ПолучитьОбласть("КИАвтор");
    ОбластьФормирование = МакетПФ.ПолучитьОбласть("ДатаФормированияИВалюта");
    ОбластьШапка = СоздатьОбластьШапка(ПараметрыФормирования, ТабличныйДокумент, МакетПФ);
    ОбластьГруппа = МакетПФ.ПолучитьОбласть("Группа");
    ОбластьСтрока = СоздатьОбластьСтрока(ПараметрыФормирования, МакетПФ);
    ОбластьОписание = МакетПФ.ПолучитьОбласть("Описание");

    ЗначенияПараметров = Новый Структура;
    ЗначенияПараметров.Вставить("Заголовок", ПараметрыФормирования.НаименованиеПрайсЛиста);

    Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию
    И ЗначениеЗаполнено(ПараметрыФормирования.Логотип) Тогда

    ДанныеКартинки = УправлениеНебольшойФирмойСервер.ПолучитьДвоичныеДанныеФайла(ПараметрыФормирования.Логотип);
    Если ЗначениеЗаполнено(ДанныеКартинки) Тогда

    ОбластьЗаголовок.Область("Логотип").Картинка = Новый Картинка(ДанныеКартинки);

    КонецЕсли;

    КонецЕсли;

    ОбластьЗаголовок.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьЗаголовок);

    Если ПараметрыФормирования.ВыводитьКонтактнуюИнформацию Тогда

    ПараметрыСекцииКонтактнаяИнформацияОрганизации(ЗначенияПараметров, ПараметрыФормирования.Организация);

    ОбластьКИ.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьКИ);

    КонецЕсли;

    Если ПараметрыФормирования.УказатьКонтактыОтветственного Тогда

    ПараметрыСекцииКонтактнаяИнформацияАвтора(ЗначенияПараметров, ПараметрыФормирования.Автор);

    ОбластьКИАвтор.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьКИАвтор);

    КонецЕсли;

    ДатаФормированияИВалюта = СтрокаДатаФормированияИВалюта(ПараметрыФормирования);
    Если НЕ ПустаяСтрока(ДатаФормированияИВалюта) Тогда

    ЗначенияПараметров.Очистить();
    ЗначенияПараметров.Вставить("ДатаФормированияИВалюта", ДатаФормированияИВалюта);
    ОбластьФормирование.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьФормирование);

    КонецЕсли;

    КоличествоЦен = ПараметрыФормирования.ТаблицаВидовЦен.Количество();
    Для ИндексЦены = 1 По КоличествоЦен Цикл

    ЗначенияПараметров.Вставить("ВидЦен_" + Строка(ИндексЦены - 1), ПараметрыФормирования.ТаблицаВидовЦен[ИндексЦены - 1].ВидЦен);

    КонецЦикла;

    ОбластьШапка.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьШапка);

    ПараметрыФормирования.Вставить("ОбластьГруппа", ОбластьГруппа);
    ПараметрыФормирования.Вставить("ОбластьСтрока", ОбластьСтрока);
    ВывестиГруппуВТабличныйДокументПолотно(СтруктураТаблицДанных.ДеревоНоменклатуры.Строки, ПараметрыФормирования, ТабличныйДокумент);

    Если НЕ ПустаяСтрока(ПараметрыФормирования.Описание) Тогда

    ЗначенияПараметров.Очистить();
    ЗначенияПараметров.Вставить("Описание", ПараметрыФормирования.Описание);
    ОбластьОписание.Параметры.Заполнить(ЗначенияПараметров);
    ТабличныйДокумент.Вывести(ОбластьОписание);

    КонецЕсли;

    ТабличныйДокумент.ФиксацияСлева = ПараметрыФормирования.ПоследняяКолонкаЗаголовка;

    КонецПроцедуры

    &Вместо("СформироватьПрайсЛистОрганизации")
    Процедура Расш_СформироватьПрайсЛистОрганизации(ПараметрыФормирования, ФоновоеЗаданиеАдресХранилища = ") Экспорт

    Если НЕ ПараметрыФормирования.Свойство("ОтборНоменклатуры") Тогда

    ВызватьИсключение НСтр("ru ='Ошибка в начальных параметрах прайс-листа организации'");

    КонецЕсли;

    ТабличныйДокумент = Новый ТабличныйДокумент;

    АдаптироватьПараметрыФормирования(ПараметрыФормирования);
    ПостроитьПрайсЛист(ПараметрыФормирования, ТабличныйДокумент);

    // Для работы с вкл. параметром РежимОтладки
    ПараметрыФормирования.ТаблицаВидовЦен = Неопределено;
    ПараметрыФормирования.ПредставлениеНоменклатуры = Неопределено;

    РезультатВыполнения = Новый Структура;
    РезультатВыполнения.Вставить("ПоследняяКолонкаЗаголовка", ПараметрыФормирования.ПоследняяКолонкаЗаголовка);
    РезультатВыполнения.Вставить("ПоследняяКолонкаПрайсЛиста", ПараметрыФормирования.ПоследняяКолонкаПрайсЛиста);
    РезультатВыполнения.Вставить("ИменаКолонок", ПараметрыФормирования.ИменаКолонок);
    РезультатВыполнения.Вставить("РазмерКартинокБайт", ПараметрыФормирования.РазмерКартинокБайт);
    РезультатВыполнения.Вставить("ТабличныйДокумент", ТабличныйДокумент);

    ПоместитьВоВременноеХранилище(РезультатВыполнения, ФоновоеЗаданиеАдресХранилища);

    КонецПроцедуры
```
---
для чего:

```1c
    &Вместо("СформироватьПрайсЛистОрганизации")
    Процедура Расш_СформироватьПрайсЛистОрганизации(ПараметрыФормирования, ФоновоеЗаданиеАдресХранилища = ") Экспорт
```

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

Так же не понятно, что изменилось в:

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

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

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

Отладкой смотрел что данные этого параметра заполняются в модуле менеджера, но при переходе на заполнение в моем расширении сразу уходят в «Неопределено»
---
если честно, не видя вашего расширения не понять в чем проблема. Ниже прикрепил расширение с примером доработки печати прайс-листа организации. Все работает. Строки с доработками с комментариями. Проверяйте, в чем различия.
---
У вас тип расширения "Адаптация"?
---
Честно сказать это какая то магия, скопировал ваш код из модуля менеджера расширения, всё прогнало без ошибок, хотя вот я так же писал как у вас выполнено. Может быть какое-нибудь кеширование у меня проходило, что параметр не передавался на расширение, спасибо большое за помощь, буду дальше разбираться, очень помогли. Появилось хоть какое то представление что такое расширение
---
ПараметрыФормирования = Неопределено в моей процедуре почему то, а если не делать "Вместо" то в модуле менеджера типовой печати всё заполняется