|
Вызов ЗаблокироватьДанныеДляРедактирования() 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) Он не новый, не правильно написал, блокируется при открытии существующего документа
|
|