Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

не работает "Заблокировать()" в попытке

не работает "Заблокировать()" в попытке
Я
   assasu
 
13.02.18 - 06:42
Добрый день.

вот эта конструкция 

Попытка 
        ДокументОбъект.Заблокировать();
Исключение
        Сообщить("блаблабла");
КонецПопытки

вдруг перестала работать в попытке, т.е. исключения нет , я виду окно с красным крестом и вариант только закрыть приложение.

кто то встречал может?
 
 
   assasu
 
1 - 13.02.18 - 06:46
работаем на 8.3.9.1850, УТ 10.3
   МимохожийОднако
 
2 - 13.02.18 - 07:31
Отладчик до слова Попытка доходит?
   rphosts
 
3 - 13.02.18 - 07:36
(1) УТ 10? Это та, что на старых формах?
   assasu
 
4 - 13.02.18 - 07:37
да,доходит.
пробовал менять режим блокировок на автоматический - тоже самое.
   assasu
 
5 - 13.02.18 - 07:37
(3) да
   catena
 
6 - 13.02.18 - 07:59
Что написано в окне с красным крестом и в каком стратегическом месте выполняется конструкция?
Режим блокировок - это из другой оперы.
   assasu
 
7 - 13.02.18 - 08:32
(6) написано что объект уже заблокирован .

конструкция как раз и задумывалась как предупреждение, вновь открывающему документ. А оказалось что не работает оно
   assasu
 
8 - 13.02.18 - 08:35
(6) "Ошибка блокировки объекта, объект уже заблокирован"
   Сияющий в темноте
 
9 - 13.02.18 - 08:39
Оно же,насколько я помню,возвращает успешность блокировки,то есть исключения не будет
   assasu
 
10 - 13.02.18 - 08:40
(9) посмотри инет. везде только про эту конструкцию и пишут
 
 Рекламное место пустует
   Гипервизор
 
11 - 13.02.18 - 08:44
У меня все работает. Ну не отрабатывает у вас в попытке, сделайте без попытки. Проверяйте успешность через Заблокирован().
   assasu
 
12 - 13.02.18 - 08:50
(11) собственно, написал  потому что оно  и работало ранее. и работало на той же платформе . появилось недавно и внезапно.
   Сти
 
13 - 13.02.18 - 09:36
(12) режим совместимости не меняли?
   patria0muerte
 
14 - 13.02.18 - 09:42
(11) Ну не совсем эти методы совместимы, если мне память не изменяет.

Там идея в том, что метод Заблокирован() определяет только объекты, заблокированные методом Заблокирован(), т.е. если объект просто открыт и изменен пользователем - то Заблокирован() все равно вернет Ложь.

Заблокировать() в Попытке я например юзаю в случаях когда мне нужно обработать пачку документов, но при этом - не трогать объекты, которые сейчас заблокированы пользователями.
   patria0muerte
 
15 - 13.02.18 - 09:42
+(14) *метод Заблокирован() определяет только объекты, заблокированные методом ЗаблокироваТЬ()
   patria0muerte
 
16 - 13.02.18 - 09:46
(0) А нафига вообще эти свистопляски? 1С же сама блокирует объект, если юзер его модифицировал
   catena
 
17 - 13.02.18 - 10:15
(16)Это как раз, когда надо, чтобы юзер не модифицирнул в процессе.
   patria0muerte
 
18 - 13.02.18 - 10:36
(17) А как он его модифицирует, если объект уже заблокирован?
   assasu
 
19 - 13.02.18 - 11:58
(16) свистопляска началась с того что два человека открыли один и тот же документ. ранее у одного из них всплывало окно, он его закрывал и все. Теперь все можно только закрыть аварийно. Т.е. главная проблема - аварийное завершение сеанса,хотя сам метод в попытку обернут
   catena
 
20 - 13.02.18 - 12:00
(18)Так вот его и надо заблокировать, чтобы пользователь его не трогал во время обработки
   assasu
 
21 - 13.02.18 - 12:02
(13) стоит Версия 8.2.16. кажется не менялся вообще
   assasu
 
22 - 13.02.18 - 12:09
(15) проверил только что. метод вернул Ложь. хотя под другим пользователем я выполнил Заблокировать()
в общем не так оно как то работает
   PiotrLoginov
 
23 - 13.02.18 - 12:10
(21) ох уж это "кажется"...
   assasu
 
