Подписка обработчика на создание объекта |
Подписка на создание объекта производится по следующиму синтаксису:
handler <имя_обработчика> on createinstance <имя_таблицы> action { <Action_код_на_языке_VIP> }
<имя_обработчика> - любой допустимый идентификатор Атлантиса.
Должено быть уникальным во ВСЕЙ системе!
<имя_таблицы> - имя таблицы, на которую подписывается обработчик. Таблица должна быть описана в словаре.
<Action_код_на_языке_VIP> - любые операторы Атлантиса. Доступны глобальные и локальные переменные и глобальные костанты. Код должен возвращать ссылку на VIP или OBJ интерфейс, если код отработал успешно и NullRef если нет. Если обработчик вернул валидную ссылку, то она возвращается в качестве проинициализированного объекта. Если же код вернул NullRef, то вызывается следующий по приоритету обработчик.
Пример 3
handler with replace DocumentCreator on createInstance BaseDoc action { var key : comp; if ( GetKeyValue(key) = tsOk ) { case pGlobalDocumenter.GetVidDoc( key ) of 201 : result := new(vInvoice, InitKey( key )); else result := new(vDocument, InitKey( key )); end; } else result := nullRef; }