Вход | Регистрация
 

Вызов ЗаблокироватьДанныеДляРедактирования() 2 раза

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

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

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

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

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует