Использование метода ПолучитьФорму()
Для открытия форм следует применять методы глобального контекста ОткрытьФорму
или ОткрытьФормуМодально
. Применение альтернативного способа, с получением формы и ее последующим открытием с помощью метода ПолучитьФорму
, не рекомендуется.
Исключения из этого правила возможны только в особых случаях (см. раздел ниже «Особые случаи использования форм»).
Рекомендация обусловлена соображениями:
- повышения устойчивости кода, работающего с формой, за счет разделения программного интерфейса для работы с формой и деталей ее внутренней реализации,
- а также сохранения единой стилистики кода прикладных решений.
Кроме того, применение глобальных методов ОткрытьФорму
и ОткрытьФормуМодально
гарантирует выполнение инициализации формы на сервере в обработчике ПриСозданииНаСервере
.
Этот подход помогает сосредоточить весь код инициализации формы в одном месте и исключает "случайное" обращение к серверу, связанное с инициализацией формы, между строками кода
Форма = ПолучитьФорму(...)
и
Форма.ОткрытьФорму(...)
В случаях когда форма требует параметризации при открытии, все ее параметры следует указывать в наборе параметров формы. Таким образом, набор параметров формы декларативно описывает возможности формы по ее параметризации. Параметры формы из этого набора могут быть указаны в вызывающем коде при получении формы (ПолучитьФорму
) или при открытии (ОткрытьФорму
,ОткрытьФормуМодально
).
Не следует применять другие способы параметризации формы при открытии. Например, нужно избегать обращения к методам и свойствам формы после ее открытия.
Например, вместо
МояФорма = Форма.ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме");
МояФорма.Элементы.ГруппаШаг.ТекущаяСтраница = МойФорма.Элементы.ГруппаШаг.Страницы.Приветствие;
следует по той же причине использовать параметры формы:
Форма.ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме", Новый Структура("РежимОткрытия", "Приветствие"));
Для получения результата работы формы, открытой модально, вместо непосредственного обращения к элементам и реквизитам формы
ФормаВопроса = ПолучитьФорму("ОбщаяФорма.ФормаВопроса");
ФормаВопроса.ОткрытьМодально();
Если ФормаВопроса.БольшеНеПоказыватьНапоминание Тогда
// …
следует использовать возвращаемое значение функции ОткрытьМодально
:
БольшеНеПоказыватьНапоминание = ФормаВопроса.ОткрытьФормуМодально("ОбщаяФорма.ФормаВопроса");
Если БольшеНеПоказыватьНапоминание Тогда
// …
Возвращаемое значение формы формируется в коде модуля формы с помощью метода формы Закрыть
. Исключение могут составлять случаи, когда код вызываемой формы не может быть переписан с использованием метода формы Закрыть
по технологическим соображениям. Например, когда программно открывается форма элемента, в которой размещена стандартная команда Записать и закрыть
.
См. также
- Ограничения на использование экспортных процедур и функций
- Раздел «Открытие управляемой формы» статьи - Минимизация количества серверных вызовов
Другие ограничения - Обработчик события формы ПриОткрытии
не должен содержать код по открытию какой-либо другой формы вместо открываемой. - Не рекомендуется выполнять программное открытие и закрытие формы в одном обработчике. Такие действия должны быть разнесены по времени. Например, закрытие формы можно выполнять в обработчике ожидания.
Экранирование кода
// sonar:DeprecatedMethodGetForm:off
// sonar:DeprecatedMethodGetForm:on