Имя: Пароль:
1C
 
Как узнать, что документ кем-либо уже открыт
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) понял, спасибо
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший