Установить блокировку сеансов области данных. Установить блокировку сеансов области данных.
// Установить блокировку сеансов области данных.
//
// Параметры:
// Параметры - Структура - см. НовыеПараметрыБлокировкиСоединений.
// ПоМестномуВремени - Булево - время начала и окончания блокировки указаны в местном времени сеанса.
// Если Ложь, то в универсальном времени.
// ОбластьДанных - Число - номер области данных, для которой устанавливается блокировка.
// При вызове из сеанса, в котором заданы значения разделителей, может быть передано только значение,
// совпадающее со значением разделителя в сеансе (или опущено).
// При вызове из сеанса, в котором не заданы значения разделителей, значение параметра не может быть опущено.
//
Процедура УстановитьБлокировкуСеансовОбластиДанных(Параметры, Знач ПоМестномуВремени = Истина, Знач ОбластьДанных = -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
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПолучитьБлокировкуСеансовОбластиДанных (БСП)
НовыеПараметрыБлокировкиСоединений (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)