|   |   | 
| 
 | Как определить, что документ уже кем то открыт. | ☑ | ||
|---|---|---|---|---|
| 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) "с электрокаллорифером" - это пять. Страшно представить     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |