Функции для установка блокировки данных
13 Aug
// Возвращает описание блокируемых данных. // // Параметры: // МетаданныеОбъекта - ОбъектМетаданных - метаданные объекта, набор записей которого необходимо получить. // ПоляБлокировки - Строка - имена полей блокировки, разделенные запятыми. // ИсточникДанных - РезультатЗапроса, ТабличнаяЧасть, ТаблицаЗначений, Неопределено - источник данных для блокировки. // // Возвращаемое значение: // Структура - описание блокируемых данных. // * ПространствоБлокировки - Строка - имя поля пространства блокировки. // * ПоляБлокировки - Структура - описание полей блокировки. // ** Ключ - Строка - имя поля блокировки. // ** Значение - Строка - имя поля источника данных блокировки или значение блокировки. // // Варианты вызова: // 1. Установка блокировки записей с помощью явного указания имен полей и их значений // БлокировкаОчереди = ГПН_ОбработкаДанныхВКСервер.ОписаниеБлокируемыхДанных( // Метаданные.РегистрыСведений.ГПН_ОчередьСотрудниковКОтправкеВК, "Сотрудник,Организация"); // БлокировкаОчереди.ПоляБлокировки.Сотрудник = СотрудникИзПорции.Сотрудник; // БлокировкаОчереди.ПоляБлокировки.Организация = СотрудникИзПорции.Организация; // 2. Установка блокировки записей с использованием источника данных // БлокировкаОчереди = ОписаниеБлокируемыхДанных(Метаданные.РегистрыСведений.ГПН_ОчередьСотрудниковКОтправкеВК, // "Сотрудник,Организация", СотрудникиВОчереди); // БлокировкаОчереди.ПоляБлокировки.Сотрудник = "Сотрудник"; // БлокировкаОчереди.ПоляБлокировки.Организация = "Организация"; // Функция ОписаниеБлокируемыхДанных(Знач МетаданныеОбъекта, Знач ПоляБлокировки, Знач ИсточникДанных = Неопределено) Экспорт Описание = Новый Структура("ПространствоБлокировки, ПоляБлокировки, ИсточникДанных"); Описание.ПространствоБлокировки = МетаданныеОбъекта.ПолноеИмя(); Описание.ПоляБлокировки = Новый Структура(ПоляБлокировки); Описание.ИсточникДанных = ИсточникДанных; Возврат Описание; КонецФункции // Вызывается перед обновлением объектов, наборов записей. // В отложенном режиме открывает транзакцию и устанавливает блокировку на обновляемые объекты. // // Параметры: // ОписаниеБлокируемыхДанных - Структура, Массив из Структура - см. ОписаниеБлокируемыхДанных. // // Возвращаемое значение: // Булево - Истина, если блокировки успешно установлены, // либо обновление происходит в монопольном режиме. // // Пример: // БлокировкиУстановлены = УстановитьБлокировкуДанных(ОписаниеБлокировкиПереносаДанных); // Если Не БлокировкиУстановлены Тогда // Возврат; // КонецЕсли; // Функция УстановитьБлокировкуДанных(Знач ОписаниеБлокируемыхДанных) Экспорт НачатьТранзакцию(); Попытка Блокировка = Новый БлокировкаДанных; Если ТипЗнч(ОписаниеБлокируемыхДанных) = Тип("Массив") Тогда Для Каждого ЭлементОписания Из ОписаниеБлокируемыхДанных Цикл ЗаполнитьЭлементБлокировкиДанных(Блокировка, ЭлементОписания); КонецЦикла; Иначе ЗаполнитьЭлементБлокировкиДанных(Блокировка, ОписаниеБлокируемыхДанных); КонецЕсли; Блокировка.Заблокировать(); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); Возврат Ложь; КонецПопытки; Возврат Истина; КонецФункции

Добавить комментарий