|
1с блокировка объектов | ☑ | ||
---|---|---|---|---|
0
Мафусаил
13.01.20
✎
15:03
|
Привет!
Как можно узнать, заблокирован ли объект не блокируя его? Скажем если я делаю: Объект.Заблокировать(); // в таком случае для пользователя ИБ документ будет заблокирован А как узнать из кода, заблокировал ли пользователь (открыл ли форму документа) Объект.Заблокирован(); // у меня показываешь ложь |
|||
1
Ёпрст
13.01.20
✎
15:06
|
сам блокируешь, если удача, объект свободен, иначе заблокирован
|
|||
2
fisher
13.01.20
✎
15:13
|
(0) > Объект.Заблокирован(); // у меня показываешь ложь
А если прочитать СП по "Заблокирован", можно даже узнать - почему. |
|||
3
fisher
13.01.20
✎
15:14
|
В общем, только попыткой блокировки, как уже сказали.
Если уже заблокировано пользователем - будет исключение. |
|||
4
Мафусаил
13.01.20
✎
15:18
|
То есть без попытки блокировки ни как?
|
|||
5
fisher
13.01.20
✎
15:22
|
(4) Не-а. А в чем проблема разблокировать, если блокировка успешна?
|
|||
6
Мафусаил
13.01.20
✎
15:23
|
(5) я попробовал это сделать. но по какой то причине документ остаётся заблокированный на какое то время, на секунд 5
|
|||
7
Rovan
гуру
13.01.20
✎
15:25
|
https://its.1c.ru/db/metod8dev/content/2880/hdoc
При редактировании в форме объект не блокируется при открытии формы. Блокировка ставится при попытке интерактивного изменения объекта. То есть в форме блокировка ставится на объект только в тот момент, когда пользователь пытается изменить объект, вводя данные в элементы управления формы, связанные с реквизитами объекта. Так как между моментом считывания и моментом блокировки может произойти изменение объекта другим пользователем, то в момент блокировки производится проверка, что объект не был изменен. Если объект все же был изменен или в данный момент редактируется другим пользователем, то выдается сообщение о невозможности заблокировать объект. После этого пользователь должен перечитать данные и опять попытаться начать редактирование объекта. Разблокирование объекта происходит только после закрытия формы. То есть после записи объекта остается заблокированным. |
|||
8
fisher
13.01.20
✎
15:27
|
(6) Хм... Странно... Разблокируешь для того же ПРОГРАММНОГО объекта, в котором блокировал?
|
|||
9
Мафусаил
13.01.20
✎
15:41
|
Объект = Ссылка.ПолучитьОбъект();
Попытка Объект.Заблокировать(); Исключение Возврат "Невозможно заблокировать " + Символы.ПС + ОписаниеОшибки(); КонецПопытки; Объект.Комментарий = ТекущаяДата(); Объект.Записать(РежимЗаписиДокумента.Проведение); Объект.Разблокировать(); а пользователь сразу после заходит в документ и получает ошибку "операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных" Через 10 секунд информация в объекте обновляется и пользователь может работать с объектом. Может стоит уточнить, это всё происходил на web сервисе |
|||
10
Ёпрст
13.01.20
✎
15:47
|
(9) странный код...нафига проводить ради комментария ?
|
|||
11
Мафусаил
13.01.20
✎
15:48
|
(10) это тест
|
|||
12
Мафусаил
13.01.20
✎
15:55
|
не понимаю по какой причине объект может блокироваться на 10 секунд после его записи и тем более "Объект.Разблокировать();"
|
|||
13
Ёпрст
13.01.20
✎
15:56
|
(11) мот тогда с другой стороны зайти ?
в ПриОткрытии в Попытке делаешь блокировку, если НЕ удача, то всей форме делаешь толькопросмотр = истина и сообщение - что заблокирована (из сообщения об ошибки получаешь имя того, кто открыл объект и показываешь его пользователю). И не паришься в дальнейшем с ""операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных"" никогда. У нас так, например. |
|||
14
Ёпрст
13.01.20
✎
15:57
|
(12) видать время обновления бла бла бла ..10 сек
|
|||
15
Мафусаил
13.01.20
✎
15:59
|
(13) ну это как костыль получается, а при выходе из формы разблокировать()? И всё равно не понятно, почему объект заблокирован на 10 секунд
|
|||
16
Ёпрст
13.01.20
✎
16:10
|
(15) ничего не надо, оно само разблокируется, объекта то нет уже
|
|||
17
Мафусаил
13.01.20
✎
16:21
|
(16) а откуда берутся эти 10 секунд?
|
|||
18
pechkin
13.01.20
✎
16:22
|
делай лучше
ЗаблокироватьДанныеДляредактирования |
|||
19
Ёпрст
13.01.20
✎
16:23
|
(17) период опроса таблиц иб
|
|||
20
Мафусаил
13.01.20
✎
16:25
|
(19) это можно как то обыграть?
|
|||
21
Ёпрст
13.01.20
✎
16:27
|
(20) хз, как там оно в web сервисе реализовано, по мне, так лучше самому этим управлять, проще в при открытии блокировать
|
|||
22
Мафусаил
13.01.20
✎
16:31
|
О отдельно имя пользователя тоже не получить, кто занял документ? Он же только в ОписаниеОшибки() которую парсить не получиться
|
|||
23
Ёпрст
13.01.20
✎
16:37
|
(22) Почему не получиться ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |