ПодготовитьДанные (БСП)

Автор: 1С
ОбщийМодуль.ИнтеграцияОбъектовОбластейДанных
БСП

Подготовить данные. Обработчик задания очереди заданий.

// Обработчик задания очереди заданий.
//
// Параметры:
//  УчетнаяСистема - ОпределяемыйТип.УчетныеСистемыИнтеграцииОбластейДанных - учетная система
//                   по которой готовятся данные.
//
Процедура ПодготовитьДанные(УчетнаяСистема) Экспорт
    
	Словарь = ИнтеграцияОбъектовОбластейДанныхСловарь;
    СловарьОчередь = ОчередьЗаданийВнешнийИнтерфейсСловарь;
    КлючЗадания = КлючЗаданияПодготовкиДанных(УчетнаяСистема);
    ИдентификаторЗадания = ОчередьЗаданийВнешнийИнтерфейс.ИдентификаторЗадания(КлючЗадания);
    Запрос = Новый Запрос;
    Запрос.Текст = 
    	"ВЫБРАТЬ
        |   ОбъектыКОтправке.ИдентификаторОбъекта КАК ИдентификаторОбъекта,
        |   ОбъектыКОтправке.Обработчик КАК Обработчик,
        |   ФайлыОбластейДанных.Идентификатор КАК ИдентификаторФайла
        |ИЗ
        |   РегистрСведений.ОбъектыКОтправке КАК ОбъектыКОтправке
        |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФайлыОбластейДанных КАК ФайлыОбластейДанных
        |       ПО ОбъектыКОтправке.ИдентификаторФайла = ФайлыОбластейДанных.Идентификатор
        |           И (НЕ ФайлыОбластейДанных.Временный)
        |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияИнтеграцииОбъектов КАК СостоянияИнтеграцииОбъектов
        |       ПО ОбъектыКОтправке.УчетнаяСистема = СостоянияИнтеграцииОбъектов.УчетнаяСистема
        |           И ОбъектыКОтправке.ИдентификаторОбъекта = СостоянияИнтеграцииОбъектов.ИдентификаторОбъекта
        |ГДЕ
        |   ОбъектыКОтправке.УчетнаяСистема = &УчетнаяСистема
        |   И ЕСТЬNULL(СостоянияИнтеграцииОбъектов.Состояние, &ПустоеСостояние) <> &Ошибка";
    
    Запрос.УстановитьПараметр("УчетнаяСистема", УчетнаяСистема);
    Запрос.УстановитьПараметр("Ошибка", Перечисления.СостоянияИнтеграцииОбъектов.Ошибка);
    Запрос.УстановитьПараметр("ПустоеСостояние", Перечисления.СостоянияИнтеграцииОбъектов.ПустаяСсылка());
    
    Попытка
        РезультатЗадания = Запрос.Выполнить();
        Выборка = РезультатЗадания.Выбрать();
        Архиватор = Новый ЗаписьZipФайла;
        КаталогФайлов = ПолучитьИмяВременногоФайла();
        ДанныеМанифеста = Новый Массив;
        Пока Выборка.Следующий() Цикл
            ДобавитьОбъектКВыгрузке(УчетнаяСистема, КаталогФайлов, Архиватор, ДанныеМанифеста, Выборка, Выборка.ИдентификаторФайла);
        КонецЦикла;
        Манифест = Новый Структура(Словарь.ИмяПоляСоставаДанных(), ДанныеМанифеста);
        Архиватор.Добавить(ЗаписатьМанифест(Манифест, КаталогФайлов));
        ДвоичныеДанныеАрхива = Архиватор.ПолучитьДвоичныеДанные(,, МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный);
        ИмяАрхива = Строка(ИдентификаторЗадания) + ".zip";
        ИдентификаторФайлаАрхива = ФайлыОбластейДанных.ЗагрузитьФайл(ИмяАрхива, ДвоичныеДанныеАрхива,, Истина);
        Попытка
            УдалитьФайлы(КаталогФайлов);
		Исключение
			Комментарий = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
			ЗаписьЖурналаРегистрации(Словарь.КорневоеСобытие(), УровеньЖурналаРегистрации.Ошибка, , , Комментарий);
        КонецПопытки;
        РезультатЗадания = Новый Структура;
        РезультатЗадания.Вставить(Словарь.ПолеХранилище(), ФайлыОбластейДанных.ИдентификаторХранилища());
        РезультатЗадания.Вставить(Словарь.ПолеИдентификатор(), Строка(ИдентификаторФайлаАрхива));
        Свойства = РегистрыСведений.СвойстваЗаданий.НовыйСвойстваЗадания();
        Свойства.КодСостояния = СловарьОчередь.КодСостоянияВыполнено();
        Свойства.Результат = РаботаВМоделиСервисаБТС.СтрокаИзСтруктурыJSON(РезультатЗадания);
        РегистрыСведений.СвойстваЗаданий.Установить(ИдентификаторЗадания, Свойства);
    Исключение
        ОчередьЗаданийВнешнийИнтерфейс.УстановитьВнутреннююОшибку(
            ИдентификаторЗадания, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
        ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
    КонецПопытки
    
КонецПроцедуры

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

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

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

ПодготовитьДанныеДляВыгрузкиИзИнформационнойБазы (БСП)

ПодготовитьИПрикрепитьОбластьДанных (БСП)

ПодготовитьДанные (БСП)

ПодготовитьОбластьИзВыгрузки (БСП)

ПодготовитьОбластьДанныхКИспользованиюИзЭталонной (БСП)

ПодготовитьОбластьДанныхКИспользованию (БСП)

ПодготовитьДанныеДляСозданияФайловогоНачальногоОбраза (БСП)

ПодготовитьДанныеДляСозданияСерверногоНачальногоОбраза (БСП)

ПодготовитьНаборыЗначенийДоступаКЗаписи (БСП)

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