v8: Передача данных из одной формы в другую Ключевые слова: передать значение, значение в форму, передать параметр, передать параметр в форму, параметр в форму, передать праметр в форму
Как из одной формы открыть другую, передав параметры, и получить обратно результат?
Варианты:
1. ОткрытьМодально, параметр закрытия, метод Закрыть
//первая форма
ВозвращаемоеЗначение = ДругаяФорма.ОткрытьМодально();
//в другой форме:
ЭтаФорма.Закрыть(ВозвращаемоеЗначение);
2. Реквизиты формы (или свойства расширения формы)
Реквизиты формы видимы снаружи как свойства объекта Форма. Их можно создать столько сколько нужно и присвоить им нужный тип.
//в первой форме
ДругаяФорма.ИмяРеквизита = Значение;
см. также: Книга знаний: v8: Реквизиты форм
3. Через ЭлементыФормы (не очень красиво)
//в первой форме
ДругаяФорма = ДокументСсылка.ПолучитьФорму();
ДругаяФорма.ЭлементыФормы.ИмяПоля.Значение = Значение;
4. Оповещения
//в первой форме оповестить все открытые формы
Оповестить("ИмяСобытия","Форма1",Данные)
//в другой форме назначить обработчик события Оповещение
Процедура ОбработкаОповещения(Событие, Источник, Данные)
Если Событие = "ИмяСобытия" И Источник = "Форма1" Тогда
КонецЕсли;
КонецПроцедуры
5. Экспортные переменные модулей форм
Они становятся видимы снаружи, примерно как реквизиты форм:
//в первой форме
ДругаяФорма.ИмяПеременной = Значение;
//в другой форме
Перем ИмяПеременной Экспорт;
6. Экспортные переменные модуля объекта, если он является основным реквизитом формы
Например, есть форма элемента справочника, т.е. ее основной реквизит имеет тип "СправочникОбъект.Номенклатура". Тогда экспортная переменная в модуле объекта расширяет контекст модуля формы и становится видна снаружи.
//в первой форме
ДругаяФорма.ИмяПеременной = Значение;
//в модуле объекта
Перем ИмяПеременной Экспорт;
7. Глобальные переменные (экспортные переменные модуля приложения)
8. Внешний файл
9. СохранитьЗначение, ВосстановитьЗначение
10. Параметры сеанса
//в первой форме
ПараметрыСеанса.ИмяПараметра = Значение;
//в другой форме
Если ПараметрыСеанса.ИмяПараметра = Значение Тогда
КонецЕсли;
Обратите внимание! Попытка прочитать неинициализированный параметр сеанса приводит к ошибке! Поэтому нужно инициализировать все параметры сеанса раньше, например, еще в процедуре ПриНачалеРаботыСистемы.
11. Объекты базы данных (справочники, константы, регистры сведений и т.д.)
12. Частный случай - при вызове формы для выбора значения в элемент, например поле ввода, не передается ссылка на текущую форму, в которой этот элемент располагается. Поэтому данные или ссылку на эту форму можно передать в некоторых редко используемых реквизитах поля ввода, например: "СписокВыбора". |