Всем привет.
Возникла ошибка. Имеется документ "Поступление продукции" и шаблон экзеля для загрузки в 1С.
Таблица шаблона "Код" и "Количество".
Табличная часть документа "Номенклатура, Количество" .
При загрузке, строка колонки "Номенклатура" выдает пустое значение.

```1c
    &НаСервере
    Функция НайтиТоварПоКоду(КодТовараВСистеме)
    Перем ТоварДляПоиска, СсылкаНаНайденныйТовар;
    ТоварДляПоиска = Справочники.Номенклатура;
    СсылкаНаНайденныйТовар = ТоварДляПоиска.НайтиПоКоду(КодТовараВСистеме);
    Если СсылкаНаНайденныйТовар = ТоварДляПоиска.ПустаяСсылка() Тогда
    Возврат "Товар не найден";
    Иначе
    Возврат СсылкаНаНайденныйТовар.Наименование;
    КонецЕсли;
    КонецФункции

    &НаКлиенте
    Процедура ЗагрузкаЧерезExcel(Команда)
    РасширениеПодключено = ПодключитьРасширениеРаботыСФайлами();
    Если Не РасширениеПодключено Тогда
    УстановитьРасширениеРаботыСФайлами();
    РасширениеПодключено = ПодключитьРасширениеРаботыСФайлами();
    КонецЕсли;
    Если РасширениеПодключено Тогда
    ДиалогФыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогФыбораФайла.Фильтр = "Файлы Excel (*.xls,*.xlsx) |*.xls*";
    ДиалогФыбораФайла.Заголовок = "Выберите файл для загрузки ковров";
    ДиалогФыбораФайла.ПредварительныйПросмотр = Истина;
    ДиалогФыбораФайла.ИндексФильтра = 0;
    Если ДиалогФыбораФайла.Выбрать() Тогда
    ОбработкаExcel(ДиалогФыбораФайла.ПолноеИмяФайла);
    КонецЕсли;
    Иначе
    Сообщить("Расширение работы с файлами не доступно !");
    КонецЕсли;

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

    &НаКлиенте
    Процедура ОбработкаExcel(Файл)
    ВыбФайл = Новый Файл(Файл);
    Если Не ВыбФайл.Существует()Тогда
    Сообщить("Что то пошло не так");
    Возврат;
    Иначе
    НомерЛиста = 1;
    Попытка
    Excel = Новый COMОбъект("Excel.Application");
    Excel.Workbooks.Open(СокрЛП(Файл));
    Исключение
    Сообщить("Не удается!");
    Возврат;
    КонецПопытки;
    Excel.Sheets().select();
    Excel.ActiveWorkbook.Worksheets(НомерЛиста).Activate();

    Версия = Лев(Excel.Version,Найти(Excel.Version,")-1);
    Если Версия = 8 Тогда
    ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
    ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count,13);
    Иначе
    ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
    ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
    КонецЕсли;

    НомерКолонкиТовара = 1;
    НомерКолонкиКоличествоТоваров = 2;

    Для НомерЛиста = 1 По Excel.ActiveWorkbook.Sheets.Count Цикл
    ПроцентЗагрузки = 0;
    rows = Excel.ActiveSheet.UsedRange.Rows.Count;
    ШагиЗагрузки = 100/rows;

    Для СчСтроки = 2 По ФайлСтрок Цикл
    КодТовара = СокрЛ(Excel.Cells(СчСтроки,НомерКолонкиТовара).Value);
    Количество = СокрЛ(Excel.Cells(СчСтроки,НомерКолонкиКоличествоТоваров).Value);
    Сообщить(КодТовара);
    СтрокаТовар = Строка(КодТовара);
    ПолучитьТовар = НайтиТоварПоКоду(СтрокаТовар);

    НоваяСтрока = объект.ПрайсЛист.Добавить();
    НоваяСтрока.Номенклатура = ПолучитьТовар;
    НоваяСтрока.Количество = Количество;
    //НоваяСтрока.ТипПродукции = НоваяСтрока.Продукция.ПолучитьОбъект().ТипПродукции;
    //НоваяСтрока.Фирма = НоваяСтрока.Продукция.ПолучитьОбъект().Фирма;
    //НоваяСтрока.ЕдИзмерения = НоваяСтрока.Продукция.ПолучитьОбъект().ЕдИзмерения;
    //НоваяСтрока.Цена = ПослЦена(НоваяСтрока.Продукция,Объект.Дата);
    //НоваяСтрока.Количество = Количество;
    //РаботаСДокументами.РассчитатьСумму(НоваяСтрока);

    Состояние("Идет загрузка данных" + ". Прогресс:",ШагиЗагрузки*СчСтроки);
    КонецЦикла;
    КонецЦикла;
    Excel.ActiveWorkbook.Close();
    КонецЕсли;
    КонецПроцедуры
```
---
Вот это мне помогло

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

