Всем привет. Есть задача по выгрузке и загрузке документа в файл 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, которые имеют тип "строка" в нужный тип, соответствующий реквизитам документа. То есть у меня не получается реализовать обработку кнопки "Загрузить". Как это можно сделать?
При этом нельзя использовать функции УникальныйИдентификатор(), ЗначениеВСтрокуВнутр() и подобные функции.