Сформирвал подбор, в режиме 1С предприятия при выборе объекте номенклатуры для заполнения приходной накладной, для которой этот подбор формировался выскакивает ошибка

{Документ.ПриходнаяНакладная.Форма.ФормаДокумента.Форма(27)}: Итератор для значения не определен
  Для Каждого ВыбранныйЭлемент Из ВыбранноеЗначение Цикл

```1c
    &НаКлиенте
    Процедура Подбор(Команда)
    ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе", Ложь);
    ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, Элементы.Материалы);
    КонецПроцедуры

    &НаКлиенте
    Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Для Каждого ВыбранныйЭлемент Из ВыбранноеЗначение Цикл
    НоваяСтрока = Объект.Материалы.Добавить();
    НоваяСтрока.Материал = ВыбранныйЭлемент;
    КонецЦикла;;
    КонецПроцедуры
```
---
а где указано, что множественный выбор? Проверьте тип переменной ВыбранноеЗначение.
---
а где указано, что множественный выбор? Проверьте тип переменной ВыбранноеЗначение.
---
Проверьте тип переменной ВыбранноеЗначение.
спасибо за ответ, а как проверить тип переменной и изменить его если это надо, я просто новичок
---
ТипЗнч(ВыбранноеЗначение)

"ЗакрыватьПриВыборе" это не множественный выбор. Для множественного выбора нужно использовать соответствующий параметр:
МножественныйВыбор

```1c
    ПараметрыФормы.Вставить("МножественныйВыбор", Истина);
```
---
ать соответствующи
я заанимался по книге Радченко: Практическое пособие разработчике и там было так написано, попробую сейчас как вы сказали
---
если там был код как в (1), то это множественный подбор, а не множественный выбор. Это разные понятия. Множественный подбор, это когда из формы выбора можно много раз выбирать не закрывая форму выбора. А множественный выбор это когда можно сразу выделить несколько элементов и скопом их выбрать за один раз. Во втором случае как раз и передается в обработку выбора массив значений, который и можно обходить циклом Для Каждого.
---
Здравствуйте. А что значит, если ВыбраноеЗначение имеет тип число?
---
значит возвращается число.
Возможно это номер (или идентификатор) строки.
---
Да, это и есть номер строки, а как сделать чтобы возвращало значение строки?
---
предлагаете угадать, что и как у там сделано?
Для начала, нужно знать что открываете для выбора, как там реализовано.
---
я в документе создал форму выбора с произвольным запросом:

```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ОстаткиОС.Организация КАК Организация,
    ОстаткиОС.ОсновноеСредство КАК ОсновноеСредство,
    ОстаткиОС.ОсновноеСредство.Код КАК Код,
    ОстаткиОС.ОсновноеСредство.ГрупповойУчет КАК ГрупповойУчет,
    ОстаткиОС.ОсновноеСредство.ВидНФА КАК ВидНФА,
    ОстаткиОС.ОсновноеСредство.ИмуществоКазны КАК ИмуществоКазны,
    ОстаткиОС.ОсновноеСредство.Родитель КАК Родитель,
    ОстаткиОС.ЦМО КАК ЦМО,
    ОстаткиОС.ИнвентарныйНомер КАК ИнвентарныйНомер,
    ВЫБОР
    КОГДА &ИспользоватьУчетПоПодразделениям
    И ЖурналПроводокЕПСБУОстатки.Счет.УчетПоПодразделениям
    ТОГДА ОстаткиОС.Подразделение
    ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)
    КОНЕЦ КАК Подразделение,
    ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Контрагент,
    ЗНАЧЕНИЕ(Справочник.Договоры.ПустаяСсылка) КАК Договор,
    ОстаткиОС.СтоимостьОстаток КАК Сумма,
    ОстаткиОС.КоличествоОстаток КАК Количество,
    ОстаткиОС.СтоимостьОстаток / ВЫБОР
    КОГДА ОстаткиОС.КоличествоОстаток = 0
    ТОГДА 1
    ИНАЧЕ ОстаткиОС.КоличествоОстаток
    КОНЕЦ КАК Цена,
    ЖурналПроводокЕПСБУОстатки.Счет КАК СчетУчета,
    ЖурналПроводокЕПСБУОстатки.ИФО КАК ИФО,
    ЖурналПроводокЕПСБУОстатки.КПС КАК КПС,
    ЖурналПроводокЕПСБУОстатки.КФО КАК КФО,
    ВЫРАЗИТЬ(0 КАК ЧИСЛО(18, 2)) КАК СуммаАмортизации,
    ВЫРАЗИТЬ(0 КАК ЧИСЛО(18, 2)) КАК СуммаОбесценения
    ИЗ
    РегистрНакопления.СтоимостьОбъектовОС.Остатки(
    {(&НаДату)},
    ВидРаспоряжения = &ВидРаспоряжения
    И ЦМО = &ЦМО {(Организация).*, (ОсновноеСредство).*, (ОсновноеСредство) КАК ОсновноеСредствоДоп, (ОсновноеСредство.ВидНФА) КАК ВидНФА, (ОсновноеСредство.ТипНФА) КАК ТипНФА, (Подразделение).*, (ЦМО).*, (ИнвентарныйНомер).*}) КАК ОстаткиОС
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки({(&НаДату)}, Счет В (&Счет), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.ОсновныеСредства), {(Организация).*, (ВЫРАЗИТЬ(Субконто1 КАК Справочник.ОсновныеСредства)) КАК ОсновноеСредство, (Субконто1) КАК ОсновноеСредствоДоп, (ЕСТЬNULL(ВЫБОР
    КОГДА &ИспользоватьУчетПоПодразделениям
    ТОГДА Подразделение
    ИНАЧЕ NULL
    КОНЕЦ, ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка))).* КАК Подразделение}) КАК ЖурналПроводокЕПСБУОстатки
    ПО ОстаткиОС.ОсновноеСредство = ЖурналПроводокЕПСБУОстатки.Субконто1
```

Передал параметры:
множестваннныйвыбор, и параметры объекта,
в самой форме при создании это:

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

    КонецПроцедуры
```
---
Форма открывается, и проваливается в обработку выбора, но там номер строки (число) в выбранномЗначении
---
Форма, выбора сделана в том же документе, в который нужно получить данные!
---
как понимаю это выбор из динамического списка без основной таблицы. Из него по умолчанию будет возвращаться число.
Как вариант, возвращать принудительно значения, обходя выделенные строки.
---
Может нужно указать основную таблицу, а то я сейчас тоже посмотрел, там регистр бухгалтерии указан как основная таблица, хотя тянет он с регистра накопления! "Как вариант, возвращать принудительно значения, обходя выделенные строки." А это как?
---
не замена таблицы не помогает, поменял, тоже число возвращает, только в массиве))
---
и не поможет. Основная таблица должна быть на ссылочные типы. Регистры такими не могут быть по определению.
---
"Как вариант, возвращать принудительно значения, обходя выделенные строки." А это как?
Элементы.Список.ВыделенныеСтроки.
Обойти в цикле и получить нужные значения, которые можно сохранить, к примеру, в массиве и возвращать:
Закрыть(МассивЗначений);
---
А это в какой процедуре делать ПриЗакрытии
? И в самой форме выбора, я так понимаю?
---
в форме выбора. Можно отключить кнопку выбора и добавить свою, в которой и получать значения и возвращать.
---
Ок. Спасибо1 Попробую!