СлужебнаяДоступныеОбновленияКлассификаторов (БСП)

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

Служебная доступные обновления классификаторов. Проверяет наличие доступных обновлений классификаторов в Сервисе классификаторов.

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

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

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

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

ДоступныеОбновленияКлассификаторов (БСП)

ИнформацияОДоступномОбновленииСлужебная (БСП)

СлужебнаяДоступноИспользованиеПолученияОбновленийПлатформы (БСП)

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

СлужебнаяПараметрыПолученияОбновлений (БСП)

ДатаОбновленияКлассификатора (БСП)

ИнформацияОДоступномОбновлении (БСП)

КлассификаторАктуален (БСП)

ОбновитьКлассификаторы (БСП)

TurboConf ИР адаптер 2.64