Функция 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.