Вызвать процедуру формы ПередЗаписью программно из другого модуля.
База БП 3.0. В другом модуле (внешней обработки) я получил СправочникОбъект. Необходимо его просто перезаписать выполнив подобие процедуры ПередЗаписью (та, что находится в модуле формы справочника). Проблема в том, что у меня нет формы. При попытке её получить в модуле внешней обработки, пишет ошибку при проверке синтаксиса.
Мой код:
Ошибка: {ВнешняяОбработка.ЗагрузкаИзРеестраДляПЖС.Форма.Форма.Форма(178,23)}: Процедура или функция с указанным именем не определена (ПолучитьФорму)
ФормаСправочника = <<?>>ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", новый Структура("Ключ",КонтрагентОбъект.Ссылка)); (Проверка: Сервер)
Мой код:
ФормаСправочника = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", новый Структура("Ключ", КонтрагентОбъект.Ссылка));
УправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере(ФормаСправочника, КонтрагентОбъект, ложь);
КонтрагентОбъект.Записать();
Ошибка: {ВнешняяОбработка.ЗагрузкаИзРеестраДляПЖС.Форма.Форма.Форма(178,23)}: Процедура или функция с указанным именем не определена (ПолучитьФорму)
ФормаСправочника = <<?>>ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", новый Структура("Ключ",КонтрагентОбъект.Ссылка)); (Проверка: Сервер)
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
(1) Решил не заморачиваться и обошёл более быстрым, но менее правильным путём (так как мне это нужно единоразово), просто перезаписав элементы справочника методом формы:
&НаКлиенте
Процедура Команда1(Команда)
Для каждого элем из ТаблицаСсылокНаЭлементыСправочника цикл // ТаблицаСсылок - реквизит формы
ФормаСправочника = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", новый Структура("Ключ", элем.Ссылка));
ФормаСправочника.Записать();
КонецЦикла;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Решил не заморачиваться и обошёл более быстрым, но менее правильным путём (так как мне это нужно единоразово), просто перезаписав элементы справочника методом формы:
&НаКлиенте
Процедура Команда1(Команда)
Для каждого элем из ТаблицаСсылокНаЭлементыСправочника цикл // ТаблицаСсылок - реквизит формы
ФормаСправочника = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", новый Структура("Ключ", элем.Ссылка));
ФормаСправочника.Записать();
КонецЦикла;
КонецПроцедуры
Показать
1. И не получится. Нет формы - нет и её контекста. ПолучитьФорму() на сервере не доступно.
2. Вам этот обработчик ни к чему, он реализован для того, чтобы осуществить проверку без закрытия формы. А формы у вас нет, и проверять нечего.
Что там в этом обработчике такого, что вам надо проверять в Объекте?
2. Вам этот обработчик ни к чему, он реализован для того, чтобы осуществить проверку без закрытия формы. А формы у вас нет, и проверять нечего.
Что там в этом обработчике такого, что вам надо проверять в Объекте?
(2) Там табличная часть с контактной информацией. Она не заполнена скрытыми техническими реквизитами. Этот обработчик как раз их заполняет автоматически. Видимо придётся тогда туда отладчиком проваливаться и собирать по кускам механизм (или обращение к нему через экспортные модули).
если нужно прям повторить всё-всё, то и повторяйте всё-все...
0) наверняка в обработке есть хоть какая-то форма....
1) вот в ней создавайте реквизит ОбъектСправочника, невидимую группу "КонтактнаяИнформация" и т.д.
(и все служебные реквизиты, если они есть в оригинальной форме, а не создаются программно)
2) сначала читайте объект, в реквизит ОбъектСправочника, потом запускайте то что находится в процедурах ПриСозданииНаСервере и/или ПриЧтенииНасервере и т.д.
3) а потом все обратные процедуры: УправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере и т.д.
т.е. воссоздайте все механизмы но в контексте своей формы...
PS возможно можно обойтись без реквизита ОбъектСправочника, т.е. пользоваться только переменной, результатом ПолучитьОбъект()...
а вот другие элементы придётся всё же создать...
0) наверняка в обработке есть хоть какая-то форма....
1) вот в ней создавайте реквизит ОбъектСправочника, невидимую группу "КонтактнаяИнформация" и т.д.
(и все служебные реквизиты, если они есть в оригинальной форме, а не создаются программно)
2) сначала читайте объект, в реквизит ОбъектСправочника, потом запускайте то что находится в процедурах ПриСозданииНаСервере и/или ПриЧтенииНасервере и т.д.
3) а потом все обратные процедуры: УправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере и т.д.
т.е. воссоздайте все механизмы но в контексте своей формы...
PS возможно можно обойтись без реквизита ОбъектСправочника, т.е. пользоваться только переменной, результатом ПолучитьОбъект()...
а вот другие элементы придётся всё же создать...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот