Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Дождаться закрытия формы и выполнить код в документе открытия этой формы
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Constantus
Приветствую, Форумчане!
1с8.3.12, самопис, БСП, УФ

Из формы одного документа открываем другой документ. После его проведения и закрытия нужно выполнить код документа открытия (модуль формы):

&НаКлиенте
Процедура Контроль(Команда)
    ВвестиДокументКонтроля();
    УстановитьДоступностьПоПравамИСтатусам();

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


ВвестиДокументКонтроля(); - создает новый документ, что-то там творят, проводят и закрывают.

УстановитьДоступностьПоПравамИСтатусам(); - обновляет форму, из которой открывался новый документ (открывает/закрывает доступ к элементам формы и т.д.)

Но запуск открытия формы идет не модальный, следовательно вторая процедура срабатывает сразу и не срабатывает так как нужно.

Как дождаться закрытия формы нового документа и перечитать, обновить данные родной формы?
sava1
При закрытии 2й формы Оповестить()
в 1й обработать оповещение.
Constantus
sava1 @ Сегодня, 13:01 необходимо зарегистрироваться для просмотра ссылки ,

А детальней можно? Куда положить Оповестить и как и где обработать оповещение?

Спасибо, разобрался...
mut
в метод ОткрытьФорму нужно передать ОписаниеОповещения, оно выполнится при закрытии формы, разве это не подходит?

Вот пример. После того как форму Обработка.РабочееМестоПродавца.Форма.ПоискТовара закроют, выполнится процедура ОбработатьВводПримечанияСтроки в модуле текущей формы, из которой мы открывали вторую

ОповещениеОВыборе = Новый ОписаниеОповещения("ОбработатьВводПримечанияСтроки",ЭтотОбъект);
    
ДанныеВыбора = ОткрытьФорму("Обработка.РабочееМестоПродавца.Форма.ПоискТовара",
                                ПараметрыСписка,
                                ЭтаФорма,,,,
                                ОповещениеОВыборе,
                                РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
awp
Пример:

В форме которая вызывает ......
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если ИмяСобытия = "Задачи_Обновить" Тогда
        Элементы.тчЗадачиПоСогласованию.Обновить();
    ИначеЕсли ИмяСобытия = "Калькуляции_Обновить" Тогда
        Элементы.тчКалькуляции.Обновить();
    ИначеЕсли ИмяСобытия = "Контакты_Обновить" Тогда
        Элементы.тчКонтакты.Обновить();
    ИначеЕсли ИмяСобытия = "Напоминания_Обновить" Тогда    
        Элементы.тчНапоминания.Обновить();
    ИначеЕсли ИмяСобытия = "Обращения_Обновить" Тогда        
        Элементы.тчОбращения.Обновить();
    ИначеЕсли ИмяСобытия = "Проекты_Обновить" Тогда            
        Элементы.тчПроекты.Обновить();
    Конецесли;
КонецПроцедуры


В форме которая оповещает:
Вы выполняете код что вам нужен и при закрытии(событие что вам нужно) просто вызываете процедуру
Оповестить("Задачи_Обновить")

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.