DB.IsLocked

From SunFlurry wiki
Jump to: navigation, search
  IsLocked (Проверка наличия блокировки)
Объект:Объект базы данных
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер
Исключения:Неподходящий объект
Визуальность:Нет

Функция проверяет, заблокирован ли уже другим пользователем текущий объект и, если заблокирован, то кем. Функция возвращает:

  • 0 -- объект не заблокирован в данное время (блокировка возможна).
  • 1 -- текущий объект уже заблокирован ранее с помощью функции Lock, либо является визуальным объектом, открытым для редактирования (блокировка уже активна, нет смысла блокировать второй раз). Данный код результата относится только к текущему объекту, для другого объекта созданного в этом же потоке, позиционированного на тот же самый объект БД, функция будет возвращать 2, так как первый объект уже был заблокирован (см. пример).
  • 2 -- объект был заблокирован другим пользователем или потоком (блокировка в данное время невозможна).

Синтаксис

DB.IsLocked(<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<Тип блокировки (INT)>

Аргументы

  • <Заблокировано пользователем (STRING)> - (необязательный аргумент)(возможен аргумент-переменная (ByRef)) Аргумент-переменная, содержимое которой заполняется именем пользователя, который заблокировал данный объект, в случае, если блокировку невозможно произвести по причине того, что объект был заблокирован ранее. Если аргумент опущен, информация по блокировке не будет получена.
  • <Заблокировано на машине (STRING)> - (необязательный аргумент)(возможен аргумент-переменная (ByRef)) Аргумент-переменная, содержимое которой заполняется наименованием компьютера, на которым произошла блокировка данного объекта, в случае, если блокировку невозможно произвести по причине того, что объект был заблокирован ранее. Если аргумент опущен, информация по блокировке не будет получена.
  • <Время блокировки (DATE)> - (необязательный аргумент)(возможен аргумент-переменная (ByRef)) Аргумент-переменная, содержимое которой заполняется датой и временем, когда был заблокирован данный объект, в случае, если блокировку невозможно произвести по причине того, что объект был заблокирован ранее. Если аргумент опущен, информация по блокировке не будет получена.

Возвращаемое значение

Функция возвращает 0, 1 или 2, в зависимости от состояния или возможности блокировки объекта.

Примеры

//Блокировка документа аДок
аПольз:="";аМаш:="";аВремя:="";
If аДок.Lock(аПольз,аМаш,аВремя)=0 Then
  Message("Невозможно заблокировать документ "+аДок+", так как в данный момент с ним работает пользователь "+аПольз+" на "+аМаш+" в "+аВремя+"!","!");
  Exit;
EndIf;
//Функция выводит 1, так как объект заблокирован локально
Message(аДок.IsLocked());
//Создание новой копии объекта
бДок:=аДок.Copy();
//Функция выводит 2, так как другой объект аДок уже имеет блокировку этого документа.
Message(бДок.IsLocked());
//Разблокируем объект
аДок.Unlock();
//Функция выводит 0, так как другой объект аДок больше не имеет блокировки
Message(бДок.IsLocked());