Цитата:
Сообщение от
Orwell
IF RecRef.FIND('-') THEN BEGIN
REPEAT
RecRef2 := RecRef.DUPLICATE;
RecRef2.CLOSE;
UNTIL RecRef.NEXT = 0;
Система в этом случае валится через непродолжительное время.
Запустил этот код у себя на 5-ке (Build 25560, 26084 как у вас, под рукой не окзался) для 2 млн. записей: всё ОК, система не валится, так же ОК если не делать RecRef2.CLOSE (зачем вообще делать CLOSE если вы не делаете до этого OPEN?).
Что вы вообще потом делаете с RecRef2 после duplicate? Если хотите в цикле после каждого duplicate 100% очистить RecRef2, то сделайте просто CLEAR(RecRef2), и правильнее будет даже CLEAR сделать до duplicate.
Может у вас всё же в коде программа впадает в бесконечный цикл из за неложенных фильтров?
По поводу производительности: по-видимому в recref та же технология как и в темповых rec-переменных, у этих тоже с определённого числа записей производительность падает, т.к. темповые таблицы грузятся в память клиента.