Имя: Пароль:
1C
1С v8
Не фиксируется транзакция в цикле
0 mvgfirst
 
11.10.16
20:25
Есть некая база.
Написал простую обработку суть которой - помечать на удаление документы

Алогритм такой:
Запросом выбираем первых 500 документов без пометки помечаем и делаем запрос повторно. пока все документы не будут помечены.

Использую транзакции. Обнаружил интересный эффект:
Сперва сдела так:

НачатьТранзакцию
Цикл
  ПометкаНаУдаление
  ЗафиксироватьТранзакцию
  НачатьТранзакцию
КонецЦикла
ЗафиксироватьТранзакцию

Обнаружил непонятное для себя поведение системы - транзакция не закрывается. Это видно даже по журналу регистрации

переписал на:
Цикл
  НачатьТранзакцию
  ПометкаНаУдаление
  ЗафиксироватьТранзакцию
КонецЦикла

все нормально заработало.

В общем проблема как бы решена. Но мне не понять почему в первом варианте не отрабатывало закрытие транзакции??

Не исключаю что я что-то где-то недочитал в документации... хотя перед тем как писать и гуглил и СП читал ... несколько раз. Ответа нет, как и какого либо упоминания о циклах...
Везде только о вложенности транзакций... но у меня нет вложенности. ни в первом ни во втором варианте решения...

Кто-нибудь сталкивался с подобным? Или на лицо ошибка, если да то в чем заключается уточните пожалуйста....
1 RomanYS
 
11.10.16
20:30
Кто-то что-то не договаривает...
Скорей всего ты "делал запрос повторно" до фиксации транзакции, хотя тогда бы, наверное, всё зациклилось на первой порции
2 GROOVY
 
11.10.16
20:34
Зачем тут явная транзакция?
3 mvgfirst
 
11.10.16
20:35
Такой вариант у меня тоже был )))
Сутки обработка якобы удаляла документы...

Но это было выявлено и устранено.

Запрос выполняется после фиксирования транзакции. Да и по журналу регистрации видно что документы помечаются на удаление и они разные... но все в одной транзакции состояние которой "незавершена"... Все это еще и приводило к разрастанию ТЕМП ДБ
4 mvgfirst
 
11.10.16
20:37
(2) Ну на всяких там инфострартиках прочитал что использование транзакций ускоряет процесс удаления.

Дело не в том зачем она здесь а в феномене на который я "наступил". Т.е. если открыть транзакцию до цикла а потом в цикле закрыть и открыть новую то получается что транзакция не закрывается
5 MrStomak
 
11.10.16
21:12
(4) быстрее оно только на файловой будет.
Поведение ненормальное, хотелось бы реальный код.
Может быть и глюк ЖР, нужно проверять через попытку отката