|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от AlexB
![]() Цитата:
Что вы вообще потом делаете с RecRef2 после duplicate? Если хотите в цикле после каждого duplicate 100% очистить RecRef2, то сделайте просто CLEAR(RecRef2), и правильнее будет даже CLEAR сделать до duplicate. Может у вас всё же в коде программа впадает в бесконечный цикл из за неложенных фильтров? По поводу производительности: по-видимому в recref та же технология как и в темповых rec-переменных, у этих тоже с определённого числа записей производительность падает, т.к. темповые таблицы грузятся в память клиента. Но CLEAR до дупликейта не надо делать (да он и не поможет здесь), ровно как не надо делать CLEAR при COPY на таблицу - фильтры затрутся новыми... В момент следующего дупликейта произойдет возврат нового рекрефа. На RecRef ключ пробовали накладывать (скажем, по номеру счета)? По счету отфильтровали? В моей базе записей больше 10 млн. на всей 17-й. В отфильтрованном и отсортированном по правильному ключу наборе - порядка 2 млн. Пробуйте с ключом/фильтрами. |
|
![]() |
#2 |
Участник
|
Накладывал ключ и фильтровал по счёту - всё без проблем, выше приведённый код (1-й вариант, без функции) отрабатывает у меня для 2 млн. записей за 1 минуту.
|
|
![]() |
#3 |
Участник
|
Цитата:
А вообще - надо втупую разбираться с конфигурацией... Повторюсь - вся проблема в этом простейшем куске кода, который я привел. Утечка в дупликейте, а не где-то ДО или ПОСЛЕ... В любом случае - спасибо, что попробовали. Плюсую за активность и интерес к проблеме ![]() |
|
![]() |
#4 |
Участник
|
|
|
![]() |
#5 |
Участник
|
Цитата:
Я, честно говоря, сомневаюсь, что дело в Build'е. Orwell, кстати, тестировал на более новом build'е 26084. Если у сообщества на build'e 26084 (которого у меня нет) тоже та же ошибка вылетает как и у Orwell, то тогда дело действительно в Build'е. |
|
![]() |
#6 |
Участник
|
Искала одну проблему, случайно зашла сюда.
Или я не совсем поняла, но почему DUBLICATE вы используете для каждой записи. Пример: RecRef.CLOSE; в 9-ой версии эта команда нужна. RecRef.OPEN(17); RecRef2 := RecRef.DUPLICATE; MESSAGE('%1 - %2',RecRef.COUNT,RecRef2.COUNT); DUBLICATE дублирует всю таблицу RecRef c фильтрами в табл.RecRef2, а не определенную запись. |
|