УстановитьБлокировкуСеансовОбластиДанных (БСП)

Автор: 1С
ОбщийМодуль.СоединенияИБ
БСП

Установить блокировку сеансов области данных. Установить блокировку сеансов области данных.

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

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПолучитьБлокировкуСеансовОбластиДанных (БСП)

НовыеПараметрыБлокировкиСоединений (БСП)

ДанныеСеансаИзБлокировки (БСП)

УстановитьБлокировкуСеансовИЗаданийИнформационнойБазы (БСП)

TurboConf ИР адаптер 2.63