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

Имеется некий большой код в модуле формы. В код вставляется открытие формы:

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

    //55782 -->
    РезультатПроверки = ПереводВСтатусРазрешен(ПредопределенноеЗначение("Перечисление.СтатусыЗаказов.Открыт"));
    Если РезультатПроверки.ЕстьОшибки Тогда
        
        ПоказатьПредупреждение(, РезультатПроверки.ОписаниеОшибки, 5, "Изменение статуса заказа");
        Возврат;
    
    КонецЕсли;


Открытие срабатывает и даже срабатывает то, что нужно сделать в этой открытой форме.
Но программа не дожидается закрытия этой формы и продолжает выполнение всех остальных кодов, что следуют за открытием, т.е. в данном случае, форма открывается, но код

РезультатПроверки = ПереводВСтатусРазрешен(ПредопределенноеЗначение("Перечисление.СтатусыЗаказов.Открыт"));
    Если РезультатПроверки.ЕстьОшибки Тогда


Срабатывает, недожидаясь завершения работы открытой формы "ФормаПроверкиСкладовВыставки"

Никак не могу добится этого эффекта модальности, чтобы всё замерло до закрытия открытой формы...
Посоветуйте
sava1
в открываемой форме ПриЗакрытии - инициировать Оповещение, а в этой форие нужный код отрабатывать по ОбработкеОповещения
Constantus
Ранее было так (супермега кнопка):
Процедура ВыполнитьМногоКодаНаФорме(Команда)



Вместо этой кнопки создал новую:

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

&НаКлиенте
Процедура ВыполнитьМоюХотелку(Результат, ДополнительныеПараметры) Экспорт
    ВыполнитьМногоКодаНаФорме(Неопределено);
КонецПроцедуры



Вроде сработало...
Ну неужели нет более простого способа? И вообще, то, что я понаписал это правильно с точки зрения оптимизации?

Petre
QUOTE (Constantus @ 12.03.20, 8:42) необходимо зарегистрироваться для просмотра ссылки
Ну неужели нет более простого способа? И вообще, то, что я понаписал это правильно с точки зрения оптимизации?

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