Версия для печати темы (https://pro1c.org.ua/index.php?s=8ad7522a26c799315766801e8b6dc7ba&showtopic=57625)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Открыть форму и дождаться ее закрытия для выполнения следующих кодов

Автор: Constantus 11.03.20, 18:38

Приветствую, Форумчане!
1с8.3.12, самопис, УФ

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

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

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


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

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


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

Никак не могу добится этого эффекта модальности, чтобы всё замерло до закрытия открытой формы...
Посоветуйте

Автор: sava1 11.03.20, 19:17

в открываемой форме ПриЗакрытии - инициировать Оповещение, а в этой форие нужный код отрабатывать по ОбработкеОповещения

Автор: Constantus 12.03.20, 8:42

Ранее было так (супермега кнопка):

Процедура ВыполнитьМногоКодаНаФорме(Команда)



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

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

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



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


Автор: Petre 12.03.20, 9:07

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

Есть вариант простой - модальное открытие. а есть вариант правильный - с оповещением.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua