#std404

Открытие форм

1.

Для открытия форм используйте метод ОткрытьФорму. (В проектах на платформе 1С:Предприятие 8.2 и ниже ОткрытьФормуМодально).

Не рекомендуется открывать форму через ПолучитьФорму с последующим вызовом Открыть()/ОткрытьМодально().

Причины:

  • меньше зависимость вызывающего кода от внутреннего устройства формы;
  • единая стилистика кода;
  • гарантированная серверная инициализация в ПриСозданииНаСервере.

Неправильно

Форма = ПолучитьФорму("ОбщаяФорма.ПутеводительПоСистеме");
Форма.Открыть();

Правильно

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

Если форма требует параметризации при открытии, передавайте все параметры через набор параметров формы.

Так набор параметров декларативно описывает поддерживаемые сценарии открытия. Вызывающий код передает только то, что объявлено в параметрах формы.

3.

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

Неправильно

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

Правильно

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

Результат работы формы получайте через обработчики оповещений. Не читайте реквизиты формы напрямую после закрытия.

Неправильно

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

Правильно

Обработчик = Новый ОписаниеОповещения("ПослеЗакрытияФормы", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ФормаВопроса", , , , , Обработчик, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);

&НаКлиенте
Процедура ПослеЗакрытияФормы(БольшеНеПоказыватьНапоминание, Параметры) Экспорт
    Если БольшеНеПоказыватьНапоминание = Неопределено Тогда
        Возврат;
    КонецЕсли;

    Если БольшеНеПоказыватьНапоминание Тогда
        // ...
    КонецЕсли;
КонецПроцедуры

Возвращаемое значение формы формируйте в модуле формы методом Закрыть().

5.

Дополнительные ограничения:

  • в ПриОткрытии не открывайте другие формы, чтобы не нарушать порядок отображения окон;
  • не открывайте и не закрывайте форму в одном обработчике, такие действия разносите по времени;
  • если в конфигурации используется БСП и форма предназначена только для внешних пользователей, явно блокируйте ее открытие для обычных пользователей.

Пример

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Если Не ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда
        Отказ = Истина;
        Возврат;
    КонецЕсли;

    // Инициализация формы.
    ...
КонецПроцедуры
6.

Следующие виды форм должны быть доступны пользователю в режиме 1С:Предприятие из меню Все функции, даже если объект не выведен в командный интерфейс:

  • основная форма списка (для всех объектов);
  • основная форма обработки;
  • основная форма отчета.
См. также
Источник

https://its.1c.ru/db/v8std#content:404