|
Как определить, что документ уже кем то открыт. | ☑ | ||
---|---|---|---|---|
0
ogion83
02.06.16
✎
13:40
|
Хочу сделать вывод сообщения, что документ (форма) уже открыт другим пользователем. Как вот это определить?
|
|||
1
Nuobu
02.06.16
✎
13:41
|
ДокументОбъект.Заблокирован();
|
|||
2
Рэйв
02.06.16
✎
13:41
|
попробуй его записать в полпытке
|
|||
3
ogion83
02.06.16
✎
13:48
|
(1) Что то не сработало.
|
|||
4
catena
02.06.16
✎
13:49
|
(1)(2)Разве это сработает на открытие формы? До изменения реквизитов?
|
|||
5
Nuobu
02.06.16
✎
13:49
|
(3) Если НЕ ДокументОбъект.Заблокирован() Тогда
Ты "НЕ" используешь? |
|||
6
AllJoke
02.06.16
✎
13:50
|
Примечание:
Следует учитывать, что этот метод используется для проверки блокировки объекта базы данных конкретным объектом встроенного языка. Он не может быть использован, чтобы проверить, заблокирован ли вообще объект базы данных. |
|||
7
Fish
02.06.16
✎
13:51
|
(0) А чем платформенное предупреждение не устраивает?
|
|||
8
aka AMIGO
02.06.16
✎
13:52
|
Извините, а команды что-то типа "ОткрытьДокумент" в 8-ке нет?
(7) может, ему надо в обработке/отчете.. |
|||
9
ogion83
02.06.16
✎
13:53
|
(7) Предупреждение появляется когда человек хочет сохранить изменения, а ему не дает, так как документ уже открыт другим. Вот и хочу чтоб было видно заранее, что документ открыт
|
|||
10
Фрэнки
02.06.16
✎
13:53
|
не знаю, не думал, что нужно делать в УФ, но в толстых я делал так
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) // - - - Заблокируем от работающих остальных Попытка ЭтотОбъект.Заблокировать(); Исключение Сообщить("Форма документа уже открыта другим пользователем!"); Отказ = Истина; Возврат; КонецПопытки; |
|||
11
aka AMIGO
02.06.16
✎
13:54
|
(10) А, вишь, ТС надо интерактивно.
|
|||
12
mistеr
02.06.16
✎
13:55
|
(0) При открытии блокируй что-нибудь. Но будь готов отбиваться от пользователей. Я бы точно по башке настучал.
|
|||
13
Фрэнки
02.06.16
✎
13:55
|
и в дополнение к (10)
Процедура ПриЗакрытии() Если ЭтотОбъект.Заблокирован() Тогда ЭтотОбъект.Разблокировать(); КонецЕсли; КонецПроцедуры |
|||
14
Evgueni
02.06.16
✎
13:55
|
Попытка
Заблокировать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Показывает, кто именно заблокировал документ |
|||
15
Фрэнки
02.06.16
✎
13:56
|
(11) не пойму я что надо ТС
|
|||
16
aka AMIGO
02.06.16
✎
13:58
|
(15) глянь в (9) - чтобы "не давало" открыть документ, если кем-то уже открыт
"При записи" - ему поздно, время юзером напрасно потеряно :) |
|||
17
Фрэнки
02.06.16
✎
14:00
|
(16) я даю сразу блокировку в процедуре ПередОткрытием и снимаю блокировку в процедуре ПриЗакрытии
|
|||
18
aka AMIGO
02.06.16
✎
14:01
|
(17) Отлично. Вот, и пусть ТС экспериментирует :)
|
|||
19
ogion83
02.06.16
✎
14:02
|
(10) и (14) Благодарствую сделал.
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) Попытка ДокументОбъект.Заблокировать(); Исключение Предупреждение("Документ открыт другим пользователем. Изменения не будут сохранены!" + ОписаниеОшибки()); Отказ = Ложь; КонецПопытки; КонецПроцедуры Ещё описание ошибки подсокращю) |
|||
20
aka AMIGO
02.06.16
✎
14:03
|
(19) И ешё "..чу" "..щу" пиши через "У" :)
|
|||
21
Evgueni
02.06.16
✎
14:05
|
(20) У меня кладовщики в приходном ордере пишут пишут Цынк 20 кг :)
|
|||
22
Фрэнки
02.06.16
✎
14:06
|
(19) не забудь снять установленную блокировку
|
|||
23
mistеr
02.06.16
✎
14:06
|
(21) Скажи спасибо, что не "цынг".
|
|||
24
aka AMIGO
02.06.16
✎
14:13
|
(21) Кладовщики-то еще ладно.. у нас люди с ВО пишут с ошибками, аж неудобно за них становится :)
Типа "Хороший ведь человек, а такую галиматью накатал!.." :) |
|||
25
ogion83
02.06.16
✎
14:15
|
(20) Очепятка)
|
|||
26
aka AMIGO
02.06.16
✎
14:18
|
(25) шУтю я :)
+24 Копипаст из нашего рабочего Справочника "Товары": "Кабель-каналы пефарированные мелаллические" "Кабель-каналы гипкие" "Управляющие блоки для вент. установок с электрокаллорифером" :) |
|||
27
oslokot
02.06.16
✎
14:18
|
(19) надо бы еще туда имя пользователя-открывателя впесать
|
|||
28
ogion83
02.06.16
✎
14:21
|
(27) В описании ошибки он будет.
Всё лишнее обрезал: Попытка ДокументОбъект.Заблокировать(); Исключение Ошибка = ""; Ошибка = ОписаниеОшибки(); Ошибка = Прав(Ошибка,СтрДлина(Ошибка) - Найти(Ошибка,"пользователь:") - 12); Ошибка = Лев(Ошибка,СтрДлина(Ошибка) - 28); Предупреждение("Изменения не будут сохранены! Документ открыт пользователем:" + Ошибка); Отказ = Ложь; КонецПопытки; |
|||
29
oslokot
02.06.16
✎
14:24
|
(28) а, ну да в описании все есть.
Форму то хоть на просмотр оставь :) |
|||
30
aka AMIGO
02.06.16
✎
14:26
|
Хм.. интересно: Найти(Ошибка,"пользователь:") - не текущий пользователь будет отображен?
|
|||
31
ogion83
02.06.16
✎
14:31
|
(29) Отказ = Ложь как раз и позволит форме все же открыться.
(30) Не, всё в норме, я проверил |
|||
32
Ёпрст
02.06.16
✎
14:43
|
(28)
Лучше так: Процедура ПриОткрытии() Попытка Заблокировать(); Исключение ЭтаФорма.ТолькоПросмотр = Истина; Ошибка_Содержание = ОписаниеОшибки(); Сообщить("Документ используется другим пользователем!"+Символы.ПС+Сред(Ошибка_Содержание,Найти(Ошибка_Содержание,"Объект уже заблокирован"))); КонецПопытки; ЗЫ: так форма будет открыта на просмотр, это горраааздо лучше, чем её не открытие |
|||
33
Dark_Warrior
02.06.16
✎
14:54
|
(26) "с электрокаллорифером" - это пять. Страшно представить
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |