|
Транзакции и видимость данных из разных сессий 1С 8.2 |
☑ |
0
evgen21
13.05.15
✎
17:41
|
Прошу помощи.
Столкнулся с такой проблемой: перепровожу документ и в этот момент вываливаюсь в ошибку, после чего данные корректно откатываютсся. Ошибка возникает после записи данных по регистрам. Но вопрос проявился, когда я отлаживал код и остановился перед ошибкой, то в другой сессии 1С я видел уже измененные данные. Вот мне и не понятно как это происходит, ведь проведение должно проходить в рамках транзакции, а следовательно, пока не пройдет коммит, то другие сессии не должны этого видеть. Что не так?
Использую 8.2 + MS SQL 2012.
|
|
1
ДенисЧ
13.05.15
✎
17:42
|
1с очень любит грязное чтение использовать...
|
|
2
Fragster
гуру
13.05.15
✎
17:42
|
переходи на 8.3
|
|
3
Fragster
гуру
13.05.15
✎
17:42
|
|
|
4
evgen21
13.05.15
✎
17:43
|
Ну, 8.3 это не вариант :), только с 7.7 перешли на 8.2
|
|
5
H A D G E H O G s
13.05.15
✎
17:43
|
(0) Смотри в другой сессии в транзации.
(1) Оно использует грязное чтение там, где надо.
|
|
6
evgen21
13.05.15
✎
17:55
|
Так в том-то и дело, что мне ненужно "грязного чтения". А вот про просмотр в транзакции сейчас попробую.
|
|
7
H A D G E H O G s
13.05.15
✎
17:56
|
(6) Будет ожидание на блокировке.
|
|
8
evgen21
13.05.15
✎
18:09
|
Да, именно так и получилось.
Похоже я понял суть проблемы.
Спасибо всем за оперативную помощь!
|
|
9
mistеr
13.05.15
✎
18:10
|
(1) (3) Вот гады! Не знал и не ожидал такого..
|
|
10
evgen21
13.05.15
✎
18:14
|
Т.е. получается, что хоть у нас и уровень изоляции READ_COMMITED, то 1С всё равно его обходит (не всегда) конструкцией NOLOCK и делает по факту READ_UNCOMMITED.
Это подстава в угоду ухода от блокировок.
|
|
11
Гёдза
13.05.15
✎
18:27
|
(10) Как уже говорили, переходи на 8.3
|
|
12
spock
13.05.15
✎
19:41
|
(10) Какая альтернатива, кроме включения версионника?
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой