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

Автор: 1С
ОбщийМодуль.АдминистрированиеКластера
БСП

Данные сеанса из блокировки. Дополняет данные о сеансе по информации из описания блокировки

// Дополняет данные о сеансе по информации из описания блокировки
//
// Параметры:
//  ДанныеСеансов			- Соответствие - Структура, накапливающая данные сеансов по КлючСеанса в виде структуры с полями РежимБлокировкиБД, Разделитель
//  ТекстБлокировки			- Строка - Исходный текст блокировки, получаемый из списка блокировок (RAS/COM)
//  КлючСеанса				- Произвольный - идентификатор сеанса
//  ИмяИнформационнойБазы	- Строка - искомое имя информационной базы, сеансы других ИБ игнорируются
//
Процедура ДанныеСеансаИзБлокировки(ДанныеСеансов, Знач ТекстБлокировки, Знач КлючСеанса, Знач ИмяИнформационнойБазы) Экспорт
	
	ТекстНРег = НРег(ТекстБлокировки);
	
	ТекстНРег = СтрЗаменить(ТекстНРег, "db(",			"бд(");
	ТекстНРег = СтрЗаменить(ТекстНРег, "(session,",		"(сеанс,");
	ТекстНРег = СтрЗаменить(ТекстНРег, ",shared",		",разделяемая");
	ТекстНРег = СтрЗаменить(ТекстНРег, ",exceptional",	",исключительная");
	ТекстНРег = СтрЗаменить(ТекстНРег, ",exclusive",	",исключительная");
	
	Если Лев(ТекстНРег, 9) = "бд(сеанс," Тогда
		ЗначенияБлокировкиСтрокой = Сред(ТекстНРег, СтрНайти(ТекстНРег, "(") + 1, СтрНайти(ТекстНРег, ")") - СтрНайти(ТекстНРег, "(") - 1);
		ЗначенияБлокировки = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ЗначенияБлокировкиСтрокой, ",");
		Если ЗначенияБлокировки.Количество() >= 3
			И ЗначенияБлокировки[0] = "сеанс"
			И ЗначенияБлокировки[1] = НРег(ИмяИнформационнойБазы) Тогда
			
			Если СтрНайти(ЗначенияБлокировкиСтрокой, "'") > 0 Тогда
				ЗначениеРазделителя = Сред(ЗначенияБлокировкиСтрокой, СтрНайти(ЗначенияБлокировкиСтрокой, "'") + 1);
				ЗначениеРазделителя = Лев(ЗначениеРазделителя, СтрНайти(ЗначениеРазделителя, "'") - 1);
			Иначе
				ЗначениеРазделителя = "";
			КонецЕсли;
			
			ДанныеСеансов[КлючСеанса] = Новый Структура("РежимБлокировкиБД,Разделитель", ЗначенияБлокировки[2], ЗначениеРазделителя);
			
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

ПриОпределенииПараметровБлокировкиСеансов (БСП)

СформироватьСообщениеБлокировки (БСП)

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

ИзвлечьСообщениеБлокировки (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз