Вызов процедур и функций модуля открытой
формы
Встроенный язык 1С:Предприятия не допускает вызова процедур
и функций модуля формы из другого модуля. Допускается
только обращение к атрибутам и методам контекста модуля
формы.
В некоторых случаях возникает необходимость вызова
некоторого алгоритма модуля формы (процедуры или функции)
из другого модуля.
Для решения этой задачи можно использовать следующий
прием. В 1С:Предприятии 7.7 в модуле формы может использоваться
предопределенная процедура "ПриПовторномОткрытии".
Эта процедура вызывается в том случае, если каким-либо
способом выполняется открытие уже открытой формы. При
чем при повторном открытии функцией "ОткрытьФорму"
в модуль формы также как и при первом открытии передается
параметр. Эта особенность может быть использована для
активизации "снаружи" некоторого алгоритма
в модуле открытой формы.
В методической конфигурации данный прием демонстрируется
на примере открытия формы расходной накладной с автоматическим
открытием подбора (меню "Документ - Расходная накладная
с подбором"). Обычными средствами подбор в форме
не может быть автоматически вызван непосредственно после
открытия документа. Поэтому обычно пользователю необходимо
после открытия документа вызывать подбор нажатием соответствующей
кнопки. В приведенном примере при открытии нового документа
сразу открывается режим подбора. Для реализации автоматического
открытия подбора пункт меню вызывает процедуру "ОткрытьНакладнуюСПодбором"
в глобальном модуле. В этой процедуре выполняется открытие
формы документа "РасхНакл", а затем выполняется
повторное открытие с передачей в качестве параметра
строки
"Подбор". В модуле формы документа в предопределенной
процедуре "ПриПовторномОткрытии" выполняется
проверка параметра формы и в случае наличия в параметре
строки "Подбор" выполняется активизация подбора.
В приведенной методике важным моментом является то,
что при повторном вызове функции "ОткрытьФорму"
должна открываться именно та форма, которая уже открыта,
так как только в этом случае будет вызвана процедура
"ПриПовторномОткрытии". Например, если после
первого вызова функции "ОткрытьФорму" документ
будет записан, то при втором вызове будет открыта новая
форма.
|