![]() |
![]() |
![]() |
|
Как узнать, что документ кем-либо уже открыт | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
24.04.15
✎
14:05
|
Собственно, сабж. Возможно, сталкивался, но сейчас не смог сообразить. Как-то ведь система отслеживает одновременное открытие документа двумя разными пользователями.
Здесь часто требуют конкретику. Конкректно пишу запрос и вывожу в таблицу значений. Отдельная колонка будет "СейчасРедактируется". Если в момент выполнения запроса кто-то, получив объект, открыл форму конкретного документа, в этой колонке будет Истина. |
|||
1
fisher
24.04.15
✎
14:07
|
Попытаться наложить объектную блокировку (метод Заблокировать())
|
|||
2
PiotrLoginov
24.04.15
✎
14:11
|
так. а как получить, имея ссылку на документ, информацию о том, заблокирован ли он кем-либо?
|
|||
3
eklmn
гуру
24.04.15
✎
14:12
|
(2) получитьОбъект().заблокирован
|
|||
4
PiotrLoginov
24.04.15
✎
14:13
|
Из СП: Следует учитывать, что этот метод используется для проверки блокировки объекта базы данных конкретным объектом встроенного языка. Он не может быть использован, чтобы проверить, заблокирован ли вообще объект базы данных.
|
|||
5
PiotrLoginov
24.04.15
✎
14:13
|
и как же быть?
|
|||
6
PR
24.04.15
✎
14:14
|
(5) Вроде как никак
|
|||
7
PiotrLoginov
24.04.15
✎
14:15
|
т.е. способа получить, например, список открытых документов не существует. так ?
|
|||
8
Ёпрст
гуру
24.04.15
✎
14:15
|
Вот так воткни в док, сойдёт , для области:
Процедура ПриОткрытии() Попытка Заблокировать(); Исключение ЭтаФорма.ТолькоПросмотр = Истина; Сообщить("Какой то нехороший человек уже заблокировал документик, пичалька :(") КонецПопытки; КонецПроцедуры |
|||
9
eklmn
гуру
24.04.15
✎
14:16
|
(4) ну дальше Сп че не читал? :)
Попытка НовДокумент.Заблокировать(); Исключение Текст = "ru = ""Невозможно заблокировать документ."";" + " en = ""Can't lock the document."""; Предупреждение(НСтр(Текст)); КонецПопытки; |
|||
10
PiotrLoginov
24.04.15
✎
14:18
|
(8) (9) понял. а открывшие обязательно должны блокировать, чтобы я, открывая, получал исключение при попытке блокировать?
|
|||
11
PiotrLoginov
24.04.15
✎
14:19
|
другими словами, правильно ли я понимаю, что открыв документ, можно его блокировать несмотря на то, что кто-то открыл его раньше. При условии, что тот, кто открыл его раньше, не стал его блокировать.
|
|||
12
PiotrLoginov
24.04.15
✎
14:25
|
описание метода Разблокировать() :
Выполняет разблокировку документа, если он заблокирован этим объектом. Получается, если введу блокировку у каждого юзера при открытии, потом никакой админ не сможет разблокировать, пока документ открыт у убежавшего на обед юзера |
|||
13
PiotrLoginov
24.04.15
✎
14:33
|
Все же, спасибо за подсказки и примеры кода. Очень оперативно все прояснилось
|
|||
14
Ёпрст
гуру
24.04.15
✎
15:13
|
(12) кто раньше открыл - того и тапки. Как в православных клюшках.
Зато потом нет воя, что я дескать меняла-меняла, а записать не могу :( |
|||
15
vde69
24.04.15
✎
15:18
|
(14) вообще документ автоматом блокируется при изменении любого реквизита с флагом "ИзменяетДанные" по этому если все реквизиты формы которые в последствии следует сохранять имеют такой признак - никаких воплей не будет... при попытке отредактировать будет сообщение "объект заблокирован пользователем "Вася""
учите матчасть :) |
|||
16
vde69
24.04.15
✎
15:19
|
разумеется форма должна быть формой объекта а не произвольной...
|
|||
17
PiotrLoginov
24.04.15
✎
16:27
|
(15) понял, спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |