ИнтерактивноеОбновлениеКлассификаторовИзФайла (БСП)

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

Интерактивное обновление классификаторов из файла. Обработка файла с обновлениями классификаторов в в фоновом задании.

// Обработка файла с обновлениями классификаторов в в фоновом задании.
//
// Параметры:
//  ПараметрыПроцедуры - Структура - данные для обновления;
//  АдресХранилища - Строка - адрес хранилища результат обновления.
//
Процедура ИнтерактивноеОбновлениеКлассификаторовИзФайла(ПараметрыПроцедуры, АдресХранилища) Экспорт
	
	РезультатОбновления = Новый Структура;
	РезультатОбновления.Вставить("КодОшибки",         "");
	РезультатОбновления.Вставить("СообщениеОбОшибке", "");
	
	ДанныеФайла           = ПараметрыПроцедуры.ДанныеФайла;
	ДанныеКлассификаторов = ПараметрыПроцедуры.ДанныеКлассификаторов;
	
	ДанныеКлассификаторов.Колонки.Добавить("АдресФайла", ОбщегоНазначения.ОписаниеТипаСтрока(250));
	
	КаталогОбновлений = ФайловаяСистема.СоздатьВременныйКаталог(
		Строка(Новый УникальныйИдентификатор));
	
	ФайлыКлассификаторов = ПолучитьИмяВременногоФайла(".zip");
	ДанныеФайла.Записать(ФайлыКлассификаторов);
	ДанныеФайла = Неопределено;
	
	ЧтениеZipФайла = Новый ЧтениеZipФайла(ФайлыКлассификаторов);
	Для Каждого ОписаниеВерсии Из ДанныеКлассификаторов Цикл
		
		ЭлементАрхива = ЧтениеZipФайла.Элементы.Найти(ОписаниеВерсии.ИдентификаторФайла);
		Если ЭлементАрхива = Неопределено Тогда
			ЗаписатьИнформациюВЖурналРегистрации(
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru = 'Не удалось найти файл классификатора %1 в архиве %2.'"),
					ОписаниеВерсии.Идентификатор,
					ФайлыКлассификаторов),
				Истина,
				Метаданные.Обработки.ОбновлениеКлассификаторов);
			Продолжить;
		КонецЕсли;
		
		ЧтениеZipФайла.Извлечь(ЭлементАрхива, КаталогОбновлений);
		ДанныеФайла = Новый ДвоичныеДанные(КаталогОбновлений + ОписаниеВерсии.ИдентификаторФайла);
		
		Если ДанныеФайла.Размер() = 0 Тогда
			ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Файл классификатора %1 (%2) имеет размер равный 0.
					|Загрузка данных остановлена.'"),
				ОписаниеВерсии.Наименование,
				ОписаниеВерсии.Идентификатор);
			ЗаписатьИнформациюВЖурналРегистрации(
				ТекстИсключения,
				Истина,
				Метаданные.Обработки.ОбновлениеКлассификаторов);
			ВызватьИсключение ТекстИсключения;
		КонецЕсли;
		
		ОписаниеВерсии.Размер           = ДанныеФайла.Размер();
		ОписаниеВерсии.КонтрольнаяСумма = ИнтернетПоддержкаПользователей.КонтрольнаяСуммаФайла(ДанныеФайла);
		ОписаниеВерсии.АдресФайла       = ПоместитьВоВременноеХранилище(ДанныеФайла);
		
	КонецЦикла;
	
	УдалитьФайлы(ФайлыКлассификаторов);
	
	ОбработатьФайлыПриИнтерактивнойЗагрузке(
		ДанныеКлассификаторов,
		РезультатОбновления);
	
	ПоместитьВоВременноеХранилище(РезультатОбновления, АдресХранилища);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

ИнтерактивнаяЗагрузкаКлассификаторовДоступна (БСП)

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

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

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

1С Менеджер конфигураций