Дано тестовое Задание
Необходимо с помощью программных средств платформы и языка 1С разработать
внешнюю обработку «Перегрузка документа».
В верхнем поле должна быть возможность выбрать любой документ из базы данных.
В нижнем поле указывается путь и имя файла для загрузки. На форме нужно обеспечить
возможность просмотра выгруженного текстового файла.
2. При нажатии кнопки «Выгрузить» информация, содержащаяся в выбранном
пользователем документе, должна выгрузиться в указанный файл. Информация должна
быть исчерпывающей, то есть выгружаться должны данные, чтобы при нажатии кнопки
«Загрузить» в базе создавалась бы копия исходного документа (за исключением номера,
т.к. номера документов уникальные).
3. При написании обработки необходимо использовать Метаданные, это делается
для универсализации программного кода.
4. При написании обработки нельзя использовать функции
«ЗначениеВСтрокуВнутр()», «УникальныеИдентификатор()» и подобные функции,
выгружающие уникальные идентификаторы объектов, а также нельзя делать выгрузку и
загрузку в формате XML или JSON.
---
Выгружаете в текстовый док. тип значения реквизита: Метаданные.НайтиПоТипу(ТипЗнч(Объект.РеквизитСоставногоТипа)).Имя

При заполнении из текстового документа обращаемся к нужному объекту по индексу:
НовыйДокумент.Реквизит = Справочники[ИмяТипаИзTXT].НайтиПонаименованию("Наименование")

А искал бы я по коду, так практичнее
---
Вот что удалось сделать:

```1c
    &НаСервере
    Процедура ВырузитьОбъектНаСервере()

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

    //Добавление прочих значений
    ТекстовыйДок.ДобавитьСтроку(Объект.Документ.Метаданные().Имя);
    ТекстовыйДок.ДобавитьСтроку(ПолучитьДатуДокумента(ДокументПуть,Дата));

    //Цикл записи реквезитов
    Для Каждого Реквизит Из Объект.Документ.Метаданные().Реквизиты Цикл

    ИмяРеквизита = Реквизит.Имя;

    Значение = ПолучитьЗначениеРеквизита(ДокументПуть,ИмяРеквизита);
    //ТипРеквизита = Значение.Тип.Типы()[0];
    ТипРеквизита = ТипЗнч(Объект.Документ[ИмяРеквизита]);

    ТекстовыйДок.ДобавитьСтроку(ИмяРеквизита + ":" + ТипРеквизита + ":" + Значение);
    ТекстовыйДок.Записать(Объект.Файл, КодировкаТекста.UTF8);

    КонецЦикла;

    КонецПроцедуры

    &НаСервере
    Процедура ЗагрузитьОбъектНаСервере()

    //Работа с текстом
    ПрочитанныйТекст = Новый ЧтениеТекста(Объект.Файл,КодировкаТекста.UTF8);
    СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку();

    //Создание документа
    НовыйДокумент = Документы[СтрокаТекстовогоФайла].СоздатьДокумент();
    СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку();

    //Установка даты
    НовыйДокумент.Дата = СтрокаТекстовогоФайла;
    СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку();

    //Цикл записи
    Пока СтрокаТекстовогоФайла <> Неопределено Цикл

    МассивСлов = СтрРазделить(СтрокаТекстовогоФайла,":");

    Если МассивСлов.Количество() = 3 Тогда

    Если МассивСлов[1] = "Строка" Или МассивСлов[1] = "Число" Или МассивСлов[1] = "Дата" Или МассивСлов[1] = "Булево" Тогда
    НовыйДокумент[МассивСлов[0]] = МассивСлов[2];
    Иначе

    //Код для поиска по типу

    КонецЕсли;

    КонецЕсли;

    СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку();

    КонецЦикла;

    НовыйДокумент.Записать();

    КонецПроцедуры
```
---
Не могу понять как заполнить в реквизиты значения с составным типом
---
Сделаю за 50% зп за следующий год.
---
Да мне хотя бы направление нужно в какую сторону думать, пытался реализовать через Метаданные.НайтиПоТипу(), но ничего не получилось
Предполагаю еще, что можно как-то так примерно
НовыйДокумент.Реквизит = Справочники.Организации.НайтиПонаименованию("Рога и копыта")
Но не могу тогда понять как получить сам Справочники.Организации...
---
Выгружаете в текстовый док. тип значения реквизита: Метаданные.НайтиПоТипу(ТипЗнч(Объект.РеквизитСоставногоТипа)).Имя

При заполнении из текстового документа обращаемся к нужному объекту по индексу:
НовыйДокумент.Реквизит = Справочники[ИмяТипаИзTXT].НайтиПонаименованию("Наименование")

А искал бы я по коду, так практичнее
---
Да буквально только что на forum.mista.ru подсказали сделать тоже самое, попробовал, все работает, Спасибо большое!!
---
Оказалось, что все работает только в отладчике, при обработке выдает ошибку
Значение не является значением объектного типа (Имя)
И я снова в тупике и прихожу к вам за помощью
---
https://forum.infostart.ru/forum9/topic197851/ проблема один в один как тут, но я не понял как ее решили
---
Отмена, разобрался
---
Можешь скинуть свою обработку или код, как ты с этим разобрался
---
Можешь скинутьОсеннее сборище халявщиков, решающих одну и ту же задачу. Открытие сезона.