|
Блокировки на записи регистра сведений. | ☑ | ||
---|---|---|---|---|
0
Raxla
06.07.22
✎
12:38
|
Документы, подписка на событие "ОбработкаПроведения". Дополнительный регистр сведений куда пишутся данные, которые модифицируют предыдущие записи (выстраивается цепочка последовательности документов).
Суть проблемы: проведение последовательное, запись в регистр в транзакции, после того как транзакция зафиксировалась и произошёл выход из подписки, она откатывается или перетирается. В попытке, в ошибку не вываливаемся, блокировка - не работает, пробовал на всю таблицу и "ЗаблокироватьДанныеДляРедактирования". Предположительно, блокировки не работают, потому что есть вышестоящая транзакция. Примерный код, не обращайте внимание на оверхед, при добавлении записи в ней есть сложновычислимое поле (вычисляется один раз), поэтому проще добавить и потом модифицировать.
По итогу, в сообщения, последовательно выводятся обрабатываемые документы, а в регистр записи в случайном порядке и половины не хватает. Исключение - не отрабатывало ни разу. |
|||
1
Raxla
06.07.22
✎
12:40
|
если в отладке поставить точку останова и прощёлкивать по F5, давая время зафиксироваться транзакции, то работает как часы.
|
|||
2
Raxla
06.07.22
✎
12:43
|
Упорядочивается по времени и ссылке на документ, но разница между записями несколько секунд.
|
|||
3
rozer76
06.07.22
✎
12:50
|
если поле блокировки указать?
|
|||
4
ДедМорроз
06.07.22
✎
12:53
|
Так вы в подписке в транзакции проведения открываете еще одну?
|
|||
5
Raxla
06.07.22
✎
12:54
|
Если добавить в вывод ещё инфы, то видно, что, например, во время второй записи - первую может не видеть.
Да, открыаю ещё одну. Поля блокировки пробовал указывать. |
|||
6
Naumov
06.07.22
✎
12:55
|
(5) Откуда он ее увидит до фиксации транзакции? Читай текущий набор
|
|||
7
Raxla
06.07.22
✎
12:58
|
(6) Да, я понимаю, что пока вышестоящая транзакция не завершится, моё Зафиксировать, просто - фикция. Но вышестоящими транзакциями я не управляю. У меня только процедура из подписки.
Мне надо что бы блокировки работали. |
|||
8
Raxla
06.07.22
✎
13:00
|
По поводу текущего набора, не понимаю: будет разница между запросом и набором записей?
|
|||
9
Raxla
06.07.22
✎
13:04
|
Запись и внесение измененеий, через МенеджерЗаписи, то есть по одной.
|
|||
10
rozer76
06.07.22
✎
13:04
|
(8) не не будет разницы, вложенная транзакция тут лишнее или в обработке исключения вызывать исключение которое пробрасывается в "ОбработкаПроведения". Блокировка будет работать если задать пространство блокировки.
|
|||
11
rozer76
06.07.22
✎
13:07
|
>> "ЗаблокироватьДанныеДляРедактирования"
это вообще не о транзакционных блокировках ибо это объектная блокировка и не применима тут. >>Предположительно, блокировки не работают, потому что есть вышестоящая транзакция. нет |
|||
12
Raxla
06.07.22
✎
13:08
|
(11) Транзакция убиралась, эффекта никакого. Область и так - вся таблица, делалось и по ключу, без разницы.
|
|||
13
rozer76
06.07.22
✎
13:13
|
(12) странно ) ну делай другой мьютекс...но в транзакции проведения дока это такое себе ...
|
|||
14
Raxla
06.07.22
✎
13:20
|
(13) То что странно, и так - понятно. Какой я мьютекс сделаю, если всё в транакции, а значит изолировано от других участнков до её завершения?
|
|||
15
ДедМорроз
06.07.22
✎
16:15
|
Когда мы ставим управляемую блокировкк,то она работает с момента установки до момента применения или отката первой транзакции,но она никак на запись не влияет,если код ее не ставит,а пишет,то он и не будет заблокирован.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |