Работа с таблицами Назад В начало Вперед

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

<имя-таблицы>.buffer

Например: katos.buffer.

Поле buffer является полем структурного типа, который имеет имя вида: "type$"<имя таблицы>. Например, type$katos.

Для получения записи таблицы с полем позиции (см. "Позиции. ") необходимо использовать выражение вида:

<имя-таблицы>.bufferp

Например: baseDoc.bufferp.

Поле bufferp является полем структурного типа, который имеет вид type$p_<имя-таблицы>. Например, type$p_baseDoc.

Buffer - фиктивное поле и не является полем физической таблицы.

Благодаря полю buffer становится возможным присвоение текущей записи таблицы. При этом необходимо всегда явно задавать преобразование типа.

Начиная с Атлантис версии 5.1.09 типы "type$<таблица>" и "record as table <таблица>", а также "type$p_<таблица>" и "record as table <таблица> with x$position" являются синонимами. Необходимость в дополнительном приведении типа снимается и оптимизируется компилятором.

Например:

type TMyTable = record as table mytable;
var table1 : TMyTable;
  ...
  mytable.buffer := mykatos; // ошибка
  mytable.buffer := type$mytable(mykatos); // правильно
  insert current mytable;
  ...

также возможна обратная операция получения текущей записи таблицы. Например,

type TMyTable = record as table mytable;
var table1 : TMyTable;
  ...
  table1 := mytable.buffer; // ошибка
  table1 := TMyTable(mytable.buffer); // правильно
  ...

Запись с полем позиции:

type TRecPosBaseDoc = record as table baseDoc with x$position;
var myBaseDocRec : TRecPosBaseDoc;
...
baseDoc.bufferp := type$p_BaseDoc(myBaseDocRec);

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

Структуры могут передаваться в процедуры и функции как параметры. Передача структур возможна как по значению, так и по ссылке. Допустимо возвращать структуры как результат функции. Допустимо передавать структуры как параметры интерфейсов.