ВерсияКлассификатора (БСП)

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

Версия классификатора. Получает номер версии загруженного из сервиса классификатора. Если номер версии

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

	ОбщиеДанные = Не (ОбщегоНазначения.РазделениеВключено()
		И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных());
	
	ИмяРегистра = ?(ОбщиеДанные,
		"ВерсииКлассификаторов",
		"ВерсииКлассификаторовОбластейДанных");
	
	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	РегВерсииКлассификаторов.Версия КАК Версия
		|ИЗ
		|	РегистрСведений.%1 КАК РегВерсииКлассификаторов
		|ГДЕ
		|	РегВерсииКлассификаторов.Идентификатор = &Идентификатор";
	
	Запрос.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		Запрос.Текст,
		ИмяРегистра);
	
	Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Если ВыборкаДетальныеЗаписи.Следующий() Тогда
		Возврат ВыборкаДетальныеЗаписи.Версия;
	КонецЕсли;
	
	// Возможно, не выполнено обновление настроек классификатора РС ВерсииКлассификаторов
	// из-за нарушения порядка подключения подсистем к прикладной конфигурации. Если классификатор
	// используется в конфигурации, будет выполнено частичное обновление настроек подсистемы.
	Если ОбщиеДанные Тогда
		
		Классификаторы = Новый Массив;
		ПриДобавленииКлассификаторов(Классификаторы);
		
		Для Каждого Описатель Из Классификаторы Цикл
			Если Описатель.Идентификатор = Идентификатор Тогда
				Запись = РегистрыСведений.ВерсииКлассификаторов.СоздатьМенеджерЗаписи();
				ЗаполнитьЗначенияСвойств(Запись, Описатель);
				Запись.Записать();
				Возврат 0;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	Если ВызыватьИсключение Тогда
		ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Классификатор %1 не зарегистрирован.'"),
			Идентификатор);
		ВызватьИсключение ТекстИсключения;
	Иначе
		Возврат Неопределено;
	КонецЕсли;
	
КонецФункции

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

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

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

ПолучитьФайлыКлассификаторов (БСП)

УстановитьВерсиюКлассификатора (БСП)

ОбработатьНачальнуюВерсиюКлассификатора (БСП)

ВерсияКлассификатораКэш (БСП)

ПриОпределенииНачальногоНомераВерсииКлассификатора (БСП)

ВерсияЗагруженныхКалендарей (БСП)

ВерсииКлассификаторовВФайле (БСП)

ДоступныеВерсииАдресныхСведений (БСП)

TurboConf - расширение Конфигуратора 1С