Перегрузка документа, выгрузка и загрузка документа в файл txt

1. user1843468 17.09.22 22:15 Сейчас в теме
Всем привет. Есть задача по выгрузке и загрузке документа в файл txt. Я создал внешнюю обработку
Все действия выполняются из формы внешней обработки. Есть поле для ссылки выгружаемого документа, и путь к файлу txt для выгрузки. При нажатии кнопки "выгрузить" в текстовый документ выгружаются: первой строкой название документа, далее строка типа "реквизит1 - тип_реквизита1, реквизит2 - тип_реквизита2, ..." и т.д. При этом вся информации, помещенная в txt, должна быть достаточной для того, чтобы на их основе создать копию этого документа в бд. Вот формат выгрузки, разработанный мною (формат должен позволять загрузить документ из текстового файла, т.е. создать копию выгруженного документа на основе данных, которые есть в файле txt):

Название документа

Рек1 - тип, Рек2 - тип, Рек3 - тип, ...

Реквизиты:
Рек1 - знач1

Рек2 - знач2
Рек3 - знач3

Табл. части:

Рек1 - тип, Рек2 - тип, Рек3 - тип, ...

Табл._часть1:

знач1, ..., ..., ..., ...
знач2, ..., ..., ..., ...
знач3, ..., ..., ..., ...

Табл._часть2:

знач1, ..., ..., ..., ...
знач2, ..., ..., ..., ...
знач3, ..., ..., ..., ...

Вот код для выгрузки (недоработан):

&НаСервере
Функция ВыгрузитьОбъектНаСервере(СсылкаНаДокумент)
    МассивТекстаДляВыгрузки = Новый Массив;
    ОбъектДокумента = СсылкаНаДокумент.ПолучитьОбъект();
    
    НазваниеДокумента = ОбъектДокумента.Метаданные().Имя;
    
    МассивТекстаДляВыгрузки.Добавить(НазваниеДокумента);
    МассивТекстаДляВыгрузки.Добавить(" ");
    СтрокаРеквизитов = "";
    
    // Выгрузка типов реквизитов

    Для каждого Реквизит из ОбъектДокумента.Метаданные().Реквизиты Цикл
        Если НЕ ОбъектДокумента.Метаданные().Реквизиты.Индекс(Реквизит) = ОбъектДокумента.Метаданные().Реквизиты.Количество() - 1 Тогда 
            СтрокаРеквизитов = СтрокаРеквизитов + Реквизит.Имя;
            СтрокаРеквизитов = СтрокаРеквизитов + " - ";
            СтрокаРеквизитов = СтрокаРеквизитов + Реквизит.Тип + " , ";
        Иначе
            СтрокаРеквизитов = СтрокаРеквизитов + Реквизит.Имя;
            СтрокаРеквизитов = СтрокаРеквизитов + " - ";
        КонецЕсли;
    КонецЦикла;
    МассивТекстаДляВыгрузки.Добавить(СтрокаРеквизитов);
    Если ЗначениеЗаполнено(Объект.ПутьКФайлу) Тогда
        
        // Выгрузка реквизитов

        МассивТекстаДляВыгрузки.Добавить("Реквизиты: ");
        МассивТекстаДляВыгрузки.Добавить(" ");
        Для каждого Реквизит из ОбъектДокумента.Метаданные().Реквизиты Цикл
            СтрокаДляДобавления = ""; 
            Если НЕ ЗначениеЗаполнено(ОбъектДокумента[Реквизит.Имя]) Тогда
                СтрокаДляДобавления = СтрокаДляДобавления + Реквизит.Имя + " - " + "_ _ _ _";    
            Иначе
                СтрокаДляДобавления = СтрокаДляДобавления + Реквизит.Имя + " - " + ОбъектДокумента[Реквизит.Имя];
            КонецЕсли; 
            МассивТекстаДляВыгрузки.Добавить(СтрокаДляДобавления);
        КонецЦикла;
        МассивТекстаДляВыгрузки.Добавить(" ");
        
        // Выгрузка табличных частей

        ////МассивТекстаДляВыгрузки.Добавить("Табличные части: ");

        ////МассивТекстаДляВыгрузки.Добавить(" ");

        ////СписокТабличныЧастей = Метаданные.Документы[НазваниеДокумента].ТабличныеЧасти;

        ////

        ////Для каждого ТаблЧасть из СписокТабличныЧастей цикл

        ////    МассивТекстаДляВыгрузки.Добавить(ТаблЧасть.Имя);

        ////    МассивТекстаДляВыгрузки.Добавить(" ");

        ////    СтрокиТаблЧасти = ОбъектДокумента[ТаблЧасть.Имя];

        ////    

        ////    Для каждого Реквизит из ТаблЧасть.Реквизиты цикл

        ////        СтрокаТекстовогоФайла = "";

        ////        СтрокаТекстовогоФайла = СтрокаТекстовогоФайла + 

        ////        МассивТекстаДляВыгрузки.Добавить();            

        ////    КонецЦикла;

        ////    

        ////    МассивТекстаДляВыгрузки.Добавить(" ");

        ////КонецЦикла;

        
    Иначе
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Поле ""Путь к Файлу"" не заполнено. Документ не может быть выгружен!";
        Сообщение.Поле = Объект.ПутьКФайлу;
        Сообщение.Сообщить();
    КонецЕсли;
    
    Возврат МассивТекстаДляВыгрузки; 
КонецФункции
Показать


При нажатии кнопки "загрузить" должна создаваться копия выгруженного документа в базе данных. Проблема в том, что я не знаю как преобразовать значения реквизитов, находящиеся в файле txt, которые имеют тип "строка" в нужный тип, соответствующий реквизитам документа. То есть у меня не получается реализовать обработку кнопки "Загрузить". Как это можно сделать?
При этом нельзя использовать функции УникальныйИдентификатор(), ЗначениеВСтрокуВнутр() и подобные функции.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ishelper 17.09.22 22:29 Сейчас в теме
М-да, типичное для новичка оформление темы всеми нужными (и ненужными) тегами в стиле:
Прикрепленные файлы:
3. Nykos 17.09.22 22:42 Сейчас в теме
Я что-то не понял. Вы хотите сначала сохранить в определенном формате док в файл, а потом обратно его подгрузить в 1с, или о какой бд идёт речь? Если сторонняя, то ответ на вопрос никто не даст при текущих вводных, если все в рамках иб - чем не устраивает бэкап?
4. user1843468 17.09.22 22:55 Сейчас в теме
(3) Просто подгрузить в 1с, создать копию того документа, который был выгружен в txt
5. Nykos 17.09.22 23:52 Сейчас в теме
Так и не понял смысл сего действа, но можно попробовать работать с уникальным идентификатором. По нему без проблем определишь в какой реквизит положить ссылку на нужный объект
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот