Как обратиться к макету внешней обработки

1. markovki 19 15.11.13 12:43 Сейчас в теме
День добрый, уважаемые формумчане. Делаю внешнюю обработку на основе типовой "ПечатьЦенниковИЭтикеток" в Рознице.
Переделал макет "Поля шаблона" во внешней обработке, в форме внешней обработки есть код:
СхемаКомпоновкиДанных = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("ПоляШаблона");

Т.е. обращение происходит непосредственно к макету внутри самой конфигурации, а мне нужно обратиться именно к своему макету в этой внешней обработке!
Подскажите пожалуйста, как это сделать для управляемых форм?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. zamichnik 15.11.13 13:05 Сейчас в теме
В форме внешней обработки нужна серверная контекстная процедура с таким кодом
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
СхемаКомпоновкиДанных = ОбработкаОбъект.ПолучитьМакет("ПоляШаблона");
kat888; markovki; +2 Ответить
3. NordDron 15.11.13 13:06 Сейчас в теме
&НаСервере
//...
РеквизитФормыВЗначение(Объект).ПолучитьМакет("ИмяМакета")
//...
kat888; markovki; +2 Ответить
4. markovki 19 15.11.13 13:13 Сейчас в теме
Благодарю за помощь, сделал вот так и заработало:
Макет = ПолучитьМакетОбработки();
СхемаКомпоновкиДанных = Макет;
...

&НаСервере
Функция ПолучитьМакетОбработки()
возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПоляШаблона");
Конецфункции
5. markovki 19 15.11.13 14:52 Сейчас в теме
Ещё такой вопрос, может кто сможет подсказать, ещё вначале сохранял обработку "ПечатьЭтикетокИЦенников" через правую кнопку "Сохранить как внешнюю обработку", но есть некоторый код, который исполняется в Модуле менеджера встроеной обработки, вопрос, как его перенести во внешнюю обработку? Просто копированием? Тогда другой вопрос, может ли код из модуля менеджера благополучно работать в модуле объекта (в частном случае в модуле внешней обработки)?
6. mylogin 107 15.11.13 15:02 Сейчас в теме
(5) markovki, Будет работать, главное чтобы пересечений не было.
7. markovki 19 15.11.13 15:07 Сейчас в теме
(6) mylogin, о каких пересечениях идет речь, поясните пожалуйста?
8. mylogin 107 15.11.13 15:37 Сейчас в теме
(7) markovki, Например в коде модуля менеджера используются переменные с такими же именами, как и у реквизитов обработки и т.п.
markovki; +1 Ответить
10. markovki 19 15.11.13 15:42 Сейчас в теме
(8) mylogin, понятно, спасибо!
9. markovki 19 15.11.13 15:41 Сейчас в теме
В общем получилось, но не совсем.
Всё-таки есть обращения в типовой макет.
Что я сделал... скопировал текст модуля менеджера типовой обработки в модуль объекта внешней обработки
И чтобы понять есть ли где обращение к типовому макету переименовал свой макет вместо "ПоляШаблона" назвал его "ПоляШаблона2"
В результате выдало ошибку:
{ВнешняяОбработка.ПечатьЭтикетокИЦенников.МодульОбъекта(54)}: Ошибка при вызове метода контекста (ПолучитьМакет)
	СхемаКомпоновкиДанных = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет(СтруктураНастроек.ИмяМакетаСхемыКомпоновкиДанных);
по причине:
Недопустимое значение параметра (параметр номер '1')

И вот снова возникает вопрос, как в данной строке перенаправить обращение к моему макету внешней обработки?
11. AJlEKCA 15.11.13 15:45 Сейчас в теме
(9) markovki, я писала
Макет = ПолучитьМакет("ПФ_MXL_АктСверкиВзаимныхРасчетов");

и все нормально получала (даже с учетом того, что макеты одинаково называются)
12. markovki 19 15.11.13 15:50 Сейчас в теме
(11) AJlEKCA, спасибо за ответ, но на управляемых формах, при использовании такой конструкции даже при сохранении выдает ошибку:
{Форма.Форма.Форма(857,27)}: Процедура или функция с указанным именем не определена (ПолучитьМакет)
		СхемаКомпоновкиДанных = <<?>>ПолучитьМакет("ПоляШаблона2"); (Проверка: Сервер)

Но собственно к макету у меня обратиться получилось в данном случае, теперь же ошибки возникают, в коде, который я скопировал из модуля менеджера типовой обработки в модуль внешней обработки, ошибку описывал в 9-м посте
13. AJlEKCA 15.11.13 16:04 Сейчас в теме
(12) markovki, код из (9) опять-таки ссылается на макет встроенной обработки
14. markovki 19 15.11.13 16:09 Сейчас в теме
(13) AJlEKCA, так и я об этом, пытался сделать по аналогии, вот так:
...
ПМСН = ПМСНастроек();
СхемаКомпоновкиДанных = ПМСН;
...

&НаСервере
Функция ПМСНастроек()       
	возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет(СтруктураНастроек.ИмяМакетаСхемыКомпоновкиДанных);               
Конецфункции
Показать


Но выдает ошибку:
{ВнешняяОбработка.ПечатьЭтикетокИЦенников.МодульОбъекта(160,57)}: Переменная не определена (СтруктураНастроек)
	возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет(<<?>>СтруктураНастроек.ИмяМакетаСхемыКомпоновкиДанных);                (Проверка: Сервер)
{ВнешняяОбработка.ПечатьЭтикетокИЦенников.МодульОбъекта(160,10)}: Процедура или функция с указанным именем не определена (РеквизитФормыВЗначение)
	возврат <<?>>РеквизитФормыВЗначение("Объект").ПолучитьМакет(СтруктураНастроек.ИмяМакетаСхемыКомпоновкиДанных);                (Проверка: Сервер)
16. AJlEKCA 15.11.13 16:17 Сейчас в теме
(14) markovki, так а СтруктураНастроек заполнена?
21. markovki 19 15.11.13 16:36 Сейчас в теме
(16) AJlEKCA, насчет СтруктурыНастроек сказать ничего не могу, т.к. типовой механизм достаточно сложный, чтобы понять заполнен он в действительности или нет.
Вообще всё началось с того, что я скопировал реальную базу, разрешил редактирование, переделал макет "ПоляШаблона" этой обработки, добавил в форму одно поле и одну строчку кода для его заполнения, и естесственно всё заработало, но вот уже практически весь день пытаюсь вырвать этот механизм во внешнюю обработку, пока что он постоянно ссылается на типовой макет, не получается искоренить это "явление" полностью)
15. tarantool 15.11.13 16:11 Сейчас в теме
А реквизит Объект на что ссылается?
17. markovki 19 15.11.13 16:23 Сейчас в теме
(15) tarantool, да собственно никуда он не ссылается, потому как нет такого реквизита.
Сделал по примеру 2-го и 3-го постов, просто добавил код
18. AJlEKCA 15.11.13 16:26 Сейчас в теме
(17) markovki, так а зачем было это делать? раз нет
20. markovki 19 15.11.13 16:31 Сейчас в теме
(18) AJlEKCA, как ни странно, но ведь заработало?!
Добавил реквизит во внешнюю обработку со ссылкой на саму себя, если я вас правильно понял)
19. tarantool 15.11.13 16:26 Сейчас в теме
Просто бывает такое. Что делаешь внешнюю обработку на основании внутренней(сохранить как внешнюю). А реквизит формы объект по прежнему ссылается на внутреннюю, и тут нужно поменять, чтобы ссылался на внешнюю.
22. markovki 19 15.11.13 16:40 Сейчас в теме
(19) tarantool, согласен, но опыт у меня не большой и тем более сделать это на управлямых формах как видите пока что не получается
23. zamichnik 15.11.13 16:50 Сейчас в теме
(19) tarantool,
Реквизит "Объект" управляемой формы внешней обработки ссылается на сам объект ВнешняяОбработка.<ИмяЭтойСамойВнешнейОбработки>
Именно благодаря этому вы и смогли получить макет из внешней обработки.
jushkaaa; +1 Ответить
24. markovki 19 15.11.13 16:53 Сейчас в теме
В общем вопрос остался открытым, как переделать обращение к внешнему макету?
Здесь:
СтруктураНастроек = Обработки.ПечатьЭтикетокИЦенников.ПолучитьПустуюСтруктуруНастроек();


и здесь:
СхемаКомпоновкиДанных = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет(СтруктураНастроек.ИмяМакетаСхемыКомпоновкиДанных);
25. AJlEKCA 15.11.13 17:01 Сейчас в теме
(24) markovki, я бы посоветовала для начала разобраться с "СтруктураНастроек". посмотрите что и чем заполняется во внутреннем отчете и уже от этого отталкивайтесь во внешнем. то что Вы делаете сейчас называется "пальцем в небо"
26. Lerusena 9 21.06.17 14:58 Сейчас в теме
Огромнейшее человеческое спасибо!!! очень помогло!
27. vkozak 01.06.20 10:08 Сейчас в теме
Оставьте свое сообщение

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