Имя: Пароль:
1C
1С v8
Как запретить одновременное редактирование одного док-та двумя пользователями?
0 Jackman
 
08.02.12
20:14
Как запретить одновременное редактирование одного и того же док-та двумя пользователями? Т.е. один пользователь зашел в документ, сидит тупит, другой юзер зашел, быстро изменил и вышел, потом первый раздуплился, начал что-то менять, но сохранить не может, т.к. его версия неактуальна.
1 mirosh
 
08.02.12
20:15
(0) управляемые блокировки, это целая наука.
2 rs_trade
 
08.02.12
20:15
(0) при открытии устанавливать пессимистическую блокировку
3 Jackman
 
08.02.12
20:17
(2) Чуть подробнее, плиз.
4 МЮЛЛЕР
 
08.02.12
20:18
(0) Как вариант, устанавливай флаг модификации при открытии в подписке на событие
5 rs_trade
 
08.02.12
20:19
(3) смотри СП, Заблокировать() Но лучше наверное юзеров работать научить.
6 МЮЛЛЕР
 
08.02.12
20:21
(5) ппц... ну и знания у вас...
7 Шапокляк
 
08.02.12
20:22
(6) а можете поподробнее - чем вас такой подход не устраивает?
8 МЮЛЛЕР
 
08.02.12
20:23
+(4) Или кнопку сделай "Захватить документ" по такому же принципу
9 МЮЛЛЕР
 
08.02.12
20:24
(7) в 8.2 метод Заблокировать() используется для временной блокировки объекта в процессе выполнения одной и той же процедуры или функции в которой надо гарантировать неизменность изменения объекта из других мест этой же процедуры
10 mvgfirst
 
08.02.12
20:27
(9) А это откуда значния?
Я вот в СП такое прочитал:

Синтаксис:

Заблокировать()
Описание:

Выполняет блокировку объекта от изменения другими режимами или пользователями.

Доступность:

Сервер, толстый клиент, внешнее соединение.
11 rs_trade
 
08.02.12
20:28
(9) откуда это?
12 МЮЛЛЕР
 
08.02.12
20:29
(11) из СП
13 Шапокляк
 
08.02.12
20:33
(9)
Процедура ПриОткрытии()
   Попытка
       ЭтотОбъект.Заблокировать();
   Исключение
       ЭтаФорма.ТолькоПросмотр=Истина;
   КонецПопытки;

ну вот я так делаю и нет проблем. И в СП 8.2.
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Заблокировать (Lock)
Синтаксис:

Заблокировать()
Описание:

Выполняет блокировку объекта от изменения другими режимами или пользователями.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

Попытка
   НовДокумент.Заблокировать();
Исключение
   Текст = "ru = ""Невозможно заблокировать документ."";"
    + " en = ""Can't lock the document.""";
   Предупреждение(НСтр(Текст));
КонецПопытки;

А у вас откуда такой СП?
14 МЮЛЛЕР
 
08.02.12
20:35
(10)
завтра еще раз методичку Гончарова почитаю, самому интересно.
15 МЮЛЛЕР
 
08.02.12
20:36
+(14) там пример есть, может чего не догнал
16 МЮЛЛЕР
 
08.02.12
20:40
(15) насколько помню, Гончаров позиционирует него именно так, как в (9) написал
17 МЮЛЛЕР
 
08.02.12
20:42
+(16)
Там пример был типа:

Объект1 = ОбъектВася;
Объект2 = ОбъектВася;

Объект1.Заблокировать();
Объект2.ЗАписать() - записывает
Объект1.Записать() - не даст.
18 Jackman
 
08.02.12
20:43
Спасибо, попробую через Заблокировать().
19 МЮЛЛЕР
 
08.02.12
20:44
(18) отпишись, интересно
20 Jackman
 
08.02.12
20:56
(19) Всё получилось, делал как в (13). Еще раз всем спасибо.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший