Ошибка при вызове метода контекста получитьмакет 1с

Обновлено: 05.07.2024

"Нет. Дело в том что при отладки ВПФ. Ругается на параметр Оргонозация, который находится в общем модуле конфы.<br><br>Вот.<br><br>// Процедура предназначена для преобразования номера документа.<br>//<br>// Параметры:<br>// Документ - (ДокументСсылка), документ, чей номер надо получить для печати.<br>//<br>// Возвращаемое значение.<br>// Строка - номер документа для печати<br>//<br>Функция ПолучитьНомерНаПечать(Документ, МассивПрефиксов = Неопределено) Экспорт<br><br> Если Документ = Неопределено Тогда <br> Возврат 0;<br> КонецЕсли;<br><br> Номер = СокрЛП(Документ.Номер);<br> Префикс = """";<br> Если МассивПрефиксов = Неопределено Тогда<br> <br> Организация = Неопределено;<br> ПодразделениеОрганизации = Неопределено;<br> <br> Если ТипЗнч(Документ) = Тип("ВыборкаИзРезультатаЗапроса")<br> ИЛИ ТипЗнч(Документ) = Тип("Структура") Тогда<br><br> ВОТ ЗДЕСЬ> Организация = Документ.Организация;<br> <br> Иначе<br><br> МетаданныеДокумента = Документ.Метаданные();<br><br> Если ЕстьРеквизитДокумента("Организация", МетаданныеДокумента) Тогда<br><br> Организация = Документ.Организация;<br><br> КонецЕсли;<br> <br> КонецЕсли;<br> <br> МассивПрефиксовДляОбхода = СформироватьМассивПрефиксовДляРИБИОрганизации(Организация);<br> <br> Иначе<br> <br> МассивПрефиксовДляОбхода = МассивПрефиксов;<br> <br> КонецЕсли;<br> <br> Для Каждого ТекущийПрефикс ИЗ МассивПрефиксовДляОбхода Цикл<br> <br> // удаление префикса из номера документа<br> Если Найти(Номер, ТекущийПрефикс)=1 Тогда <br> Номер = Сред(Номер, СтрДлина(ТекущийПрефикс)+1);<br> КонецЕсли;<br> <br> // так же, может остаться "минус" впереди<br> Если Лев(Номер, 1) = "-" Тогда<br> Номер = Сред(Номер, 2);<br> КонецЕсли;<br> <br> // удаление ведущих нулей<br> Пока Лев(Номер, 1)="0" Цикл<br> Номер = Сред(Номер, 2);<br> КонецЦикла;<br> КонецЦикла;<br><br> Возврат Номер;<br><br>КонецФункции // ПолучитьНомерНаПечать()"

верно подмечено,и должен быть реквизит с названием СсылкаНаОбъект и типом нужного объекта

"> Если ТипЗнч(Документ) = Тип("ВыборкаИзРезультатаЗапроса")<br>> ИЛИ ТипЗнч(Документ) = Тип("Структура") Тогда<br>> <br>> ВОТ ЗДЕСЬ> Организация = Документ.Организация;<br>Т.е. вы передали либо результат запрос либо структуру. Если это структура создайте там ключ Организация. Если результат запроса, то в Выбрать надо еще и Организацию добавить."


Т.е. обращение происходит непосредственно к макету внутри самой конфигурации, а мне нужно обратиться именно к своему макету в этой внешней обработке!
Подскажите пожалуйста, как это сделать для управляемых форм?

В форме внешней обработки нужна серверная контекстная процедура с таким кодом

&НаСервере
//.
РеквизитФормыВЗначение(Объект).ПолучитьМакет("ИмяМакета")
//.

Благодарю за помощь, сделал вот так и заработало:
Макет = ПолучитьМакетОбработки();
СхемаКомпоновкиДанных = Макет;
.

Ещё такой вопрос, может кто сможет подсказать, ещё вначале сохранял обработку "ПечатьЭтикетокИЦенников" через правую кнопку "Сохранить как внешнюю обработку", но есть некоторый код, который исполняется в Модуле менеджера встроеной обработки, вопрос, как его перенести во внешнюю обработку? Просто копированием? Тогда другой вопрос, может ли код из модуля менеджера благополучно работать в модуле объекта (в частном случае в модуле внешней обработки)?

(5) markovki, Будет работать, главное чтобы пересечений не было.

(6) mylogin, о каких пересечениях идет речь, поясните пожалуйста?

(7) markovki, Например в коде модуля менеджера используются переменные с такими же именами, как и у реквизитов обработки и т.п.

В общем получилось, но не совсем.
Всё-таки есть обращения в типовой макет.
Что я сделал. скопировал текст модуля менеджера типовой обработки в модуль объекта внешней обработки
И чтобы понять есть ли где обращение к типовому макету переименовал свой макет вместо "ПоляШаблона" назвал его "ПоляШаблона2"
В результате выдало ошибку:


и все нормально получала (даже с учетом того, что макеты одинаково называются)

(11) AJlEKCA, спасибо за ответ, но на управляемых формах, при использовании такой конструкции даже при сохранении выдает ошибку:


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

(12) markovki, код из (9) опять-таки ссылается на макет встроенной обработки

(13) AJlEKCA, так и я об этом, пытался сделать по аналогии, вот так:

Но выдает ошибку:

(16) AJlEKCA, насчет СтруктурыНастроек сказать ничего не могу, т.к. типовой механизм достаточно сложный, чтобы понять заполнен он в действительности или нет.
Вообще всё началось с того, что я скопировал реальную базу, разрешил редактирование, переделал макет "ПоляШаблона" этой обработки, добавил в форму одно поле и одну строчку кода для его заполнения, и естесственно всё заработало, но вот уже практически весь день пытаюсь вырвать этот механизм во внешнюю обработку, пока что он постоянно ссылается на типовой макет, не получается искоренить это "явление" полностью)

(15) tarantool, да собственно никуда он не ссылается, потому как нет такого реквизита.
Сделал по примеру 2-го и 3-го постов, просто добавил код

(18) AJlEKCA, как ни странно, но ведь заработало?!
Добавил реквизит во внешнюю обработку со ссылкой на саму себя, если я вас правильно понял)

Просто бывает такое. Что делаешь внешнюю обработку на основании внутренней(сохранить как внешнюю). А реквизит формы объект по прежнему ссылается на внутреннюю, и тут нужно поменять, чтобы ссылался на внешнюю.

(19) tarantool, согласен, но опыт у меня не большой и тем более сделать это на управлямых формах как видите пока что не получается

(19) tarantool,
Реквизит "Объект" управляемой формы внешней обработки ссылается на сам объект ВнешняяОбработка.<ИмяЭтойСамойВнешнейОбработки>
Именно благодаря этому вы и смогли получить макет из внешней обработки.

В общем вопрос остался открытым, как переделать обращение к внешнему макету?
Здесь:

(24) markovki, я бы посоветовала для начала разобраться с "СтруктураНастроек". посмотрите что и чем заполняется во внутреннем отчете и уже от этого отталкивайтесь во внешнем. то что Вы делаете сейчас называется "пальцем в небо"

Преподаватель 1С
Санкт-Петербург
зарплата от 100 000 руб. до 120 000 руб.
Временный (на проект)

Читайте также: