На форме имеется поле ввода, на котором активна кнопка списка. Пользователь должен выбирать из списка любой документ из базы данных, чтобы тот заносился на поле ввода, причем не строкой, а именно как документ (для дальнейшей работы с его полями). Тип значения поля ввода выставил на ДокументСсылка (самое подходящее вроде).
Список заполняется след. образом:
```1c
    Для каждого Документ из Метаданные.Документы цикл
    ЭлементыФормы.ПолеВвода1.СписокВыбора.Добавить(Документ.Имя, Документ.Имя);
    КонецЦикла;
```

При выборе значений из списка, поле ввода остается пустым. Как быть? Какой тип значения тогда использовать вообще?
---
нужно именно выбрать сам документ
---
для начала определите, что точно нужно на форме.
"Тип значения поля ввода выставил на ДокументСсылка"
"ЭлементыФормы.ПолеВвода1.СписокВыбора.Добавить(Документ.Имя, Документ.Имя);"
Это добавление типа Строка, а ожидалось тип ДокументСсылка.
---
(3)
(4)
У пользователя должна быть возможность выбрать любой документ из базы, а для разработчика это поле должно быть заполнено может не "ДокументСсылка", как я написал, но во всяком случае так, чтобы я мог обращаться к этому полю ввода следующим образом:

```1c
    СЗ.Добавить(ПолеВвода1.Номер ,"Номер");
    СЗ.Добавить(ПолеВвода1.Дата ,"Дата");
```

Может даже нужен не список, а форма выбора, не знаю. Меньше недели копаюсь, наведите на мысль. Благодарю
---
как я понял нужны не метаданные, а конкретные ссылки на документы?
Т.е. в поле выбора выбирает из всех доступных документов один конкретный?
Тогда конечно список не нужен. Нужна форма выбора.
Делаете общую форму. Делаете реквизит формы тип "ДинамическийСписок". Произвольный запрос, в котором делаете выборку Ссылка из всех возможных/нужных документов.
Выводите на форму.
Далее смотрите информацию по открытию нужной формы выбора и получение значения при выборе.
---
там ниже ответил
---
Я не пойму что требуется.
В поле ввода, тебе надо вводить ссылки на любые документы базы. Не физически метаданные документы, а ссылки на объекты документов, которые навводили пользователи. Реализация 0001, Реализация 0002 и т.п.
Ты же пытаешся, перебрать метаданные самой конфигурации, и добавляешь физические имена документов..что по сути является строкой а не ссылкой.
Естественно поле остается пустым.
---
Зачем тут вообще список выбора? Туда надо добавить все документы всех видов? Пользователь не офигеет от такого списка?
---
ДокументСсылка и ОбъектМетаданных - это совершенно разные типы.
Если пользователь хочет открыть конкретный документ, то и добавлять в список выбора ты должен не Метаданные.Документы, а ссылки на все типы документов.
Я так понимаю, что это просто задача для обучения программированию, так как в реальной жизни такая задача не востребована.
---
(3)
Необходимо с помощью программных средств языка 1С написать внешнюю обработку «Перегрузка документа».
На форме находятся 2 поля: в одном выбираем документ, в другом файл; и две кнопки: "Выгрузить" и "Загрузить"
По кнопке «Выгрузить» информация, содержащая в выбранном документе, выгружается в указанный файл.
По кнопке «Загрузить», из указанного файла, в базе создается копия исходного документа (за исключением номера документа, так как номера документов в системе уникальные).
При написании обработки необходимо использовать элемент языка «Метаданные.…».
Алгоритм выгрузки и загрузки у меня есть, но получается так, что когда я обращаюсь к полю ввода и пытаюсь достать из него, анпример, номер документа, обработка падает с ошибкой:
```1c
    {ВнешняяОбработка.task1.Форма.Форма_Перегрузка.Форма(42)}: Значение не является значением объектного типа (Номер)
    СЗ.Добавить(ПолеВвода1.Номер ,"Номер");
```

Надеюсь, сейчас понятно объяснил))))
---
ясно, тестовое задание. Довольно простое, но на знание механики.
---
вот-вот, я понимаю, что в теории это настолько простая вигня, так как есть опыт написания кода на c++, однако резко за пару дней перескочить на 1с и проделать тоже самое проблематично немного. пока не могу разобраться, а до дедлайна два дня, хех
---
Что значит выгружается в указанный файл. Файл может быть разным: xml, excel и т.д.
Для выгрузки и загрузки документов в файл xml используется обработка "ВыгрузкаЗагрузкаXML".
---
начит выгружа выгружается обязательно в .txt, причем нельзя использовать функции, выгружающие уникальные идентификаторы объектов, такие как "ЗначениеВСтрокуВнутр()" или "УникальныеИдентификатор()". У меня есть алгоритм для данной задачи, но для версии 7.7, адаптировать код на 8.3 не так сложно. Сейчас главная проблема возникает с полем ввода. Нужно делать форму выбора вместо списка?
---
Падает с ошибкой, потому что в ПолеВвода1 значение Неопределено.
Выбор вообще не нужно обрабатывать, платформа сама покажет выбор типа и форму выбора нужного типа.
---
ообще не нужно обраба Просто установить тип значения "ДокументСсылка" и разместить кнопку выбора?
---
Да просто реквизит перетаскиваешь на форму, кнопка выбора сама нарисуется.
---
Так, хорошо, кнопка выбора нарисовалась, теперь могу выбрать любой документ из базы, однако при выборе значение формы не заполняется. И такой вопрос: смогу ли я с таким типом значения поля ввода потом обращаться так:

```1c
    СЗ.Добавить(ПолеВвода1.Номер ,"Номер");
    СЗ.Добавить(ПолеВвода1.Дата ,"Дата");
```
---
При каком выборе не заполняется?
Сначала у тебя в ПолеВвода1 неопределено. В этот момент ПолеВвода1.Номер даст ошибку.
Потом выбираешь тип, в ПолеВвода1 становится пустая ссылка выбранного типа. После этого ПолеВвода1.Номер ошибку не даст, но будет пустая строка (или там 0, если номер числовой).
Потом выбираешь документ выбранного типа. После этого у тебя будет нужный номер.
---
Я в свойствах поля ввода выбрал тип его значения "ДокументСсылка". Добавил кнопку выбора, когда нажимаю - открывается форма выбора, в которой есть список всех документов формы. А когда я хочу выбрать какой-нибудь отчет, например, я кликаю на него и нажимаю "ОК", при этом форма выбора закрывается, а полеввожа остается пустым.
---
У тебя кнопка выбора была "Т". Тип ты выбрал. Кнопка выбора стала "...". Так? Теперь нужно еще раз выбрать конкретный документ.
---
Кнопка была Т, я нажал - выбрал документ. она стала "...". Поле по-прежнему пустое, но при нажатии на "..." открывается сам документ
---
Не документ, а форма выбора документов. Их несколько. Выбрать нужно один.
---
так я и выбираю один
---
Типов документов может быть много. Один из типов ты выбрал. Этого одного типа бывает много документов (и другого типа тоже бывает много документов). Теперь нужно выбрать один из документов выбранного типа.
---
а, вот в чем проблема. Понял, спасибо
---
нужно именно выбрать сам документ
---
уже увидел, спасибо! Пойду разбираться с выгрузкой
---
"Я в свойствах поля ввода выбрал тип его значения "ДокументСсылка""
"А когда я хочу выбрать какой-нибудь отчет"
Это как? Там не может быть выбор Отчет.
---
к стандартным реквизитам типа ДокументСсылка можно.
Вся изюминка "При написании обработки необходимо использовать элемент языка «Метаданные.…»." состоит в том, что нужно получить все реквизиты конкретного типы выбранного документа. Это как раз можно получить через метаданные. Причем для тонкого клиента только на сервере.

```1c
    СЗ = Новый Структура;
    Для каждого Реквизит Из ПолеВвода1.Метаданные().Реквизиты Цикл
    СЗ.Добавить(Реквизит.Имя, ПолеВвода1[Реквизит.Имя]);
    КонецЦикла;
```

А еще могут быть табличные части. Причем не одна.
Доступ к ним через: "ПолеВвода1.Метаданные().ТабличныеЧасти;"

И да, замените имя реквизита ПолеВвода1 на понятное.
---
В текстовом файле отправил модуль для этой же задачи на 7.7 версии + прикрепил свою обработку. Пойдет такой код мне?
---
ну и? все выбирается и отображается в ПолеВвода1