#std630¶
Правила создания модулей форм¶
1.¶
Размещайте в модуле формы только код, который нужен для работы этой формы и выполняется в ее контексте.
1.1.¶
Не размещайте экспортные процедуры и функции в модулях форм.
Для программного интерфейса используйте модули объектов, модули менеджеров объектов или общие модули.
Для передачи параметров используйте ОткрытьФорму, для получения результата — обработчики оповещений, для взаимодействия между открытыми формами — Оповестить и обработчик ОбработкаОповещения.
1.2.¶
Не используйте экспортные процедуры и функции формы для параметризации формы при открытии.
Неправильно
Правильно
1.3.¶
Не вызывайте экспортные процедуры и функции модуля формы для обновления данных формы или для программной перерисовки формы по действиям пользователя в других формах.
Используйте метод глобального контекста Оповестить и методы формы ОповеститьОЗаписиНового, ОповеститьОбАктивизации, ОповеститьОВыборе.
1.4.¶
Исключение — экспортные процедуры-обработчики оповещений (ОписаниеОповещения.ИмяПроцедуры).
2.¶
Если одна и та же логика нужна на клиенте и на сервере, не дублируйте код.
Размещайте общую процедуру в модуле формы с директивой &НаКлиентеНаСервереБезКонтекста и передавайте контекст параметром.
В качестве контекста используйте форму (ФормаКлиентскогоПриложения) или реквизит формы (ДанныеФормыСтруктура).
Пример
&НаСервере
Процедура ПриСозданииНаСервере()
УстановитьДоступность(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РазрешитьРедактированиеСуммыПриИзменении(Элемент)
УстановитьДоступность(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступность(Форма)
Форма.Элементы.ТоварыСумма.Доступность = Форма.Объект.РазрешитьРедактированиеСуммы;
КонецПроцедуры