Добрый день! Подскажите, пожалуйста, мне нужно загрузить в 1с файлик эксель, состоящий из колонок, например, Номенклатура, ВидНоменклатуры и ЕдиницаИзмерения.
Я все прописала, внешняя обработка открывается, выбирается файл эксель, данные подтягиваются. Загружаю данные в номенклатуру, передается только наименование. Я нашла проблему: у меня указан тип ссылка справочник и перечисление у реквизитов на форме.
У меня создана ТЗ, в ней,собственно, реквизиты и расположены. Вопрос, как мне эти реквизиты преобразовать в объект? Есть какая-то универсальная функция или их как-то по отдельности надо "вытаскивать" в объект? Делаю для бп3 учебной

Эта штука работает, но не передает(
Как обойти цикл и получить объекты?

```1c
    //загруженные данные - наша тз
    ///////////Получи объект из ссылкит

    Для каждого НоменклатураПеременная Из ЗагруженныеДанные Цикл
    НовыйЭлемент=Справочники.Номенклатура.СоздатьЭлемент();

    НовыйЭлемент.Наименование=НоменклатураПеременная.Номенклатура;
    НовыйЭлемент.ВидНоменклатуры=НоменклатураПеременная.ВидНоменклатуры;
    НовыйЭлемент.ВидСтавкиНДС=НоменклатураПеременная.СтавкаНДС;
    НовыйЭлемент.ЕдиницаИзмерения=НоменклатураПеременная.ЕдиницаИзмерения;

    НовыйЭлемент.Записать();
    КонецЦикла;
```

Подскажите, как сделать, учусь, тонкостей не знаю(((
Заранее спасибо
---
```1c
    .......
    СуществующийЭлемент = Справочники.Номенклатура.НайтиПоНаименованию(<Наименование>, Истина);
    Если НЕ ЗначениеЗаполнено(СуществующийЭлемент) Тогда
    НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
    ..........
    НовыйЭлемент.Записать();
    СуществующийЭлемент = НовыйЭлемент.Ссылка;
    КонецЕсли;
    .........
```
---
Если у вас в файле наименование, то надо сперва найти ссылку, например по наименованию. Лучше это делать запросом к справочнику. И если результат пустой, то надо создать свой элемент.
---
Хорошим тоном считается создание нового элемента только в случае отсутствия существующего
в общем случае подход верен, только нужно соблюдать типы значений реквизитов.
НовыйЭлемент.ВидНоменклатуры, например, имеет тип СправочникСсылка.ВидыНоменклатуры.
Ссылку на элемент справочника "ВидыНомеклатуры" необходимо так же определять с помощью поиска существующего/созданием нового элемента
---
как правильно это прописать, можете подсказать, пожалуйста?
---
```1c
    .......
    СуществующийЭлемент = Справочники.Номенклатура.НайтиПоНаименованию(<Наименование>, Истина);
    Если НЕ ЗначениеЗаполнено(СуществующийЭлемент) Тогда
    НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
    ..........
    НовыйЭлемент.Записать();
    СуществующийЭлемент = НовыйЭлемент.Ссылка;
    КонецЕсли;
    .........
```
---
Спасибо, сейчас попробую!
---
Я или не так делаю что-то (скорее всего), но у меня не проставляется(((
Только СтавкаНДС и то только потому, что там жестко проставлено(что не корректно, но для проверки сойдет)

```1c
    Для каждого НоменклатураПеременная Из ЗагруженныеДанные Цикл

    СуществующийЭлемент =Справочники.Номенклатура.НайтиПоНаименованию(НоменклатураПеременная.номенклатура).Наименование;
    Если НЕ ЗначениеЗаполнено(СуществующийЭлемент) Тогда
    НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();

    НовыйЭлемент.Наименование=НоменклатураПеременная.Номенклатура;
    НовыйЭлемент.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию(НоменклатураПеременная.Видноменклатуры).Наименование;
    НовыйЭлемент.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(Номенклатурапеременная.единицаИзмерения).Наименование;
    НовыйЭлемент.ВидСтавкиНДС=Перечисления.ВидыСтавокНДС.Общая;

    НовыйЭлемент.Записать();
    СуществующийЭлемент = НовыйЭлемент.Ссылка;
```
---
убрала
```1c
    НовыйЭлемент.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию(НоменклатураПеременная.Видноменклатуры).Наименование;
    НовыйЭлемент.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(Номенклатурапеременная.единицаИзмерения).Наименование;
```

последнее "Наименование". Работает!!! Только с перечислениями беда
---
то есть теперь так у меня

```1c
    НовыйЭлемент.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию(НоменклатураПеременная.Видноменклатуры)
    ;
    НовыйЭлемент.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(Номенклатурапеременная.единицаИзмерения);
```
---
Исходя из скриншота, в ТЗ у вас уже хранятся значения в нужном типе, т.е. ссылочном.
Вы должны в процессе формирования ТЗ получать ссылки на ВидНоменклатуры/ЕдиницуИзмерения точно так же как получаете на номенклатуру.

А при формировании номенклатуры использовать эти значения напрямую:

```1c
    НовыйЭлемент.ВидНоменклатуры = НоменклатураПеременная.Видноменклатуры;
    НовыйЭлемент.ЕдиницаИзмерения = Номенклатурапеременная.единицаИзмерения;
```
---
Нет, там рандомные значения подставляются(
Неправильно работает(