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

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

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

Автор: AnryMc 11.04.24, 10:07

Капитально туплю сегодня - помогите!!!

Форма Обработки 1
Программно открывается Обработка 2

&НаКлиенте
    
    ПараметрыФормы = Новый Структура("", "");
    
    ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытаФормаОбработки2", ЭтотОбъект, ПараметрыФормы);
    
    ОткрытьФорму("Обработка.Обработка2.Форма", ПараметрыФормы,,,,,ОписаниеОповещения);


В Обработке 2 устанавливается НужныйРеквизит

Форма Обработки 2 - закрывается

В Обработке 1 выполняется Оповещение
&НаКлиенте
Процедура ЗакрытаФормаОбработки2(Результат, ДополнительныеПараметры) Экспорт
    
    ...
//Как здесь узнать установленный в Обработке 2 НужныйРеквизит
    
КонецПроцедуры


КАК???



Автор: andr_andrey 11.04.24, 13:10

AnryMc @ Сегодня, 11:07 * ,
Потрібно вказати в параметрах закриття при закритті форми:

Закрыть(<ПараметрЗакрытия>)

<ПараметрЗакрытия> (необязательный)
Тип: Произвольный.
Параметр закрытия формы, открытой в модальном режиме. Это значение будет возвращено как результат метода, открывающего форму модально.
В режиме отказа от модальности параметр передается в процедуру, описанную параметром ОписаниеОповещенияОЗакрытии метода ОткрытьФорму или свойством формы ОписаниеОповещенияОЗакрытии.

Автор: AnryMc 11.04.24, 14:44

Цитата(andr_andrey @ 11.04.24, 14:10) *
Закрыть(<ПараметрЗакрытия>)



А где это "всунуть" в Обработке 2, и как поймать в Обработке 1 в обработке Оповещения?

Автор: takefive 11.04.24, 15:22

Вариант с оповещением...

//процедуры нужно привязать к событиям, действиям...
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    //Сообщить("ИмяСобытия: " + ИмяСобытия + ", тип: " + ТипЗнч(ИмяСобытия));
    //Сообщить("Параметр: "   + Параметр   + ", тип: " + ТипЗнч(Параметр));
    //Сообщить("Источник: "   + Источник   + ", тип: " + ТипЗнч(Источник));
    Если ИмяСобытия = "ДиалогФорм" Тогда
        Объект.Дата = Параметр.Дата;
    КонецЕсли;
КонецПроцедуры

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

//Нужно указать владельца формы - третий параметр
&НаКлиенте
Процедура ОткрытьНастройки(Команда)
    ФормаНастроек = ПолучитьФорму("ВнешняяОбработка.ДвеФормы.Форма.ФормаНастройки",,ЭтаФорма);
    ФормаНастроек.Открыть();
КонецПроцедуры

Автор: AnryMc 11.04.24, 15:59



Цитата(AnryMc @ 11.04.24, 11:07) *
Капитально туплю сегодня - помогите!!!


Цитата(takefive @ 11.04.24, 16:22) *
Вариант с оповещением...


Что и где?

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