OnAfterCopyToTemp

Data Source

Данное событие вызывается индивидуально для каждой записи после её копирования из оригинальной таблицы во временную таблицу.

Вызывается из событий

Данное событие косвенно (через метод kTempTablesHandler::DoCopyLiveToTemp) вызывается из события OnEdit в процессе копирования данных из оригинальной таблицы во временную.

Входные параметры

название

описание

id (int)

ID записи в оригинальной таблице.

Примечание

Объекты, которые будут получены из событий, вызываемых из класса kTempTablesHandler никогда не содержат достоверной информации.

Поэтому в случае, когда нужен объект, загруженный по ID скопированной записи, то его нужно загружать самому. Это будет показано на ниже приведённом примере.

$object =& $this->Application->recallObject($event->Prefix . '.-item', null, Array ('skip_autoload' => true));
/* @var $object kDBItem */

$object->Load( $event->getEventParam('id') );

Потенциальное применение

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

function OnAfterCopyToTemp(&$event)
{
    parent::OnAfterCopyToTemp($event);

    $id_field = $this->Application->getUnitOption($event->Prefix, 'IDField');
    $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName');

    $sql = 'UPDATE ' . $table_name . '
            SET InEdit = 1
            WHERE ' . $id_field . ' = ' . $event->getEventParam('id');
    $this->Conn->Query($sql);
}

Ограничения

Данное событие будет вызываться только при использовании события OnEdit, и следовательно будет работать только в случае, когда используются временные таблицы.