Имя: Пароль:
1C
 
Вызов ЗаблокироватьДанныеДляРедактирования() 2 раза
0 SpitfireIX
 
11.02.19
11:30
Добрый день.
Столкнулся с непонятным поведением функции ЗаблокироватьДанныеДляРедактирования().

Суть в том что при открытии документа вызываю ЗаблокироватьДанныеДляРедактирования(Ссылка,,ИдентификаторФормы), в которой открыт этот документ. Документ может быть новый, так что через какоето время вызывается функция записи этого документа, и если форма не закрывается, то документ записывается и опять вызывается ЗаблокироватьДанныеДляРедактирования(Ссылка,,ИдентификаторФормы), чтобы нельзя было открыть его другому пользователю.

И проблема в том что, если потом вызвать РазблокироватьДанныеДляРедактирования(Ссылка,ИдентификаторФормы)(чтобы отпустить документ), и попытаться открыть его в другом сеансе, который так же при открытии устанавливает блокировку, то падает исключение что документ заблокирован.

Но, если перед установкой второй блокировки, сначала разблокировать объект, а потом уже устанавливать блокировку, то функционал работает.

Кто нибудь сталкивался с таким или может поделиться ссылкой как правильно обойти этот момент?
1 SpitfireIX
 
11.02.19
11:32
Забыл добавить, обработка внешняя, форма произвольная без основного объекта. Документ объект хранится в реквизите формы, без галки сохраняемые данные.
2 SpitfireIX
 
11.02.19
11:34
Для простоты, алгоритм получается следующий:
Ссылка - До

Сеанс 1:
1) ЗаблокироватьДанныеДляРедактирования((Ссылка,,ИдентификаторФормы1)
2) Запись документа
3)ЗаблокироватьДанныеДляРедактирования((Ссылка,,ИдентификаторФормы1) (!Вне транзакции записи)
4) РазблокироватьДанныеДляРедактирования(Ссылка,ИдентификаторФормы)

Сеанс2:
1)ЗаблокироватьДанныеДляРедактирования((Ссылка,,ИдентификаторФормы2)

Падает исключение что объект заблокирован
3 DmitrO
 
11.02.19
11:42
предлагаю начать использовать второй параметр метода ЗаблокироватьДанныеДляРедактирования )
4 SpitfireIX
 
11.02.19
11:46
(3) А смысл?

Если указан, то при блокировке объекта проверяется версия объекта базы данных. При несовпадении версии или отсутствии объекта в базе данных генерируется исключение.

Проблема не в том что блокировка не устанавливается, проблема в том что она не снимается. Или там есть какойто нюанс который я не знаю, можете объяснить поподробнее?
5 SpitfireIX
 
12.02.19
10:35
Апну
6 DmitrO
 
12.02.19
10:42
А зачем вообще блокировать для редактирования новый документ (по пустой ссылке)?
7 SpitfireIX
 
12.02.19
11:52
(6) Он не новый, не правильно написал, блокируется при открытии существующего документа