Привет всем.

Постараюсь сформировать вопрос правильно.
Есть обработка, которая загружает список номенклатуры из файла excel. Делается это, т.к. вручную забивать 50+ позиций в одном поступлении долго.

Принцип работы такой: указывается файл, в отдельных полях указываем где должен стоять артикул, номер ГДТ, кол-во, цена и пр. Далее по кнопке Заполнить заполняем (логично) ТЧ с товарами. Далее обработка сравнивает по Наименованию и Артикулу есть ли уже такая Номенклатура в базе. Если есть заполняет его. Если нет, пустое поле. Если пустые поля есть нажимаем кнопку сформировать номенклатуру, которая данную номенклатуру создает со значением Артикул и Наименование. И вот теперь стали ещё в файлах excel указывать ТНВЭД. Данные для выбора поля добавил, в ТЧ строку добавил, здесь всё заполняется без проблем. Но при создании номеклатуры ТНВЭД не заполняется.

Теперь покажу код как создается номенклатура:

```1c
    &НаСервере
    Процедура СформироватьНоменклатуруНаСервере()

    Для Каждого Строка Из Объект.ДанныеЗагрузки Цикл

    Если ЗначениеЗаполнено(Строка.Номенклатура) Тогда
    Продолжить;
    КонецЕсли;

    Строка.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Строка.Код);

    Если ЗначениеЗаполнено(Строка.Номенклатура) Тогда
    Продолжить;
    КонецЕсли;

    НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();

    НовыйЭлемент.Родитель = Объект.ГруппаНоменклатуры;
    НовыйЭлемент.Артикул = Строка.Код;
    НовыйЭлемент.Наименование = Строка.Наименование;
    НовыйЭлемент.ЕдиницаИзмерения = Объект.ЕдиницаИзмерения;
    НовыйЭлемент.НоменклатурнаяГруппа = Объект.НоменклатурнаяГруппа;
    // НовыйЭлемент.СтавкаНДС = Объект.СтавкаНДС;
    НовыйЭлемент.СтранаПроисхождения = Строка.Страна;
    НовыйЭлемент.НомерГТД = Строка.ГТД;
    НовыйЭлемент.КодТНВЭД = Строка.КодТНВЭД;

    Попытка

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

    Строка.Номенклатура = НовыйЭлемент.Ссылка;

    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru='Добавлена номенклатурная позиция с артикулом:" + Строка.Код + ". Строка " + Строка.НомерСтроки + "'"));

    Исключение
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru='Не удалось создать номенклатурную позицию с артикулом:" + Строка.Код + ". Строка " + Строка.НомерСтроки + "'"));
    КонецПопытки;

    КонецЦикла;

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

В самом справочнике Номенклатура код ТНВЭД берется из справочника Классификаторы.

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

(9) Можно подробнее пожалуйста. Т.е. сейчас необходимо примерно следующее написать.
"Формат(Строка.КодТНВЭД, ЧГ=0);"?
---
поменял тип данных на строку - вывелось. Но не везде. У некоторых кодов присутствует пробел
---
Преобразовывать надо число в строку. При чем преобразовывать через Формат(), потому что то, что вы видите - это не пробел.
---
пробел но неразрывный