Цикл ОПЕРАЦИИ
Для работы требуется соединение с базой данных.
Цикл ОПЕРАЦИИ позволяет перебрать операции, соответствующие заданным условиям.
ЦИКЛ ОПЕРАЦИИ(СТРОКА: журнал; ФИЛЬТР: фильтр; МАСКА_ОПЕР: маска; СОРТ_ОПЕР: сортировка; ПЕРЕМ ОПЕРАЦИЯ: операция; СТРОКА: режим = "")
Этот цикл поддерживает обработку ошибок в секции ИНАЧЕ.
Параметры
- журнал
- Имя журнала.
- фильтр
- Условия фильтрации.
- маска
- Условия маски.
- сортировка
- Условия сортировки операций.
- операция
- Переменная-счетчик. Если имеет тип ОПЕРАЦИЯ, то перебираются операции всех типов, иначе – только типа, соответствующего типу переменной-счетчика. Если в качестве имени типа операции задан конкретный тип, параметры фильтрации соответственно ограничиваются.
- режим
- Режим перебора операций (типа итератора) на стороне сервера. Если явно указанный режим не соответствует заданному фильтру или сортировке, то сервер возвращает ошибку "не поддерживется".
Доступны следующие режимы:
- "" или "AUTO" – автоматический выбор режима. Если в сотрировке указаны только дата, документ и комментарий с чувствительностью к регистру символов, а также не используется программируемый фильтр, то создается однопроходный итератор. Во всех прочих случаях создается "мертвый" итератор.
- "ALIVE" – обновляемая выборка, "живой" итератор. Сортировка только по возрастанию даты, фильтр только по фиксированныи полям операции. При работе цикла будут видны все изменения (включая добавление и удаление операций), в т.ч. сделанные другими пользователями.
- "FORWARD" – однопроходный итератор. Наиболее простой, быстрый и экономный режим перебора, т.к. перебор выполняется средствами СУБД. В память на стороне сервера операции загружаются порциями. Подходит для большинства задач. Ограничением является то, что требует открытой транзакции на время работы цикла. Наличие транзакции может ограничивать параллельную работу нескольких пользователей. Следует избегать длительных циклов такого типа при интенсивной многопользовательской работе. Заменой может выступать режим "KEYSET".
- "KEYSET" – перебор по зафиксированному множеству номеров (id) операций. В отличие от режимов "ALIVE" и "FORWARD" не видит изменений операций, кроме удаления. В этом режиме поддерживается сортировка только по дате, комментарию или документу операции. Не поддерживается программируемый фильтр.
- "DEAD" – зафиксированная выборка, "мертвый" итератор. Поддерживаются все возможности фильтра и сортировки. Наиболее медленный и ресурсоемкий режим. Все отфильтрованные операции загружаются в память на стороне сервера. Все изменения операций, сделанные после инициализации цикла не учитываются пр переборе (эффект мгновенного снимка). Этот режим может использоваться для построения консистентных отчетов.