Добрый день!

Внешняя обработка. Есть форма, на ней есть реквизит ВыбранныйДокумент. Также на форме выводятся для информации Организация из этого документа и ПериодРегистрации.

При изменении выбранного документа, автоматически изменяются Организация и ПериодРегистрации. Это сделано в обработке события ПриИзменении реквизита ВыбранныйДокумент.

Но! Есть такое событие Открыть - когда этот выбранный документ можно открыть, изменить в документе Организацию или ПериодРегистрации. И вот в этот момент тоже нужно на форме обработки автоматически изменить реквизиты Организация и ПериодРегистрации.
Обработка события Открыть - не позволяет этого сделать. Видимо, это событие отрабатывает еще до открытия формы документа и его изменения? Поэтому при обработке этого события еще нет новых данных?
Или я что-то неверно делаю? Как это возможно реализовать?

Спасибо!
---
Примерно так:

```1c
    &НаКлиенте
    Процедура ДокументОткрытие(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ПараметрыОткрытия = Новый Структура("Ключ", Документ);

    Обработчик = Новый ОписаниеОповещения("ДокументЗавершениеОткрытия", ЭтотОбъект);

    ОткрытьФорму("Документ.МойДокумен.ФормаОбъекта", ПараметрыОткрытия, ЭтотОбъект, , , , Обработчик);

    КонецПроцедуры

    &НаКлиенте
    Процедура ДокументЗавершениеОткрытия(Результат, ДополнительныеПараметры) Экспорт

    ОбновитьОрганизациюИПериодДокументаНаСервере();

    КонецПроцедуры
```
---
Можно сделать через события - Оповестить("ИмяСобытия"). На вашей форме получить данное оповещение в событии у формы "ОбработкаОповещения"
---
Спасибо! Попробую!
---
не получилось!
Ведь я опять обрабатываю событие "Открытие"!!!! А оно же отрабатывает до открытия формы документа! И соотвественно Оповещение отрабатывает еще до открытия формы документа!!!

А надо отловить событие когда закрыли форму документа и вернулись на форму обработки!!!
---
не правильно вы понимаете. Метод Оповестить("ИмяСобытия") вы должны вызвать не при открытии формы документа и при записи документа который был изменен!
---
Тогда мне нужно вносить изменения в код Документа - что не хочется делать...

Ведь должна быть возможность отловить событие на форме обработки?

Может быть "фокус" вернулся на форму?
---
ну вот такого события я не нашел у формы к сожелению
---
жаль....

для динамических списков используется метод "ОповеститьПриИзменении". У этого метода один параметр "ссылка на измененный объект".

Вот как-то бы перехватить это событие.....
насколько я поняла это событие перехватывает сама платформа и обновляет динамические списки.

Вот бы как-то использовать это событие для простой формы???
---
Так что за "простая" форма? Управляемая или обычная?
У управляемых форм есть свойство "ОписаниеОповещенияОЗакрытии", используйте его. А точнее при открытии формы укажите в одном из параметров обработчик события закрытия.
---
точно, наверное возможно подойдет. работать в том случае когда пользователь закрыл измененный документ
---
так это же надо в коде формы документа делать?
---
Нет
---
нужно что-то типа обновления данных динамических списков...
но только для простой формы...
---
у вас управляемые формы или обычные?
---
управляемые
---
к сожалению не получиться, нет такого метода, на сколько я знаю. Только через метод Оповестить. Но если в той форме у самой формы есть процедура ОбработкаЗаписиНового - то там точно формируется какое то события и вы его можете перехватить. Это вот единственно что поможет вам.
---
спасибо!
---
Рано сдаетесь. Можно попробовать извратиться. :-)

Используйте обработчик элемента формы "Открытие". В нем отключите стандартную обработку и открывайте форму значения сами, но при этом укажите обработчик в предпоследнем параметре метода открытия формы. А уже в этом обработчике обновляйте зависимые реквизиты.
---
я верно понимаю, что

&НаКлиенте
Процедура ДокументОткрытие(Элемент, СтандартнаяОбработка)
        СтандартнаяОбработка = Ложь;

        открываю типовую форму документа( в параметрах открытия формы нужно указать в предпоследнем параметре метода открытия формы нужно указать свой обработчик? Что нужно/можно написать в этом обработчике? Ведь все эти операции мы делаем еще до открытия формы документа)

КонецПроцедуры
---
Примерно так:

```1c
    &НаКлиенте
    Процедура ДокументОткрытие(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ПараметрыОткрытия = Новый Структура("Ключ", Документ);

    Обработчик = Новый ОписаниеОповещения("ДокументЗавершениеОткрытия", ЭтотОбъект);

    ОткрытьФорму("Документ.МойДокумен.ФормаОбъекта", ПараметрыОткрытия, ЭтотОбъект, , , , Обработчик);

    КонецПроцедуры

    &НаКлиенте
    Процедура ДокументЗавершениеОткрытия(Результат, ДополнительныеПараметры) Экспорт

    ОбновитьОрганизациюИПериодДокументаНаСервере();

    КонецПроцедуры
```
---
Спасибо\! Попробую!
---
Ура! Заработало! Огромное спасибо!

И Спасибо всем!
---
попробуйте то что вам предлагают (15)
---
Если у формы не задан обработчик ПослеЗаписи() , его можно переопределить УстановитьДействие(<ИмяСобытия>, <Действие>) и в нем уже вызывать Оповестить().
---
спасибо! Но ведь все это надо делать в форме Документа.
Я пытаюсь только на форме внешней обработки все сделать. Не менять код конфы.
---
Если вы открываете форму документа через код в обработке, то можно присвоить ей обработчик нужного события.
---
Формы управляемые, открываются на клиенте. Установка действия доступна только на сервере.
---
можете дать ссылку - где про это можно почитать... или хотя бы направление...
нашла только это https://its.1c.ru/db/pubv8devui#content:169:hdoc

Спасибо!
---
Вот тут есть пример: https://infostart.ru/public/169131/
---
Спасибо большое! Почитаю!