OnFormSubmit

Владимир, помогите пожалуста разобраться с функцией OnFormSubmit.
Задача - при обновлении формы установить статус rejected

добавил в класс следующий код:

   <method id="OnFormSubmit" _delta="define">
      <static>false</static>
      <access>public</access>
      <type>Overload-iDisplay</type>
      <code><![CDATA[
    public function OnFormSubmit($oObject, $sFormPrefix = '')
    {

$oObject->set(‘status’,‘rejected’);
$this->set(‘status’,‘rejected’);
if ($this->IsTargetObject($oObject)) {}
}
]]>

При нажатии кнопки обновить статус не меняется. Что я делаю не так?

Использовал функцию 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’);
}
}]]>

Владимир, подскажите, где можно посмотреть полный список доступных прерываний(стандартных функций)?

Откуда вы её вытащили? По моему она не вызывается на объекта CMDB.

OnUpdate запускается при каждом обновлении объекта.
Сложновато как-то, не хватает контекста)

Посмотрите доки по интерфейсам: Extensions API [iTop Documentation]. В частности
iApplicationUIExtension и iApplicationObjectExtension.

http://www.combodo.com/documentation/api-ref-extensions/classes/iApplicationUIExtension.html - здесь и нашел OnFormSubmit
, а вот OnUpdate нигде в документации не нашел, только в коде самого itop

Из опубликованного метода on update удалил кучу условий, поэтому функция выглядит нелогичной.Таким способом решил задачу автоматического перевода в новый статус, если все объекты удовлетворяют условию. Например получены все согласования или выполнены все наряды.

OnFormSubmit будет работать только при реализации в интерфейсе. Вместо переопределения OnUpdate лучше также воспользоваться интерфейсом iApplicationObjectExtention с функцией OnDBUpdate.
В крайнем случае, если переопределяли OnUpdate в модели данных, внутри функции добавьте вызов OnUpdate родительского класса. Иначе можно поломать функционал.