24 - 13.02.18 - 12:13
(23) я прежде полистал инет. ничего не нашел по поводу изменения поведения "Заблокировать()" с изменением платформы.
   МимохожийОднако
 
25 - 13.02.18 - 12:14
(19) Сделай проверку ПередОткрытием() и Сообщить() при неудаче
   assasu
 
26 - 13.02.18 - 12:15
(25) я ее в (0) и сделал...
   МимохожийОднако
 
27 - 13.02.18 - 12:17
(26) В каком событии разместил?
   assasu
 
28 - 13.02.18 - 12:22
(27) модуль формы, Перед открытием.
пробовал так же и При открытии
   МимохожийОднако
 
29 - 13.02.18 - 12:46
Какая платформа? Управляемая форма или обычная?
у меня в УТ10.3
для внешней обработки работает такая конструкция
Спр=Справочники.ВнешниеОбработки.НайтиПоНаименованию(ЭтотОбъект.Метаданные().Представление());
    Если Спр.Пустая() Тогда
         Возврат;
    КонецЕсли; 
    НайдОбъект=Спр.ПолучитьОбъект();
    Попытка
        НайдОбъект.Заблокировать();
    Исключение
        Предупреждение("Обработка "+НайдОбъект+"уже открыта ранее")// + "!"+ ОписаниеОшибки());

        Отказ=Истина;
    КонецПопытки;
   assasu
 
30 - 13.02.18 - 12:54
(29) работаем на 8.3.9.1850, УТ 10.3, формы обычные.

этот код выдаст "Обработка...уже открыта ранее", т.к. сработал о исключение.
Мой код аналогичен, только не доходит дело до попытки, фатальная ошибка сразу на .Заблокировать()
   МимохожийОднако
 
31 - 13.02.18 - 12:56
Покажи код как получаешь ДокументОбъект
   assasu
 
32 - 13.02.18 - 12:56
(31) ЭтотОбъект
   МимохожийОднако
 
33 - 13.02.18 - 12:57
(32) Это не код
 
 
   assasu
 
34 - 13.02.18 - 13:01
(33)
Если не ЭтоНовый() тогда
    Попытка
        ЭтотОбъект.Заблокировать();
    Исключение
        Предупреждение("Документ открыт другим пользователем");
    КонецПопытки;
КонецЕсли;
   Timon1405
 
35 - 13.02.18 - 13:29
#Если Клиент Тогда

    Предупреждение("Документ открыт другим пользователем");
#КонецЕсли
   assasu
 
36 - 13.02.18 - 13:30
(35) код не выходит в исключение. все заваливается на
ЭтотОбъект.Заблокировать();
   catena
 
37 - 13.02.18 - 13:36
(36)А если написать Попытка к=1/0 Исключение КонецПопытки;
   assasu
 
38 - 13.02.18 - 13:44
(37) это работает в сотне мест конфигурации
   patria0muerte
 
39 - 14.02.18 - 02:51
(19) Так, пажжжи.

У тебя есть документ и два пользователя, которые работают с ним.

- Пользователь1 открывает документ.
- Пользователь2 открывает документ.
- Пользователь1 модифицирует документ, при этом - происходит блокирование объекта средствами платформы.
- Пользователь2 при попытке изменить реквизит - получает ошибку о том, что запись уже заблокирована и не может поменять ничего в документе

Внимание вопрос: нахрена тебе его еще и кодом блокировать?
   assasu
 
40 - 14.02.18 - 04:57
(39)

"- Пользователь2 при попытке изменить реквизит - получает ошибку о том, что запись уже заблокирована и не может поменять ничего в документе "

Пользователь получает ошибку о том что документ заблокирован и не может ничего поменять в документе И (внимание!) у него на экране нет кнопки "Продолжить работать", он видит только окно с красным крестом и вариант закрыть приложение
   assasu
 
41 - 14.02.18 - 04:57
(39) я и хотел кодом предупредить его о том что кто то сидит в документе..так и код не работает тут ,все валится в аварийное завершение.
   DrZombi
 
42 - 14.02.18 - 06:53
(41) Любопытненько, получается, что если хотите устойчивую работу кода, то не стоит гнаться за обновлениями клиента 1С :)
   assasu
 
43 - 14.02.18 - 06:59
(42) да, согласен.
   DrZombi
 
