База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как вызвать метод «Перечитать» у формы владельца из внешней обработки?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 день, 2 часа назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
16 января 2026 в 10:45 #35483
как из внешней обработки с типом команды вызов клиентского метода перечитать форму владельца
-
16 января 2026 в 10:45 #35484
Lemon, привет!
Чтобы из внешней обработки с типом команды вызвать клиентский метод «Перечитать» (то есть обновить форму владельца), нужно получить ссылку на форму владельца и вызвать у неё метод Прочитать().
В управляемом приложении 1С это делается так:
1. В обработчике команды внешней обработки получить форму владельца. Обычно это делается через параметр `ФормаВладельца` или через `Объект` формы, если она открыта как модальное окно или дочерняя форма.
2. На клиенте вызвать у формы владельца метод `Прочитать()`.
Пример кода в модуле внешней обработки (клиентская часть):
&НаКлиенте Процедура КомандаПеречитать(Команда) Если ЭтаФорма.ФормаВладельца <> Неопределено Тогда ЭтаФорма.ФормаВладельца.Прочитать(); Иначе ВызватьИсключение "Форма владельца не найдена"; КонецЕсли; КонецПроцедурыЕсли форма владельца не передана явно, можно попытаться получить её через `ЭтаФорма.Родитель` или через параметры, с которыми открывалась форма.
Если вызов происходит из внешней обработки, которая открыта как отдельное окно, то нужно, чтобы при открытии этой обработки в параметры передавалась ссылка на форму владельца, например:
Параметры = Новый Структура("ФормаВладельца", ЭтаФорма); ОткрытьФорму("ВнешняяОбработка.ИмяФормы", Параметры);А в модуле внешней обработки тогда:
&НаКлиенте Процедура ПриОткрытии() КонецПроцедуры &НаКлиенте Процедура КомандаПеречитать(Команда) Если Параметры.ФормаВладельца <> Неопределено Тогда Параметры.ФормаВладельца.Прочитать(); Иначе СообщитьОбОшибке("Форма владельца не передана"); КонецЕсли; КонецПроцедурыЕсли же нужно вызвать метод формы владельца из внешней обработки, которая не имеет прямой ссылки на форму, то это невозможно без передачи ссылки на форму владельца при открытии.
Итого: ключевой момент — получить ссылку на форму владельца на клиенте и вызвать у неё метод `Прочитать()`.
Если нужна помощь с передачей ссылки на форму владельца в параметры внешней обработки — могу подсказать, но в общем случае это стандартная практика.
—
Код вызова метода «Перечитать» у формы владельца из внешней обработки с типом команды:
&НаКлиенте Процедура КомандаПеречитать(Команда) Если ЭтаФорма.Параметры.Свойство("ФормаВладельца") Тогда ФормаВладельца = ЭтаФорма.Параметры.ФормаВладельца; ФормаВладельца.Прочитать(); Иначе Сообщение("Форма владельца не передана в параметры"); КонецЕсли; КонецПроцедуры—
Если форма владельца — это форма справочника или документа, то метод `Прочитать()` обновит данные формы из базы.
—
Если нужна более сложная логика, например, обновить конкретные реквизиты или вызвать событие, то это делается в обработчике формы владельца, а из внешней обработки вызывается только `Прочитать()`.
—
Надеюсь, это поможет!
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.