MassUnlock

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

Функция позволяет снять блокировку со множества объектов базы данных (или/и семафоров) по указанным правилам. Текстовые значения списка будут интерпретированы, как семафоры, объекты базы данных, входящие в список, будут разблокированы, как объекты БД. Если какой-нибудь объект из списка (или семафор) не был заблокирован, элемент пропускается. Если объект (или семафор) из списка заблокирован другим пользователем, функция завершается с неудачей и заполняет аргументы Объект ошибки, Заблокировано пользователем, Заблокировано на машине и Время блокировки значениями, описывающими объект, разблокировать который не удалось. Данный режим больше всего подходит для семафоров, так как объекты базы данных будут иметь флаг блокировки без реальной блокировки на сервере только в случае внутренней ошибки системы.

Синтаксис

MassUnlock(<Список с объектами для разблокировки (LIST)>,<Объект ошибки>,<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<0 или 1 (INT)>

Аргументы

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

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

Возвращает 1, все объекты списка были разблокированы, 0 -- если хотя бы один не был разблокирован.


Примеры

//Внимание: пример нельзя проверить на рабочей базе данных без изменения кодов объектов
a:=List.Create(DB("Ref.Номенклатура","Code","000000003661"),DB("Ref.Номенклатура","Code","000000007561"),"MUTEX01");
//Список содержит два объекта базы данных и одну строку, один из объектов является папкой.
аОбъект:=0;
аПольз:=0;
аМашина:=0;
аВремя:=0;
If MassLockWithWait(a,,,1000,аОбъект,аПольз,аМашина,аВремя) Then
  Message("Блокировка произведена успешно");
  If a.MassUnlock() Then
    Message("Разблокировка произведена успешно");
  Else
    Message("Ошибка разблокировки. Внутренняя ошибка!","!");
  EndIf;
Else
  Message("Невозможно произвести блокировку объекта "+аОбъект+", он был заблокирован пользователем "+аПольз+" на машине "+аМашина+" в "+аВремя);
EndIf;