Примеры передачи позиции Назад В начало Вперед

Пример 1

var p : positionHandle;
var pBaseDoc : positionHandle of BaseDoc;
var pSoprHoz : positionHandle of SoprHoz;
...
p := BaseDoc.x$position;
pBaseDoc := BaseDoc.x$position;
pSoprHoz := SoprHoz.x$position;
...
if (p <> NULL)
  BaseDoc.x$positon := p;

// Так присваивать можно ...
p := pBaseDoc;

// ... а так компилятор выдаст ошибку ...
pBaseDoc := pSoprHoz;

// ... так ошибка будет во время выполнения
p := pBaseDoc;
pSoprHoz := p;

// Можно и так, только в базу полезем
if (p <> NULL)
  GetDirect(#BaseDoc, p);

Пример 2

type rBaseDoc as table BaseDoc with x$position;

//------------------------------------------------------------
function DoInsert(pRec : rBaseDoc)
{
  BaseDoc := pRec;
  DoInsert := insert current BaseDoc;
}

...
var vRec : rBaseDoc;
vRec := BaseDoc;
if (DoInsert( vRec ) <> tsOk)
  ...