44 - 14.02.18 - 07:05
(43) Остается иметь возможность разворачивать несколько серверов 1С, различных версий.
Полюбому у вас еще бухия есть?
   assasu
 
45 - 14.02.18 - 07:23
у нас все есть
   DrZombi
 
46 - 14.02.18 - 07:27
(45) Предложи админам установить еще один сервер 1С
   DrZombi
 
47 - 14.02.18 - 07:29
+ Может сейчас уже не поможет, но в будущем сможешь в торговой БД работать с ошибками одной и той же версии клиента. А не ловить новые баги от новых релизов :)
   patria0muerte
 
48 - 14.02.18 - 07:55
(40) "Пользователь получает ошибку о том что документ заблокирован и не может ничего поменять в документе И (внимание!) у него на экране нет кнопки "Продолжить работать", он видит только окно с красным крестом и вариант закрыть приложение"

Это (появление окна с красным крестом) происходит в тот момент, когда выполняется строчка:

ДокументОбъект.Заблокировать();

Верно?
   patria0muerte
 
49 - 14.02.18 - 07:56
+(48)Я просто понять не могу немного: Валится в такую же ошибку и в том случае, когда в коде нет никаких Заблокировать()?
 
 Рекламное место пустует
   assasu
 
50 - 14.02.18 - 08:53
(48) нет. изначально такого кода не было.
нормальная реакция к которой все привыкли : открываешь повторно документ, получаешь предупреждение что открыто уже кем то , закрываешь документ и работаешь дальше. Тут нет предупреждения , можно только закрыть всю программу целиком.
   assasu
 
51 - 14.02.18 - 08:54
(49) да, верно... валится. а код появился как я написал в (41)
   Timon1405
 
52 - 14.02.18 - 09:42
(50) а в ЖР что пишет в этот момент? может прав нет на реквизиты документа или что-то подобное.
   assasu
 
53 - 14.02.18 - 09:51
(52) пусто в ЖР
   МимохожийОднако
 
54 - 14.02.18 - 10:12
Документ открывается из формы списка. Значит блокировку надо делать в этой форме в момент события выбора документа, а не через ЭтотОбъект.
   assasu
 
55 - 14.02.18 - 10:26
не влияет это ни на что
   strrike
 
56 - 14.02.18 - 10:28
ТиИ сделай
   Фрэнки
 
57 - 14.02.18 - 10:38
(55)// работаем на 8.3.9.1850, УТ 10.3


вроде нормальный выбор платформы. Наверное и работаете давно.

А копию базы поднять не пробовал? Может в копии этот глюк не проявит себя никак? Ну и прогнать все мыслимые надругательства на базой в плане тестирования на ошибки.

Кстати, в файловом режиме как она?
   assasu
 
58 - 14.02.18 - 10:57
(57) на копии и тестируем . в файле ее запустить нет возможности - размер большой.
Сейчас думаю как эту копию можно унизить и надругать.
   МимохожийОднако
 
59 - 14.02.18 - 11:02
(55) Краткость - сестра таланта. Видимо, не в твоём случае. Как партизан-подробности и клещами не выцепить.
(58) Создай пустую базу из файла конфигурации, заполни несколько строк и проверь.
   assasu
 
60 - 14.02.18 - 11:06
(60) прочти внимательно все что было выше.

еще раз для тебя :
попытка
 к = 1/0;
исключание
 сообщить("ты делишь на ноль!");
конецпопытки;
выдает "ты делишь на ноль"

а вот это 
попытка
 Этотобъект.Заблокировать()
исключение
 сообщить("ты делишь на ноль");
конецпопытки

закрывает сеанс и не идет в исключение
   Фрэнки
 
61 - 14.02.18 - 11:16
(60) но не на всех видах документов, правильно?
Или на любых видах, где только эту конструкцию применили?
   assasu
 
62 - 15.02.18 - 06:26
(61) ситуация получила развитие вчера.
такая проблема наблюдается на всех видах документов.
кроме того
- само собой перестало работать динамическое обновление. даже если просто добавить пару строк в код динамически не обновиться
- изменился вход в конфигуратор , если ты вторым пользователем заходишь то сразу появляется окно с кнопкой "ОК" и предупреждением что конфигуратор занят. Ранее там была кнопка "Попробовать еще раз"
   assasu
 
63 - 28.02.18 - 06:29
кому интересно :
все вылечилось с переходом на 8.3.10.2699


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует