Загрузить (БСП)

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

Загрузить. Записывает данные в логическое хранилище.

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

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

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

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

Загрузить (БСП)

ЗагрузитьИзФайла (БСП)

ЗагрузитьСообщения (БСП)

ЗагрузитьКомпонентуИзФайла (БСП)

ЗагрузитьКонтекстОбъекта (БСП)

TurboConf - расширение Конфигуратора 1С