Имя: Пароль:
1C
 
Может ли ЭтотОбъект.Заблокировать() вызывать блокировки ?
0 ИС-2
 
naïve
16.01.23
08:06
Разбираюсь с блокировками в тормознутом документе.
В форме при открытии нашел такой код

        //Проверка получения монопольного доступа на редактирование
        Попытка
            ЭтотОбъект.Заблокировать();

Может ли ЭтотОбъект.Заблокировать() вызывать блокировки ?
1 НоваяВолна
 
16.01.23
08:09
2 Admin_Net_1C
 
16.01.23
09:22
(0) Да, может. Это метод объектной блокировки. У него свой менеджер блокировок наравне с менеджером управляемых блокировок.
3 Admin_Net_1C
 
16.01.23
09:35
P.S.
Механизм объектных блокировок позволяет оповестить пользователей о захвате объектных данных «1С:Предприятия»: справочников, документов, планов видов характеристик, планов счетов, планов видов расчета, бизнес-процессов, задач, планов обмена. То есть это не столько механизм защиты, сколько механизм оповещения. Чаще всего пользователи видят сообщения от этого механизма, редактируя данные объектов в формах и воспринимают их как ошибку:
(1) «Не удалось заблокировать запись. Действие (изменение, удаление или блокировка записи) не выполнено»;
(2) «Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)». Либо в последних версиях: «Данные были изменены или удалены другим пользователем»;
(3) Не удалось начать редактирование. Пользователь уже начал редактировать эти данные.
4 НоваяВолна
 
16.01.23
10:17
(3) интересно, а можно ли эти опопвещения выводить программоно, для себя, для отладки? Есть такой механизм?
5 Kassern
 
16.01.23
10:20
(4) Вы можете попытаться программно проверить, заблокирован ли объект, или нет и оповестить так как вам нужно.
6 Ryzeman
 
16.01.23
10:20
(4) Если года за 4 ничего не изменилось, то нет. Хоть я тогда ещё совсем-совсем зелёным был, но ничего в интернете не нашёл поэтому поводу, что бы получить как раз использовал попытку, и брал то ли из текста исключения то ли из ЖР. А было бы удобно, если бы платформа позволяла не извращаться.
7 Ryzeman
 
16.01.23
10:21
(6) Ненавижу попытки :( Try - catch один из самых убогих приёмов программирования :(
8 Kassern
 
16.01.23
10:31
(7) Есть же метод:
ДокументОбъект.<Имя документа> (DocumentObject.<Document name>)
Заблокирован (IsLocked)
Синтаксис:
Заблокирован()
Возвращаемое значение:
Тип: Булево.
Истина - документ заблокирован; Ложь - в противном случае.

Для управляемых форм есть ЗаблокироватьДанныеФормыДляРедактирования() - вот там да, приходится через попытку проверять заблокирована ли форма, или нет. Не нашел метода, чтобы это проверять.
9 Ryzeman
 
16.01.23
11:05
(8) Этот метод работает не так, как ты думаешь)
Он возвращает истину если только объект заблокирован через .заблокировать() и только тобой в текущей транзакции))
Программист всегда исправляет последнюю ошибку.