Разработчик может создать в модуле формы экспортируемые процедуры или функции. Они будут доступны как методы программного объекта Форма во встроенном языке.
Для таких процедур/функций также нужно указывать директивы компиляции. При этом практический смысл есть, наверное, в использовании лишь единственной директивы – &НаКлиенте.
Поясним почему. Как мы уже знаем, объект формы создается методами ОткрытьФорму() или ПолучитьФорму(). Оба они доступны только в контексте клиента. Поэтому созданная форма также будет существовать в контексте клиента. Соответственно, в этом же контексте должны быть определены ее экспортируемые процедуры/функции.
Можно вспомнить пример, который мы рассматривали при изучении открытия форм в разделе .
В нем глобальная команда получала форму обработки, вызывала ее экспортируемую процедуру и потом открывала форму. Глобальная команда выполняется в контексте клиента, полученная форма существует в контексте клиента, поэтому и экспортируемые процедуры этой формы (см. обработка УниверсальныйРедактор, форма ФормаРедактора) описаны с директивами компиляции &НаКлиенте.
В принципе программный объект формы может существовать как на клиенте, так и на сервере. Однако для чего, в какой ситуации может потребоваться обращаться к нему «извне» на сервере – сложно представить.
Поэтому основное замечание этого раздела заключается в том, что при написании собственных экспортируемых процедур/функций формы нужно не забывать указывать для них директиву компиляции &НаКлиенте. Если никакая директива указана не будет, платформа будет считать, что используется директива &НаСервере, и, значит, вызвать процедуру/функцию на клиенте вы не сможете.
Однако без особой необходимости лучше не располагать экспортируемые процедуры и функции в модулях форм. Для этого рекомендуется использовать модули объектов, модули менеджеров объектов и общие модули. Исключения составляют экспортируемые процедуры обработки оповещений.