Книга знаний

1С:Предприятие / v8 / Приемы программирования / Формы

v8: Передача данных из одной формы в другую

Автор статьи: Волшебник | Редакторы: vvv29, Гений 1С
Последняя редакция №6 от 17.04.06 | История
URL: http://kb.mista.ru/article.php?id=52

Ключевые слова: передать значение, значение в форму, передать параметр, передать параметр в форму, параметр в форму, передать праметр в форму


Как из одной формы открыть другую, передав параметры, и получить обратно результат?

Варианты:

1. ОткрытьМодально, параметр закрытия, метод Закрыть

//первая форма
ВозвращаемоеЗначение = ДругаяФорма.ОткрытьМодально();

//в другой форме:
ЭтаФорма.Закрыть(ВозвращаемоеЗначение);


2. Реквизиты формы (или свойства расширения формы)

Реквизиты формы видимы снаружи как свойства объекта Форма. Их можно создать столько сколько нужно и присвоить им нужный тип.

//в первой форме
ДругаяФорма.ИмяРеквизита = Значение;


см. также: Книга знаний: v8: Реквизиты форм

3. Через ЭлементыФормы (не очень красиво)

//в первой форме
ДругаяФорма = ДокументСсылка.ПолучитьФорму();
ДругаяФорма.ЭлементыФормы.ИмяПоля.Значение = Значение;


4. Оповещения

//в первой форме оповестить все открытые формы
Оповестить("ИмяСобытия","Форма1",Данные)

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


5. Экспортные переменные модулей форм

Они становятся видимы снаружи, примерно как реквизиты форм:

//в первой форме
ДругаяФорма.ИмяПеременной = Значение;

//в другой форме
Перем ИмяПеременной Экспорт;


6. Экспортные переменные модуля объекта, если он является основным реквизитом формы

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

//в первой форме
ДругаяФорма.ИмяПеременной = Значение;

//в модуле объекта 
Перем ИмяПеременной Экспорт;


7. Глобальные переменные (экспортные переменные модуля приложения)

8. Внешний файл

9. СохранитьЗначение, ВосстановитьЗначение

10. Параметры сеанса

//в первой форме
ПараметрыСеанса.ИмяПараметра = Значение;

//в другой форме
Если ПараметрыСеанса.ИмяПараметра = Значение Тогда
КонецЕсли;


Обратите внимание! Попытка прочитать неинициализированный параметр сеанса приводит к ошибке! Поэтому нужно инициализировать все параметры сеанса раньше, например, еще в процедуре ПриНачалеРаботыСистемы.

11. Объекты базы данных (справочники, константы, регистры сведений и т.д.)

12. Частный случай - при вызове формы для выбора значения в элемент, например поле ввода, не передается ссылка на текущую форму, в которой этот элемент располагается. Поэтому данные или ссылку на эту форму можно передать в некоторых редко используемых реквизитах поля ввода, например: "СписокВыбора".

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика