Имя: Пароль:
1C
1С v8
Управляемые блокировки. Что-то не выходит.
0 alexmobile
 
06.03.17
08:29
Есть оборотный регистр - рег1.
Есть документ который пишет в этот регистр свою табличную часть - тч1

В процедуре припроведении добавил код:
Движения.рс_Рег1.Записывать = Истина;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = "РегистрНакопления.рег1";
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = тч;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Объект", "Объект");
Блокировка.Заблокировать();

При проведении Ставлю точку останова после Блокировка.Заблокировать();, Провожу док1. Останавливаюсь на точке.
В параллельной сесии провожу док2. Объекты в табличной части различны.

Получаю сообщение:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 11.0: Превышено время ожидания запроса на блокировку.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=33, Severity=10, native=1222, line=1
1 alexmobile
 
06.03.17
08:32
У регистра измерений несколько, но блокировку я ставлю только по одному. флаг "Использование в итогах" установлен на всех измерениях. Может в этом загводка?
2 Spieluhr
 
06.03.17
10:16
таймаут происходит в СУБД, а не в 1С
3 тарам пам пам
 
06.03.17
10:40
Проверь режим управления блокировкой данных на конфигурации и на регистре. Может где-то автоматический стоит?
4 alexmobile
 
06.03.17
11:08
(3)управляемый
(2)и что делать?
5 alexmobile
 
06.03.17
11:09
(3)на конфе, автоматический и управляемый
6 Windyhead
 
06.03.17
12:03
А в параллельной транзакции на этой же блокировке ожидание?
7 alexmobile
 
06.03.17
12:14
(6)Как определить?
8 alexmobile
 
06.03.17
12:17
Объекты в документах разные
9 Spieluhr
 
06.03.17
15:20
(4) Разделение итогов у регистра включено?
10 alexmobile
 
07.03.17
06:26
(9)Да
11 alexmobile
 
07.03.17
07:37
Второй день бьюсь. Не ставится блокировка. Вроде все просто, но может какой ньюанс есть?
12 alexmobile
 
07.03.17
08:45
СУБД блокирует всю таблицу регистра?
13 DmitrO
 
07.03.17
09:03
(4)(5) при проведении, транзакция начинается документом, соответственно при таком режиме конфигурации для того чтобы транзакция началась в управляемом режиме, Управляемый должно стоять у документа, а не регистра.
14 alexmobile
 
07.03.17
09:10
(13) у документа тоже стоит управляемый
15 DmitrO
 
07.03.17
09:19
(14)а Удаление движений как стоит в метаданных документа?
16 alexmobile
 
07.03.17
09:30
Удалять автоматически
17 DmitrO
 
07.03.17
09:31
(16)ну вот и ответ
18 alexmobile
 
07.03.17
09:35
(17) В обработку удаления нужно тоже блокировки ставить, так?
19 DmitrO
 
07.03.17
09:38
(18)вообще, не разу не приходилось
такой вопрос наводит на мысль, что вы не совсем понимаете для чего вы ставите блокировку. Ответьте себе, для чего вообще ее ставить? (ну или можете сюда ответить)
20 alexmobile
 
07.03.17
09:43
Долго проводится документ. Когда одновременно несколько чел проводят свои доку-ты выходит сообщение о блокировке.
21 DmitrO
 
07.03.17
09:47
Это ответ на вопрос для чего может понадобиться переход с автоматических блокировок на управляемые, а я спрашивал не это.
Я спросил для чего блокировка нужна в принципе, как сущность (любая, автоматическая или управляемая - не важно).
22 DmitrO
 
07.03.17
10:01
Ну тогда я отвечу. Любая блокировка (автоматическая, управляемая, по чтению или исключительная) ставится для того чтобы иметь возможность ПРОЧИТАТЬ данные так, чтобы они какое-то время не изменялись в базе.
Если после установки блокировки данные вы читать не собираетесь (а отмене проведения - это наверняка так), то и ставить блокировку не зачем. А бывает что и при самом проведении тоже не читаем, значит тоже не нужно.
23 Windyhead
 
07.03.17
11:06
(20) Про разделение итогов читал?
Если в проведении нет проверки остатков, то блокировки тут уж точно не нужны, а для повышения параллельности проверь у регистров флажок разделения итогов. Задумайся над тем что в (22) написано.
Ну и заодно прочитай про "Удалять автоматически при отмене проведения" тоже может добавить скорости.
24 alexmobile
 
07.03.17
13:48
Ок. Спасибо
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.