Есть некая база.
Написал простую обработку суть которой - помечать на удаление документы
Алогритм такой:
Запросом выбираем первых 500 документов без пометки помечаем и делаем запрос повторно. пока все документы не будут помечены.
Использую транзакции. Обнаружил интересный эффект:
Сперва сдела так:
НачатьТранзакцию
Цикл
ПометкаНаУдаление
ЗафиксироватьТранзакцию
НачатьТранзакцию
КонецЦикла
ЗафиксироватьТранзакцию
Обнаружил непонятное для себя поведение системы - транзакция не закрывается. Это видно даже по журналу регистрации
переписал на:
Цикл
НачатьТранзакцию
ПометкаНаУдаление
ЗафиксироватьТранзакцию
КонецЦикла
все нормально заработало.
В общем проблема как бы решена. Но мне не понять почему в первом варианте не отрабатывало закрытие транзакции??
Не исключаю что я что-то где-то недочитал в документации... хотя перед тем как писать и гуглил и СП читал ... несколько раз. Ответа нет, как и какого либо упоминания о циклах...
Везде только о вложенности транзакций... но у меня нет вложенности. ни в первом ни во втором варианте решения...
Кто-нибудь сталкивался с подобным? Или на лицо ошибка, если да то в чем заключается уточните пожалуйста....
Кто-то что-то не договаривает...
Скорей всего ты "делал запрос повторно" до фиксации транзакции, хотя тогда бы, наверное, всё зациклилось на первой порции
Такой вариант у меня тоже был )))
Сутки обработка якобы удаляла документы...
Но это было выявлено и устранено.
Запрос выполняется после фиксирования транзакции. Да и по журналу регистрации видно что документы помечаются на удаление и они разные... но все в одной транзакции состояние которой "незавершена"... Все это еще и приводило к разрастанию ТЕМП ДБ
(2) Ну на всяких там инфострартиках прочитал что использование транзакций ускоряет процесс удаления.
Дело не в том зачем она здесь а в феномене на который я "наступил". Т.е. если открыть транзакцию до цикла а потом в цикле закрыть и открыть новую то получается что транзакция не закрывается