ну да, вы же по уникальному индексу написали
GetNExt KatMc where((cOldMc ==KatMc.Nrec ))
- это даст false.
на счет GetNext. Надо понимать, что проблема СЛЕДУЮЩАЯ на самом деле неоднозначна. СЛЕДУЩАЯ есть только в выборке, причем должна быть ТЕКУЩАЯ и должен быть задан ПОРЯДОК следования записей,т.к. индекс в Галактике, по которому стоят записи.
Проблема у том, что есть понятие в Галактике ТЕКУЩАЯ,т.е. та, на которой стоит курсов, а еще есть понятие ТЕКУЩАЯ ПО УСЛОВИЮ. Последнее понятие дает возможность работать оператору GetNеxt c опцией where.
Если таблица КатМс во view в секции where(()) стоит где-то в правой части, то ситуация на самом деле непредсказуемая. Если запись с Nrec=cOldMc удовлетворяет условию подцепки и условию подцепки во view, то видимо выведется запись, следующая за этой записью по условиям подцепки view. Если запись не попадает в условия подцепки, то не ручаюсь за результат.
Если таблица катмц не участвует в подцепке, то выдаст, скорее всего следующую запись по индексу Nrec.
GetFirst c опцией where ()) работает на самом деле
На практике, используют следующие приемы:
1. Описывают во view несколько синонимов и каждый синоним таблицы цепляют во view по разным условиям. В обработчиках работают с синонимами.
2. Не описываю таблицы вообще во view, а в обработчиках работают C циклами
if GetFirst ...where (()) - tsOk
do
...
while ( GetNext...where(()) = tsOk )
3. Описывают основное использование таблицы в view (подцепку), а использование варианта 2 обрамляют операторами отсоединения таблицы от подцепки во view и после выполнения - подсоединения к подцепки (см. документацию).
Все другие соцетация могут привести к очень предсказуемым последствиям.