Обработка сложных структур в памяти Назад В начало Вперед
create view v1

as select
  *

from
  BaseDoc, ...

where
((
	BaseDoc.Nrec == StepDoc.cBaseDoc
  and StepDoc.Nrec == SpStep.cStepDoc
  and SpStep.Nrec == SpDocNal.cSpDoc
  and ....
))

bounds b1 as cBaseDoc = BaseDoc.Nrec;
....
// Фиксируем текущий документ
cBaseDoc := BaseDoc.Nrec;
PushBounds(tbB1);
/* Переводим документ в режим таблицы в памяти,
 * считываем всю необходимую информацию по данному документу в память
 */
if (ReinitTable(#BaseDoc, fmMemory+fmSubTree+fmAutoLoad))
{
  // Обрабатываем
  ....
  // При необходимости записываем в БД
  if (<все-как-надо>)
	if (mtFlush(#BaseDoc, fmTransaction) <> tsOk)
}
// Восстанавливаем как было
if (ReinitTable(#BaseDoc, fmNormal))
  ...
PopBounds(tbB1);