НовыйКонтекстПолученияИУстановкиОбновлений (БСП)

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

Новый контекст получения установки обновлений.

Функция НовыйКонтекстПолученияИУстановкиОбновлений(Параметры) Экспорт
	
	ОписаниеФайловОбновлений = Параметры.ОписаниеФайловОбновлений;
	
	Результат = Новый Структура;
	Результат.Вставить("ИмяОшибки"         , "");
	Результат.Вставить("Сообщение"         , "");
	Результат.Вставить("ИнформацияОбОшибке", "");
	Результат.Вставить("Завершено"         , Ложь);
	Результат.Вставить("ВерсияПлатформы"   , ОписаниеФайловОбновлений.ВерсияПлатформы);
	
	Результат.Вставить("Прогресс", 0);
	Если Параметры.ОбновитьКонфигурацию Тогда
		Результат.Вставить("ОбновленияКонфигурации", ОписаниеФайловОбновлений.ОбновленияКонфигурации);
		Результат.Вставить("КоличествоОбновленийКонфигурации", Результат.ОбновленияКонфигурации.Количество());
	Иначе
		Результат.Вставить("ОбновленияКонфигурации", Новый Массив);
		Результат.Вставить("КоличествоОбновленийКонфигурации", 0);
	КонецЕсли;
	
	Если Параметры.УстановитьИсправления Тогда
		Результат.Вставить("Исправления"          , ОписаниеФайловОбновлений.Исправления);
		Результат.Вставить("ОтозванныеИсправления", ОписаниеФайловОбновлений.ОтозванныеИсправления);
	Иначе
		Результат.Вставить("Исправления"          , Новый Массив);
		Результат.Вставить("ОтозванныеИсправления", Новый Массив);
	КонецЕсли;
	
	Результат.Вставить("ИсправленияУстановлены", Ложь);
	
	КоличествоФайлов = 0;
	ОбъемФайлов      = 0;
	Если Не Параметры.ОбновитьПлатформу Или ПустаяСтрока(Результат.ВерсияПлатформы) Тогда
		Результат.Вставить("ОбновитьПлатформу", Ложь);
	Иначе
		Результат.Вставить("ОбновитьПлатформу", Истина);
		КоличествоФайлов = КоличествоФайлов + 1;
		ОбъемФайлов      = ОбъемФайлов + ОписаниеФайловОбновлений.РазмерОбновленияПлатформы;
	КонецЕсли;
	
	Если Результат.ОбновленияКонфигурации.Количество() > 0 Тогда
		
		Результат.Вставить("ВременныйКаталогОбновленийКонфигурации",
			КаталогДляРаботыСОбновлениямиКонфигурации());
		Результат.Вставить("КаталогИндексаФайлов",
			Результат.ВременныйКаталогОбновленийКонфигурации + "FileIndex\");
		Результат.Вставить("КаталогШаблонов", КаталогШаблонов());
		
		Для Каждого ТекОбновление Из Результат.ОбновленияКонфигурации Цикл
			
			КоличествоФайлов = КоличествоФайлов + 1;
			ОбъемФайлов      = ОбъемФайлов + ТекОбновление.РазмерФайла;
			ТекОбновление.Вставить("Получено"          , Ложь);
			ТекОбновление.Вставить("КаталогДистрибутива",
				Результат.КаталогШаблонов + СтрЗаменить(ТекОбновление.ПодкаталогШаблонов, "_", "."));
			ТекОбновление.Вставить("КаталогCFUФайлаВКаталогеДистрибутивов",
				ТекОбновление.КаталогДистрибутива + ТекОбновление.ПодкаталогCfu);
			ТекОбновление.Вставить("ПолноеИмяCFUФайлаВКаталогеДистрибутивов",
				ТекОбновление.КаталогДистрибутива + ТекОбновление.ОтносительныйПутьCFUФайла);
			ТекОбновление.Вставить("ИмяИндексногоФайла",
				СтрЗаменить(ТекОбновление.ПодкаталогШаблонов, "\", "_") + "_"
					+ СтрЗаменить(СтрЗаменить(ТекОбновление.ОтносительныйПутьCFUФайла, "\", "_"), ".", "_")
					+ ".txt");
			
		КонецЦикла;
		
	КонецЕсли;
	
	Если Параметры.УстановитьИсправления Тогда
		Результат.Вставить("КаталогДляРаботыСИсправлениями", КаталогДляРаботыСИсправлениями());
		// Удалить файлы исправлений, которые были созданы более 90 дней назад.
		
		// АПК:643-выкл часовой пояс не имеет значения.
		УдалитьУстаревшиеФайлы(
			Результат.КаталогДляРаботыСИсправлениями,
			ТекущаяДата() - 7776000); // 7776000 = 60 * 60 * 24 * 90. // Не локализуется
		// АПК:643-вкл
		
	КонецЕсли;
	
	КоличествоФайлов = КоличествоФайлов + Результат.Исправления.Количество();
	Для Каждого ТекИсправление Из Результат.Исправления Цикл
		ОбъемФайлов = ОбъемФайлов + ТекИсправление.Размер;
		ТекИсправление.Вставить("ИмяПолученногоФайла",
			Результат.КаталогДляРаботыСИсправлениями + ТекИсправление.Имя
				+ СтрЗаменить(
					СтрЗаменить(
						СтрЗаменить(
							ТекИсправление.КонтрольнаяСумма,
							"=",
							"_e_"),
						"/",
						"_s_"),
					"+",
					"_p_")
				+ ".zip");
		ТекИсправление.Вставить("Получено", ФайлСуществует(ТекИсправление.ИмяПолученногоФайла, Ложь, ТекИсправление.Размер));
	КонецЦикла;
	
	Результат.Вставить("ОбновлениеПлатформыУстановлено", Ложь);
	Результат.Вставить("КаталогДистрибутиваПлатформы"  , "");
	Результат.Вставить("URLФайлаОбновленияПлатформы"   , ОписаниеФайловОбновлений.URLФайлаОбновленияПлатформы);
	Результат.Вставить("РазмерОбновленияПлатформы"     , ОписаниеФайловОбновлений.РазмерОбновленияПлатформы);
	Результат.Вставить("УстановкаПлатформыОтменена"    , 0);
	Результат.Вставить("КодВозвратаПрограммыУстановки" , 0);
	
	Результат.Вставить("КоличествоФайлов"       , КоличествоФайлов);
	Результат.Вставить("ОбъемФайлов"            , ОбъемФайлов);
	Результат.Вставить("ФайлыОбновленияПолучены", Ложь);
	Результат.Вставить("ТекущееДействие",
		СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Подготовка к получению обновления...'"),
			КоличествоФайлов));
	
	Возврат Результат;
	
КонецФункции

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

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

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

ЗагрузитьИУстановитьОбновленияВФоновомРежиме (БСП)

ЕстьПраваНаУстановкуОбновления (БСП)

НоваяЗаписьРезультатовВыполненияОпераций (БСП)

ПоказатьПоискИУстановкуОбновлений (БСП)

ЗавершитьПолучениеОбновления (БСП)

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

УстановитьОбновление (БСП)

ДоступныНовыеДанные (БСП)

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