Имя: Пароль:
1C
 
Управляемые блокировки при проведении
0 Asyc
 
18.10.23
14:13
Всем привет.
Клиент-серверная база, режим блокировок управляемый.
Имеется один документ, который сначала читает данные из РН, потом пишет их. Перед чтением устанавливаю исключительную блокировку по диапазону дат (например, предыдущий месяц) + организации.
Ставлю точку останова.

В другом сеансе открываю документ, который пишет данные в этот же регистр, но текущей датой. Никаких блокировок не устанавливаю. Пытаюсь провести, падаю по дедлоку в момент записи набора.

Собственно вопрос: при записи в регистр без установки блокировок он блокируется целиком? Мы этим управлять не можем?
1 Волшебник
 
18.10.23
14:18
Если режим блокировок управляемый, то его надо устанавливать в каждой транзакции
2 Asyc
 
18.10.23
14:52
(1) А если в транзакции проведения ничего не установить, включается какой-то дефолтный режим? И как понять на что именно он блокировки накладывает? На весь регистр целиком? Может кто знает где почитать про это, чет на ИТСе про запись не нашел ничего.
3 BDA80
 
18.10.23
15:55
(2) Любое изменение данных устанавливает неявную управляемую исключительную блокировку
4 H A D G E H O G s
 
18.10.23
16:08
deadlock от 1С или от СУБД?
Если от 1С - ищи его в ТЖ, все понятно там написано.
Если от СУБД (что врядли, но все же бывает) - строй граф deadlock-ов в профайлере и придется полюбиться.
5 Волшебник
 
18.10.23
16:10
(4) deadlock бывает только от СУБД
6 H A D G E H O G s
 
18.10.23
16:24
7 Valdis2007
 
19.10.23
07:38
(6) таки это не дедлок же? это отказ в блокировке, что-бы избежать дедлока?
8 H A D G E H O G s
 
19.10.23
08:52
(7) точно также, как и в субд. Но и там это называется deadlock.
10 Valdis2007
 
19.10.23
10:35
(8) мне кажется вы говорите про -"Взаимоблокировка", а дедлок несколько другое?
11 H A D G E H O G s
 
19.10.23
10:55
(10) Начинаешь понимать, когда женщина говорит "Иногда проще дать"
12 H A D G E H O G s
 
19.10.23
10:55
(10)
wiki:Взаимная_блокировка

Взаи́мная блокиро́вка (сокращённо взаимоблокировка, англ. deadlock) — ситуация в многозадачной среде или СУБД, при которой несколько процессов находятся в состоянии ожидания ресурсов, занятых друг другом, и ни один из них не может продолжать свое выполнение
13 Asyc
 
19.10.23
11:57
(3) Любое изменение данных устанавливает неявную управляемую исключительную блокировку

Допустим, а управлять полями блокировки при изменении данных мы можем?
14 bolobol
 
19.10.23
12:43
Есть подозрение, что какие-то танцы с исключительностью и итогами, либо падает не на записи, либо не по дедлоку.
15 Valdis2007
 
19.10.23
13:00
(12) за ссылку на вики конечно спасибо)) в данном конкретном случае, мы дедлок на уровне платформы 1с обсуждаем, а не других абстарктных инфосистем?
16 BDA80
 
19.10.23
13:04
(13) Сделать то что хотим? Задачу опишите
17 Asyc
 
19.10.23
13:47
(16) Хочу чтобы заблокированные одним документом данные (за предыдущий месяц) не мешали оперативному проведению другого документа (на текущую дату).

Блокировку в первом документе устанавливаю по диапазону дат. Во втором не делаю ничего.
Ставлю точку останова в первом документе, сразу после блокировки. Начинаю проводить второй - падаю с конфликтом блокировок при выполнении транзакции. Превышено максимальное время ожидания предоставления блокировки.
18 H A D G E H O G s
 
19.10.23
14:04
(17) у вас не дедлок, а превышено ожидание на блокировке.
Соберите ТЖ, проанализируйте его ИР, найдите Tlock с продолжительностью 20000, Ир покажет его пересечение с другой блокировкой. По структуре хранения данных, посмотрите, какие поля пересекаются.
19 Asyc
 
19.10.23
14:19
(18) Спасибо, буду пробовать.
20 bolobol
 
19.10.23
14:25
(19) Я так и не понял - в регистре нет итогов? Или итоги есть, но Организации разные в блокировке?
AdBlock убивает бесплатный контент. 1Сергей