Функция GetAnyTableRecord Назад В начало Вперед

Назначение

Считывает запись в новой версии произвольной таблицы. Если структура таблицы не менялась работает с оригинальной копией. Предназначена для вызова в обработчике триггера.

По большому счету эта функция имеет смысл для считывания записей из новых версий таблиц при конвертации, ибо другого способа доступа к ним нет. Но в принципе никто не мешает использовать ее и для доступа к обычным данным. Если вместо номера индекса указано $ff (-1), то система сама подбирает индекс, как в функции ModifyTableRecord. Если указанный индекс не уникальный, берется первая запись, соответствующая условию.

Описание

function GetAnyTableRecord(tableCode: word; var Buffer; idx_num: byte) : word;

Параметры

tableCode - код таблицы, запись в которой мы считываем.

buffer - буфер записи, тип которого берется из сгенерированного tbl2obj include-файла.

idx_num - номер индекса, по которому будет производится считывание записи. Можно использовать константы вида ti<имя-индекса>, ti<имя-таблицы>$<имя-индекса>, co<имя-таблицы>.ti<имя-индекса>, co<имя-таблицы>.<имя-индекса>, <имя-таблицы>.ti<имя-индекса>, <имя-таблицы>.<имя-индекса>.

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

Код ошибки. (tsOk, tsNotFound, tsInternalError).

Функция не выбрасывает исключений.

Пример

#include recAaa1.inc

handler with replace c_aaa1 on trigger aaa1 convert
action
{
  var old_buf : record as table aaa1; // буфер старой таблицы
  var new_buf : recAAA1; // буфер новой таблицы, берем из include-файла
  var new_buf2 : recAAA2; // буфер другой новой таблицы, берем из include-файла

  GetTableBuffer(old_buf);  // считываем старый буфер
  new_buf := recAAA1(old_buf); // копируем не изменившиеся поля

  ModifyTableRecord( new_buf ); // сохраняем изменения

  new_buf2.nRec := myNrec; // берем где-нибудь nRec (например, по ссылке)
  // для такого кода Aaa2 должна быть уже отконвертирована
  If (GetAnyTableRecord(tcAaa2, new_buf2, tiAaa2_Atl_nrec) = tsOk)
  {
	new_buf2.s := old_buf.s;  // копируем поле 
	ModifyAnyTableRecord(coAaa2, new_buf); // сохраняем изменения
  }

  result := true;
}

Версия

Атлантис 5.0.02.