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