Использовал функцию OnUpdate. Насколько я понял, она делает то-же самое - прерывание перед записью в бд.
Статусы лучше устанавливать через ApplyStimulus, в противном случае триггеры могут не сработать.
<method id="OnUpdate">
<static>false</static>
<access>protected</access>
<type>Overload-DBObject</type>
<code><![CDATA[ protected function OnUpdate()
{
$st=$this->Get(‘status’);
if ($st ==‘wait_for_approval’)
{
$this->ApplyStimulus(‘ev_autorejected’);
}
}]]>
Владимир, подскажите, где можно посмотреть полный список доступных прерываний(стандартных функций)?
Из опубликованного метода on update удалил кучу условий, поэтому функция выглядит нелогичной.Таким способом решил задачу автоматического перевода в новый статус, если все объекты удовлетворяют условию. Например получены все согласования или выполнены все наряды.
OnFormSubmit будет работать только при реализации в интерфейсе. Вместо переопределения OnUpdate лучше также воспользоваться интерфейсом iApplicationObjectExtention с функцией OnDBUpdate.
В крайнем случае, если переопределяли OnUpdate в модели данных, внутри функции добавьте вызов OnUpdate родительского класса. Иначе можно поломать функционал.