Difference between revisions of "OnOpen"

From SunFlurry wiki
Jump to: navigation, search
 
m (1 revision imported)
 
(No difference)

Latest revision as of 08:52, 7 February 2021

  OnOpen (События форм)
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Расположение:Текущий локальный модуль
Визуальность:Нет

Событие, возникающее в модуле после его загрузки в память, до инициализации формы (если таковая присутствует). Подобное событие можно также описать в событиях, привязанных к форме, а не модулю, однако, последнее будет вызвано уже после начальной инициализации формы. Если функция возвратит 0 (или внутри функции произойдет исключение), форма не будет загружена и работа модуля будет завершена. Для создания модулей без форм, обработчик модуля размещается внутри этого события. Может использоваться, к примеру, для печати форм документов или для консольных клиентов при автоматической выгрузке, тогда как в визуальном клиенте будет показана форма с набором установок. Существует возможность изменить имя загружаемой формы непосредственно внутри этой функции.

Несмотря на то, что на момент работы этой функции, форма еще не была инициализирована, некоторые исключительные обращения к объекту формы допустимы (к примеру, Form.Object или Form.Type).

Синтаксис

OnOpen(<Имя загружаемой формы (STRING,OUT)>):<Продолжить загрузку формы (INT)>

Аргументы

  • <Имя загружаемой формы (STRING,OUT)> - (необязательный аргумент) (возможен аргумент-переменная (ByRef)) Наименование формы, которая будет загружена после окончания работы этого события, если оно не запретит дальнейшую загрузку. Функция может изменить наименование формы, это полезно, к примеру, если документ имеет несколько форм в зависимости от его типа, описание выбора нужной формы будет находиться в самом документе, формы будет выбрана до начала загрузки визуальных элементов.

Возвращаемое значение

Функция должна возвратить единицу (переменная Result при вызове инициализирована единицей), чтобы продолжить загрузку формы, либо ноль, чтобы отказаться от загрузки (если, к примеру, обработка вывела печатную форму в теле данной функции и необходимо вернуться в вызвавший модуль для продолжения работы).


Примеры

Function OnOpen(ByRef FormName)
  aEl:=Form.Object;
  If aEl.Selected()<0 Then
    If aEl.КодОперации.Selected()=0 Then
      aEl.КодОперации:=Enum.коОсновныеСредства.ПоступлениеОсновныхСредств;
    EndIf;  
  EndIf;
  FormName:="Form";
  If (aEl.КодОперации=Enum.коОсновныеСредства.СписаниеОсновныхСредств)Or(aEl.КодОперации=Enum.коОсновныеСредства.ВводВЭксплуатациюОсновныхСредств)
      Or(aEl.КодОперации=Enum.коОсновныеСредства.РеализацияОсновныхСредств) Then
    FormName:="ФормаСписание";
  ElseIf aEl.КодОперации=Enum.коОсновныеСредства.ИнвентаризацияОсновныхСредств Then
    FormName:="ФормаИнвентаризация";
  ElseIf aEl.КодОперации=Enum.коОсновныеСредства.ПеремещениеОсновныхСредств Then
    FormName:="ФормаПеремещения";
  EndIf;
EndFunction