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