|
Поясните по управляемым блокировкам
| ☑ |
0
Fragster
гуру
03.03.13
✎
17:39
|
1. Создаем регистр сведений с одним измерением, для простоты - число.
2. в одной транзакции (управляемый режим) не ставя блокировку на него - делаем запрос :
ВЫБРАТЬ
Количество(*) КАК Колво
ИЗ
РегистрСведений.РС КАК РС
и ставим точку останова после выполнения запроса.
3. В другом потоке пытаемся сделать:
Запись = РегистрыСведений.РС.СоздатьМенеджерЗаписи();
Запись.Измерение = 1;
Запись.Записать();
В момент "Записать" выполнение останавливается по блокировке.
4. Теперь добавляем в РС ресурс, повторяем 2 и 3. В момент "Записать" остановки по блокировке нет.
Вопрос: какого фига? потерял на этом пару часов времени...
|
|
1
Fragster
гуру
03.03.13
✎
17:41
|
а, не, вру. надо было вместо запроса сделать Набор = ... создатьНаборЗаписей(); Набор.Прочитать();
|
|
2
Fragster
гуру
03.03.13
✎
17:41
|
в общем - чтение набора блокирует запись в РС, получается.
|
|
3
Fragster
гуру
03.03.13
✎
17:42
|
и набор можэно даже вне транзакции читать
|
|
4
alexei366
03.03.13
✎
17:49
|
Как я понимаю, только запрос не как и не влияет на блокировки наверно.
|
|
5
Fragster
гуру
03.03.13
✎
17:51
|
(4) ну да. Просто ЕМНИП никто не мешает в 2-х сеансах создать какой-нибудь справочникОбъект, и при этом в одном из них записать. А вот с РС такое не прокатывает
|
|