Как из одной формы открыть другую, передав параметры, и получить обратно результат?
1. ОткрытьМодально, параметр закрытия, метод Закрыть
2. Реквизиты формы (или свойства расширения формы)
Реквизиты формы видимы снаружи как свойства объекта Форма. Их можно создать столько сколько нужно и присвоить им нужный тип.
3. Через ЭлементыФормы (не очень красиво)
5. Экспортные переменные модулей форм
Они становятся видимы снаружи, примерно как реквизиты форм:
6. Экспортные переменные модуля объекта, если он является основным реквизитом формы
Например, есть форма элемента справочника, т.е. ее основной реквизит имеет тип «СправочникОбъект.Номенклатура». Тогда экспортная переменная в модуле объекта расширяет контекст модуля формы и становится видна снаружи.
7. Глобальные переменные (экспортные переменные модуля приложения)
9. СохранитьЗначение, ВосстановитьЗначение
10. Параметры сеанса
Обратите внимание! Попытка прочитать неинициализированный параметр сеанса приводит к ошибке! Поэтому нужно инициализировать все параметры сеанса раньше, например, еще в процедуре ПриНачалеРаботыСистемы.
11. Объекты базы данных (справочники, константы, регистры сведений и т.д.)
![](https://1clenta.ru/image/category.png)
![](https://1clenta.ru/image/clock.png)
![](https://1clenta.ru/image/eye.png)
При закрытии формы может потребоваться вернуть из нее некоторые значения. Например, при нажатии на кнопку основной формы, открывается другая произвольная форма. После выполнения необходимых действий дополнительная форма закрывается, а в основную передается значение.
Открытие формы
Необходимо модально открыть произвольную форму с помощью функции ОткрытьФормуМодально().
Закрытие формы с возвратом значения
У открытой формы необходимо вызвать встроенный метод Закрыть(), который на вход принимает возвращаемое значение. Тип возвращаемого значения произвольный. В данном примере возвращается структура.
Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться
Задача
У нас есть обработка с вот такой основной формой:
Из этой формы нам нужно открыть некоторую дополнительную форму, при этом текст из поля формы должен передаваться в открываемую форму. Дополнительная форма имеет следующий вид:
Таким образом, при на нажатии на кнопку «Выполнить открывается дополнительная форма с уже введенным текстом в поле:
Рассмотрим способ решения подобной задачи.
Решение
Для передачи параметров между обычными формами можно либо воспользоваться глобальной экспортной переменной модуля формы, либо создать реквизит формы. Рассмотрим оба способа для в рамках нашей задачи.
1. Использование глобальной экспортной переменной модуля формы.
В основную форму для процедуры-обработчика кнопки «Выполнить» добавим следующий программный код:
Переменная текст добавлена в модуль открываемой формы вместе с обработчиком события «ПередОткрытием»:
Задача решена, причем достаточно просто!
2. Использование реквизита формы.
Для второго способа нам даже не нужно переписывать обработчики кнопки «Выполнить» и «ПередОткрытием». Все, что необходимо — это добавить в открываемую форму реквизит «Текст» с типом строка.
Выводы
В управляемых формах передавать параметры намного проще. В обычных формах в большинстве случаев используется описанный подход.
Обработку с примером из статьи Вы можете скачать по ссылке .