```1c
    Функция ПолучитьВалюту(Вал)Экспорт
    Если Вал = 1 Тогда
    Возврат Перечисления.Валюты.Доллар;
    КонецЕсли;
    Если Вал = 2 Тогда
    Возврат Перечисления.Валюты.Сум;
    КонецЕсли;
    КонецФункции
```

```1c
    Валюта = СокрЛП(Excel.Cells(СчСтроки,НомерКолонкиВалюты).Value);
    Если Валюта = ОбщегоНазначения.ПолучитьВалюту(1) Тогда
    РаботаСДокументами.РасчетСуммыСКурсом(НоваяСтрока,КурсДоллара);
    КонецЕсли;
```

Сумма в отладчике дает ноль.
---
```1c
    Функция НайтиТоварПоКоду(КодТовараВСистеме)
    Перем ТоварДляПоиска, СсылкаНаНайденныйТовар;
    ТоварДляПоиска = Справочники.Номенклатура;
    СсылкаНаНайденныйТовар = ТоварДляПоиска.НайтиПоКоду(КодТовараВСистеме);
    Если СсылкаНаНайденныйТовар = ТоварДляПоиска.ПустаяСсылка() Тогда
    Возврат "Товар не найден";
    Иначе
    Возврат СсылкаНаНайденныйТовар;
    КонецЕсли;
    КонецФункции
```
---
Не помогло.
Не подскажете как работать с Функцией Формат()? Думаю, что дело в формате значения.
У меня через отладчик код выглядит 47 808 550...А в 1С 47808550
---
Должно помочь СтрЗаменить( ," ","")
---
ЧГ=0
не получается)
---
СтрЗаменить( ," ","")
---
не сработало
---
Код справочника номенклатуры числовой?
---
Строковый
---
Тогда точно должен работать:
КодТовара=СтрЗаменить(КодТовара," ","");
---
Не работает. Не могу понять почему...
---
Смотрите по отладчику. По шагово.
---
Просмотрел. Ничего не поменялось
---
Если код трех-значный, то табличная часть заполняется
---
В каком месте кода вставлена функция КодТовара=СтрЗаменить(КодТовара," ",""); ?
---
Я объявляю новую переменную.
СтрокаТовар = СтрЗаменить(КодТовара," ","");
---
Здесь?

       Для СчСтроки = 2 По ФайлСтрок Цикл
                КодТовара = СокрЛ(Excel.Cells(СчСтроки,НомерКолонкиТовара).Value);
                Количество = СокрЛ(Excel.Cells(СчСтроки,НомерКолонкиКоличествоТоваров).Value);
                Сообщить(КодТовара);
 СтрокаТовар = Строка(КодТовара);
                ПолучитьТовар = НайтиТоварПоКоду(СтрокаТовар);
---
потому что там неразрывный пробел, а ты ставишь обычный. Вот сюда надо писать формат:

```1c
    СтрокаТовар = Формат(КодТовара, "ЧГ=0");
    ПолучитьТовар = НайтиТоварПоКоду(СтрокаТовар);
```
---
СтрокаТовар = Формат(КодТовара, "ЧГ=0");
ПолучитьТовар = НайтиТоварПоКоду(СтрокаТовар);

Я так уже пробовал - не помогает.
---
лидирующие нули в коде товара есть? Из екселя прилетает, наверно, 456, а в справочнике 0000000456, да?
---
нету никаких нулей.
---
Ну конечно, мы дружно пытаемся форматировать строку.

```1c
    КодТовара = Формат(Excel.Cells(СчСтроки,НомерКолонкиТовара).Value, "ЧГ=0");
    Количество = СокрЛ(Excel.Cells(СчСтроки,НомерКолонкиКоличествоТоваров).Value);
    Сообщить(КодТовара);
    ПолучитьТовар = НайтиТоварПоКоду(КодТовара);
```
---
Нужно убрать разделители групп в числе? Тогда добавить параметр "ЧГ=0"

```1c
    Формат(Сумма, "ЧГ=0")
```
---
Дело не в сумме, а то что по коду не могу получить наименование элемента и поместить в таблич.часть
---
Вот это мне помогло

```1c
    ТекущийКод = СтрЗаменить(КодТовара,Символы.НПП,");
    ПолучитьТовар = НайтиТоварПоКоду(ТекущийКод);
```
---
В (23) меньше лишних действий.
---
Спасибо за содействие. Учту!)