Difference between revisions of "MassLockWithWait"
m (1 revision imported) |
m (1 revision imported) |
||
(One intermediate revision by one other user not shown) | |||
Line 23: | Line 23: | ||
* <code>''<Список с объектами для блокировки (LIST)>''</code> - Список, содержащий объекты базы данных или/и строки для установки блокировки. | * <code>''<Список с объектами для блокировки (LIST)>''</code> - Список, содержащий объекты базы данных или/и строки для установки блокировки. | ||
* <code>''<Режим пропуска (INT)>''{{Default|{{eq}}0}}</code> - {{optional}} Возможные значения 0 и 1. Режим обратки ситуации, когда один из элементов не может быть заблокирован. Режим 0: После истечения периода ожидания (если задан), завершиться с флагом неудачи, заполнить агрументы ''Объект ошибки'', ''Заблокировано пользователем'', ''Заблокировано на машине'' и ''Время блокировки'' первым из объектов (семафоров), который не может быть заблокирован. | * <code>''<Режим пропуска (INT)>''{{Default|{{eq}}0}}</code> - {{optional}} Возможные значения 0 и 1. Режим обратки ситуации, когда один из элементов не может быть заблокирован. Режим 0: После истечения периода ожидания (если задан), завершиться с флагом неудачи, заполнить агрументы ''Объект ошибки'', ''Заблокировано пользователем'', ''Заблокировано на машине'' и ''Время блокировки'' первым из объектов (семафоров), который не может быть заблокирован. | ||
− | * <code>''<Разблокировка при ошибках (INT)>''{{Default|{{eq}}1}}</code> - {{optional}} Возможные значения 0 и 1. Режим разблокировки объектов, которые успела заблокировать эта функция, при невозможности блокировки одного из последующих объектов. Режим 0: объекты (семафоры) останутся заблокированы, Режим 1: объекты (семафоры) будут разблокированы. Важно: разблокировка, если происходит, касается только объектов, которые были заблокированы этой функцией, список, до начала выполнения функции, уже содержал заблокированные объекты, их статус не будет изменен. | + | * <code>''<Разблокировка при ошибках (INT)>''{{Default|{{eq}}1}}</code> - {{optional}} Возможные значения 0 и 1. Режим разблокировки объектов, которые успела заблокировать эта функция, при невозможности блокировки одного из последующих объектов. Режим 0: объекты (семафоры) останутся заблокированы, Режим 1: объекты (семафоры) будут разблокированы. Важно: разблокировка, если происходит, касается только объектов, которые были заблокированы этой функцией, если список, до начала выполнения функции, уже содержал заблокированные объекты, их статус не будет изменен. |
* <code>''<Период ожидания млс. (INT)>''{{Default|{{eq}}0}}</code> - {{optional}} Общий период ожидания блокировки ''всех'' объектов в миллисекундах. Если хотя бы один из объектов (семафоров) остается незаблокированным по истечение указанного времени, функция будет завершена с неудачей. Если период ожидания равен 0, функция не ожидает объекты, которые нельзя заблокировать и возращается с неудачей сразу же, как будет найден подобный объект. | * <code>''<Период ожидания млс. (INT)>''{{Default|{{eq}}0}}</code> - {{optional}} Общий период ожидания блокировки ''всех'' объектов в миллисекундах. Если хотя бы один из объектов (семафоров) остается незаблокированным по истечение указанного времени, функция будет завершена с неудачей. Если период ожидания равен 0, функция не ожидает объекты, которые нельзя заблокировать и возращается с неудачей сразу же, как будет найден подобный объект. | ||
* <code>''<Объект ошибки>''</code> - {{optional}}{{byRef}} Переменная для идентификации объекта (семафора), который не может быть заблокирован | * <code>''<Объект ошибки>''</code> - {{optional}}{{byRef}} Переменная для идентификации объекта (семафора), который не может быть заблокирован |
Latest revision as of 11:09, 13 March 2022
MassLockWithWait (Блокировка группы объектов) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция позволяет установить блокировку на множестве объектов базы данных (или/и семафорах), блокировка происходит по указанным правилам. Текстовые значения списка будут использованы для блокировки семафоров, объекты базы данных, входящие в список, будут заблокированы, как объекты БД. Если какой-нибудь объект уже был заблокирован или семафор уже принадлежит текущему сеансу, элемент пропускается. Для более полной информации по алгоритму блокировки, см. описание аргументов функции.
Синтаксис
MassLockWithWait(<Список с объектами для блокировки (LIST)>,<Режим пропуска (INT)>=0,<Разблокировка при ошибках (INT)>=1,<Период ожидания млс. (INT)>=0,<Объект ошибки>,<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<0 или 1 (INT)>
Аргументы
<Список с объектами для блокировки (LIST)>
- Список, содержащий объекты базы данных или/и строки для установки блокировки.<Режим пропуска (INT)>=0
- (необязательный аргумент) Возможные значения 0 и 1. Режим обратки ситуации, когда один из элементов не может быть заблокирован. Режим 0: После истечения периода ожидания (если задан), завершиться с флагом неудачи, заполнить агрументы Объект ошибки, Заблокировано пользователем, Заблокировано на машине и Время блокировки первым из объектов (семафоров), который не может быть заблокирован.<Разблокировка при ошибках (INT)>=1
- (необязательный аргумент) Возможные значения 0 и 1. Режим разблокировки объектов, которые успела заблокировать эта функция, при невозможности блокировки одного из последующих объектов. Режим 0: объекты (семафоры) останутся заблокированы, Режим 1: объекты (семафоры) будут разблокированы. Важно: разблокировка, если происходит, касается только объектов, которые были заблокированы этой функцией, если список, до начала выполнения функции, уже содержал заблокированные объекты, их статус не будет изменен.<Период ожидания млс. (INT)>=0
- (необязательный аргумент) Общий период ожидания блокировки всех объектов в миллисекундах. Если хотя бы один из объектов (семафоров) остается незаблокированным по истечение указанного времени, функция будет завершена с неудачей. Если период ожидания равен 0, функция не ожидает объекты, которые нельзя заблокировать и возращается с неудачей сразу же, как будет найден подобный объект.<Объект ошибки>
- (необязательный аргумент)(возможен аргумент-переменная (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("Блокировка произведена успешно"); Else Message("Невозможно произвести блокировку объекта "+аОбъект+", он был заблокирован пользователем "+аПольз+" на машине "+аМашина+" в "+аВремя); EndIf;