Имя: Пароль:
1C
1С v8
Поясните по управляемым блокировкам
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-х сеансах создать какой-нибудь справочникОбъект, и при этом в одном из них записать. А вот с РС такое не прокатывает