Перейти к содержанию

Использование метода ПолучитьФорму()

Для открытия форм следует применять методы глобального контекста ОткрытьФорму или ОткрытьФормуМодально. Применение альтернативного способа, с получением формы и ее последующим открытием с помощью метода ПолучитьФорму, не рекомендуется.

Исключения из этого правила возможны только в особых случаях (см. раздел ниже «Особые случаи использования форм»).

Рекомендация обусловлена соображениями:

  • повышения устойчивости кода, работающего с формой, за счет разделения программного интерфейса для работы с формой и деталей ее внутренней реализации,
  • а также сохранения единой стилистики кода прикладных решений.

Кроме того, применение глобальных методов ОткрытьФорму и ОткрытьФормуМодально гарантирует выполнение инициализации формы на сервере в обработчике ПриСозданииНаСервере.

Этот подход помогает сосредоточить весь код инициализации формы в одном месте и исключает "случайное" обращение к серверу, связанное с инициализацией формы, между строками кода

Форма = ПолучитьФорму(...)

и

Форма.ОткрытьФорму(...)

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

Не следует применять другие способы параметризации формы при открытии. Например, нужно избегать обращения к методам и свойствам формы после ее открытия.

Например, вместо

МояФорма = Форма.ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме");
МояФорма.Элементы.ГруппаШаг.ТекущаяСтраница = МойФорма.Элементы.ГруппаШаг.Страницы.Приветствие;

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

Форма.ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме", Новый Структура("РежимОткрытия", "Приветствие"));

Для получения результата работы формы, открытой модально, вместо непосредственного обращения к элементам и реквизитам формы

ФормаВопроса = ПолучитьФорму("ОбщаяФорма.ФормаВопроса");
ФормаВопроса.ОткрытьМодально();
Если ФормаВопроса.БольшеНеПоказыватьНапоминание Тогда
// …

следует использовать возвращаемое значение функции ОткрытьМодально:

БольшеНеПоказыватьНапоминание = ФормаВопроса.ОткрытьФормуМодально("ОбщаяФорма.ФормаВопроса");
Если БольшеНеПоказыватьНапоминание Тогда
// …

Возвращаемое значение формы формируется в коде модуля формы с помощью метода формы Закрыть. Исключение могут составлять случаи, когда код вызываемой формы не может быть переписан с использованием метода формы Закрыть по технологическим соображениям. Например, когда программно открывается форма элемента, в которой размещена стандартная команда Записать и закрыть.

См. также - Ограничения на использование экспортных процедур и функций - Раздел «Открытие управляемой формы» статьи - Минимизация количества серверных вызовов

Другие ограничения - Обработчик события формы ПриОткрытии не должен содержать код по открытию какой-либо другой формы вместо открываемой. - Не рекомендуется выполнять программное открытие и закрытие формы в одном обработчике. Такие действия должны быть разнесены по времени. Например, закрытие формы можно выполнять в обработчике ожидания.