Событие Открытие для элемента на форме

1. user_2010 904 15.02.19 10:50 Сейчас в теме
Добрый день!

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

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

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

Спасибо!
По теме из базы знаний
Найденные решения
26. dhurricane 15.02.19 14:00 Сейчас в теме
(23) Примерно так:
&НаКлиенте
Процедура ДокументОткрытие(Элемент, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	
	ПараметрыОткрытия = Новый Структура("Ключ", Документ);
	
	Обработчик = Новый ОписаниеОповещения("ДокументЗавершениеОткрытия", ЭтотОбъект);
	
	ОткрытьФорму("Документ.МойДокумен.ФормаОбъекта", ПараметрыОткрытия, ЭтотОбъект, , , , Обработчик);
	
КонецПроцедуры

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

	ОбновитьОрганизациюИПериодДокументаНаСервере();
	
КонецПроцедуры
Показать
prog1c_vl; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SedovSU@mail.ru 297 15.02.19 10:53 Сейчас в теме
Можно сделать через события - Оповестить("ИмяСобытия"). На вашей форме получить данное оповещение в событии у формы "ОбработкаОповещения"
user623969_dusa; +1 Ответить
3. user_2010 904 15.02.19 11:49 Сейчас в теме
4. user_2010 904 15.02.19 12:48 Сейчас в теме
(2) не получилось!
Ведь я опять обрабатываю событие "Открытие"!!!! А оно же отрабатывает до открытия формы документа! И соотвественно Оповещение отрабатывает еще до открытия формы документа!!!

А надо отловить событие когда закрыли форму документа и вернулись на форму обработки!!!
5. SedovSU@mail.ru 297 15.02.19 12:53 Сейчас в теме
(4) не правильно вы понимаете. Метод Оповестить("ИмяСобытия") вы должны вызвать не при открытии формы документа и при записи документа который был изменен!
6. user_2010 904 15.02.19 13:04 Сейчас в теме
(5) Тогда мне нужно вносить изменения в код Документа - что не хочется делать...

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

Может быть "фокус" вернулся на форму?
7. SedovSU@mail.ru 297 15.02.19 13:12 Сейчас в теме
(6) ну вот такого события я не нашел у формы к сожелению
10. user_2010 904 15.02.19 13:22 Сейчас в теме
(7) жаль....

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

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

Вот бы как-то использовать это событие для простой формы???
12. dhurricane 15.02.19 13:24 Сейчас в теме
(10) Так что за "простая" форма? Управляемая или обычная?
У управляемых форм есть свойство "ОписаниеОповещенияОЗакрытии", используйте его. А точнее при открытии формы укажите в одном из параметров обработчик события закрытия.
16. SedovSU@mail.ru 297 15.02.19 13:29 Сейчас в теме
(12) точно, наверное возможно подойдет. работать в том случае когда пользователь закрыл измененный документ
19. user_2010 904 15.02.19 13:33 Сейчас в теме
(12) так это же надо в коде формы документа делать?
28. dhurricane 15.02.19 14:29 Сейчас в теме
8. user_2010 904 15.02.19 13:13 Сейчас в теме
(6) нужно что-то типа обновления данных динамических списков...
но только для простой формы...
9. SedovSU@mail.ru 297 15.02.19 13:15 Сейчас в теме
у вас управляемые формы или обычные?
11. user_2010 904 15.02.19 13:22 Сейчас в теме
13. SedovSU@mail.ru 297 15.02.19 13:25 Сейчас в теме
(11) к сожалению не получиться, нет такого метода, на сколько я знаю. Только через метод Оповестить. Но если в той форме у самой формы есть процедура ОбработкаЗаписиНового - то там точно формируется какое то события и вы его можете перехватить. Это вот единственно что поможет вам.
14. user_2010 904 15.02.19 13:25 Сейчас в теме
15. dhurricane 15.02.19 13:27 Сейчас в теме
(14) Рано сдаетесь. Можно попробовать извратиться. :-)

Используйте обработчик элемента формы "Открытие". В нем отключите стандартную обработку и открывайте форму значения сами, но при этом укажите обработчик в предпоследнем параметре метода открытия формы. А уже в этом обработчике обновляйте зависимые реквизиты.
23. user_2010 904 15.02.19 13:53 Сейчас в теме
(15) я верно понимаю, что

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

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

КонецПроцедуры
26. dhurricane 15.02.19 14:00 Сейчас в теме
(23) Примерно так:
&НаКлиенте
Процедура ДокументОткрытие(Элемент, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	
	ПараметрыОткрытия = Новый Структура("Ключ", Документ);
	
	Обработчик = Новый ОписаниеОповещения("ДокументЗавершениеОткрытия", ЭтотОбъект);
	
	ОткрытьФорму("Документ.МойДокумен.ФормаОбъекта", ПараметрыОткрытия, ЭтотОбъект, , , , Обработчик);
	
КонецПроцедуры

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

	ОбновитьОрганизациюИПериодДокументаНаСервере();
	
КонецПроцедуры
Показать
prog1c_vl; +1 Ответить
29. user_2010 904 15.02.19 14:32 Сейчас в теме
30. user_2010 904 15.02.19 15:06 Сейчас в теме
(26) Ура! Заработало! Огромное спасибо!

И Спасибо всем!
17. SedovSU@mail.ru 297 15.02.19 13:30 Сейчас в теме
(14) попробуйте то что вам предлагают (15)
18. Release 15.02.19 13:31 Сейчас в теме
Если у формы не задан обработчик ПослеЗаписи() , его можно переопределить УстановитьДействие(<ИмяСобытия>, <Действие>) и в нем уже вызывать Оповестить().
20. user_2010 904 15.02.19 13:34 Сейчас в теме
(18) спасибо! Но ведь все это надо делать в форме Документа.
Я пытаюсь только на форме внешней обработки все сделать. Не менять код конфы.
21. Release 15.02.19 13:41 Сейчас в теме
(20) Если вы открываете форму документа через код в обработке, то можно присвоить ей обработчик нужного события.
22. dhurricane 15.02.19 13:44 Сейчас в теме
(21) Формы управляемые, открываются на клиенте. Установка действия доступна только на сервере.
24. user_2010 904 15.02.19 13:55 Сейчас в теме
(21) можете дать ссылку - где про это можно почитать... или хотя бы направление...
нашла только это https://its.1c.ru/db/pubv8devui#content:169:hdoc

Спасибо!
25. Release 15.02.19 14:00 Сейчас в теме
27. user_2010 904 15.02.19 14:02 Сейчас в теме
(25) Спасибо большое! Почитаю!
Оставьте свое сообщение

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