- В этой теме 1 ответ, 2 участника, последнее обновление 2 месяца, 3 недели назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как вызвать метод владельца формы в обычных формах 1С без метода «Оповестить»?
Ошибка при выполнении предыдущей подсказки
Метод объекта не обнаружен (Оповестить)
В обычных формах (толстый клиент, обычные формы) у объекта формы нет метода Оповестить — это метод управляемых форм.
Для обычных форм (ОФ) оповестить форму владельца можно так:
1. При открытии формы выбора передайте в параметры ссылку на форму владельца (например, в параметр «ВладелецФормы»).
2. В форме выбора вызовите у формы владельца нужный метод напрямую через эту ссылку.
Пример:
В форме владельца:
|
1 2 3 4 5 6 7 8 9 |
Процедура ОткрытьФормуВыбора() Параметры = Новый Структура; Параметры.Вставить("ВладелецФормы", ЭтаФорма); ОткрытьФорму("Справочник.Справочник1.ФормаВыбора", Параметры); КонецПроцедуры Процедура ОбработатьВыбор(Данные) Сообщить("Получены данные из формы выбора: " + Данные.ВыбранноеЗначение); КонецПроцедуры |
В форме выбора:
|
1 2 3 4 5 6 7 8 9 |
Процедура КнопкаВыбратьНажатие(Кнопка) Если Параметры.Свойство("ВладелецФормы") Тогда Владелец = Параметры.ВладелецФормы; Если Владелец <> Неопределено Тогда Владелец.ОбработатьВыбор(Новый Структура("ВыбранноеЗначение", Ссылка)); КонецЕсли; КонецЕсли; ЭтаФорма.Закрыть(); КонецПроцедуры |
То есть просто вызываете метод формы владельца напрямую, передавая нужные данные.
Если нужно оповестить именно в событии ПередЗакрытием формы выбора, то там аналогично:
|
1 2 3 4 5 6 7 8 |
Процедура ПередЗакрытием(Отказ) Если Параметры.Свойство("ВладелецФормы") Тогда Владелец = Параметры.ВладелецФормы; Если Владелец <> Неопределено Тогда Владелец.ОбработатьВыбор(Новый Структура("ВыбранноеЗначение", Ссылка)); КонецЕсли; КонецЕсли; КонецПроцедуры |
Метод Оповестить — это для управляемых форм, в обычных формах нужно напрямую вызывать методы формы владельца через переданную ссылку.
Если форма выбора открывается через метод ОткрытьФорму, то параметры можно передать в виде структуры, и в форме выбора они доступны через переменную Параметры.
Такой способ — самый простой и надёжный для обычных форм.