Как получить обработанное значение из открывшейся формы обратно в основную?
Доброго времени суток!
Есть программа Розница. Есть обработка, которая передаёт значение в новую форму, обрабатывается в ней и возвращается. Не пойму, как вернуть. Подскажите пожалуйста
В основной форме:
В новой форме:
А как передать новое значение обратно в основную форму объекту Объект.Значение
Есть программа Розница. Есть обработка, которая передаёт значение в новую форму, обрабатывается в ней и возвращается. Не пойму, как вернуть. Подскажите пожалуйста
В основной форме:
&НаКлиенте
Процедура ОткрытьФормуИПередатьЗначения(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗначениеПеременной", Объект.Значение);
ОткрытьФорму("ВнешняяОбработка.ОткрытиеИПередача.Форма.ФормаВыборЦены", ПараметрыФормы);
КонецПроцедуры
В новой форме:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, ПараметрыФормы)
Объект.НовоеЗначение = Параметры.ЗначениеПеременной;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьИВернуть(Команда)
ЭтаФорма.Закрыть()
А как передать новое значение обратно в основную форму объекту Объект.Значение
КонецПроцедуры
Найденные решения
(3) (32) Немного проще. Не знаю, почему сразу не сделал:
На стороне формы отправителя (та, что возвращает):
Принимающая форма:
На стороне формы отправителя (та, что возвращает):
Оповестить("Обновить", Объект.ОстатокНовойФормы, ЭтаФорма);
ЭтаФорма.Закрыть(Объект.Значение);
Принимающая форма:
&НаКлиенте
Процедура ОбработкаОповещения(Событие, Параметр, Источник)
Если Событие = "Обновить" Тогда
Сообщить(Параметр);
Объект.Значение = Параметр;
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Можно так:
1) В ОткрытьФорму добавить описание оповещение в соответствующий параметр.
2) в ЭтаФорма.Закрыть(<То что хочу передать>)
3) в обработчике описания оповещения обработать что передано.
1) В ОткрытьФорму добавить описание оповещение в соответствующий параметр.
2) в ЭтаФорма.Закрыть(<То что хочу передать>)
3) в обработчике описания оповещения обработать что передано.
(3) (32) Немного проще. Не знаю, почему сразу не сделал:
На стороне формы отправителя (та, что возвращает):
Принимающая форма:
На стороне формы отправителя (та, что возвращает):
Оповестить("Обновить", Объект.ОстатокНовойФормы, ЭтаФорма);
ЭтаФорма.Закрыть(Объект.Значение);
Принимающая форма:
&НаКлиенте
Процедура ОбработкаОповещения(Событие, Параметр, Источник)
Если Событие = "Обновить" Тогда
Сообщить(Параметр);
Объект.Значение = Параметр;
КонецЕсли;
КонецПроцедуры
Показать
(4) Это решение с Оповестить не есть однозначно правильное. Хотя в принципе и рабочее.
Что будет, если у тебя будет открыто несколько форм одного типа. При оповещении все из них получат идентичные сообщения и все выполнят одно и тоже действие...
Лучше как в (3) или ОповеститьОВыборе()
Что будет, если у тебя будет открыто несколько форм одного типа. При оповещении все из них получат идентичные сообщения и все выполнят одно и тоже действие...
Лучше как в (3) или ОповеститьОВыборе()
&НаКлиенте
Процедура КомандаТекстов(Команда)
п = Новый Структура;
дд = Новый Структура;
оо = Новый ОписаниеОповещения("ФормаВводЗавершение", ЭтотОбъект, дд);
ОткрытьФорму("ВнешнийОтчет.Тест1.Форма.ФормаВвода",п, ЭтаФорма, ЭтаФорма,,,оо,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ФормаВводЗавершение(р, дд) Экспорт
Если ТипЗнч(р) = Тип("Структура") Тогда
Объект.Значение = р.Значение;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот