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

Правила создания модулей форм

1.

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

1.1.

Не размещайте экспортные процедуры и функции в модулях форм. Для программного интерфейса используйте модули объектов, модули менеджеров объектов или общие модули. Для передачи параметров используйте ОткрытьФорму, для получения результата — обработчики оповещений, для взаимодействия между открытыми формами — Оповестить и обработчик ОбработкаОповещения.

1.2.

Не используйте экспортные процедуры и функции формы для параметризации формы при открытии.

Неправильно

Форма = ПолучитьФорму("ОбщаяФорма.МояФорма");
Форма.Открыть();
Форма.УстановитьПараметрСПомощьюЭтойЭкспортнойФункции(РежимРаботы);

Правильно

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

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

1.4.

Исключение — экспортные процедуры-обработчики оповещений (ОписаниеОповещения.ИмяПроцедуры).

2.

Если одна и та же логика нужна на клиенте и на сервере, не дублируйте код. Размещайте общую процедуру в модуле формы с директивой &НаКлиентеНаСервереБезКонтекста и передавайте контекст параметром. В качестве контекста используйте форму (ФормаКлиентскогоПриложения) или реквизит формы (ДанныеФормыСтруктура).

Пример

&НаСервере
Процедура ПриСозданииНаСервере()
    УстановитьДоступность(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура РазрешитьРедактированиеСуммыПриИзменении(Элемент)
    УстановитьДоступность(ЭтотОбъект);
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступность(Форма)
    Форма.Элементы.ТоварыСумма.Доступность = Форма.Объект.РазрешитьРедактированиеСуммы;
КонецПроцедуры
См. также