Функции для установка блокировки данных

13 Aug
Published by Nicholas

 

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

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

Тэги 

1С 8

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

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Вы человек или автоматическая спам-рассылка?
Target Image