Поиск товара по коду через загрузку Excel в 1С
Всем привет.
Возникла ошибка. Имеется документ "Поступление продукции" и шаблон экзеля для загрузки в 1С.
Таблица шаблона "Код" и "Количество".
Табличная часть документа "Номенклатура, Количество" .
При загрузке, строка колонки "Номенклатура" выдает пустое значение.
Возникла ошибка. Имеется документ "Поступление продукции" и шаблон экзеля для загрузки в 1С.
Таблица шаблона "Код" и "Количество".
Табличная часть документа "Номенклатура, Количество" .
При загрузке, строка колонки "Номенклатура" выдает пустое значение.
&НаСервере
Функция НайтиТоварПоКоду(КодТовараВСистеме)
Перем ТоварДляПоиска, СсылкаНаНайденныйТовар;
ТоварДляПоиска = Справочники.Номенклатура;
СсылкаНаНайденныйТовар = ТоварДляПоиска.НайтиПоКоду(КодТовараВСистеме);
Если СсылкаНаНайденныйТовар = ТоварДляПоиска.ПустаяСсылка() Тогда
Возврат "Товар не найден";
Иначе
Возврат СсылкаНаНайденныйТовар.Наименование;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузкаЧерез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();
КонецЕсли;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Загрузка из Excel в документы (4 вида) для УТ 11.4, УТ 11.5
- Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.
- Загрузка остатков из Excel в 1С: Розница 2.3: Ювелирный магазин с учетом вставок и поступления от комитентов
- Аналитика Маркетплейсов Wildberries и OZON через MS Excel (без API) для 1C
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Возникла теперь другая проблема.
В шаблоне есть колонка "Валюта". В системе создан объект конфигурации Перечисления.Валюты.
Занесены два значения.
Сумма в отладчике дает ноль.
В шаблоне есть колонка "Валюта". В системе создан объект конфигурации Перечисления.Валюты.
Занесены два значения.
Функция ПолучитьВалюту(Вал)Экспорт
Если Вал = 1 Тогда
Возврат Перечисления.Валюты.Доллар;
КонецЕсли;
Если Вал = 2 Тогда
Возврат Перечисления.Валюты.Сум;
КонецЕсли;
КонецФункции
Показать
Валюта = СокрЛП(Excel.Cells(СчСтроки,НомерКолонкиВалюты).Value);
Если Валюта = ОбщегоНазначения.ПолучитьВалюту(1) Тогда
РаботаСДокументами.РасчетСуммыСКурсом(НоваяСтрока,КурсДоллара);
КонецЕсли;
Сумма в отладчике дает ноль.
Функция НайтиТоварПоКоду(КодТовараВСистеме)
Перем ТоварДляПоиска, СсылкаНаНайденныйТовар;
ТоварДляПоиска = Справочники.Номенклатура;
СсылкаНаНайденныйТовар = ТоварДляПоиска.НайтиПоКоду(КодТовараВСистеме);
Если СсылкаНаНайденныйТовар = ТоварДляПоиска.ПустаяСсылка() Тогда
Возврат "Товар не найден";
Иначе
Возврат СсылкаНаНайденныйТовар;
КонецЕсли;
КонецФункции
Показать
(22) Здесь?
Для СчСтроки = 2 По ФайлСтрок Цикл
КодТовара = СокрЛ(Excel.Cells(СчСтроки,НомерКолонкиТовара).Value);
Количество = СокрЛ(Excel.Cells(СчСтроки,НомерКолонкиКоличествоТоваров).Value);
Сообщить(КодТовара);
СтрокаТовар = Строка(КодТовара);
ПолучитьТовар = НайтиТоварПоКоду(СтрокаТовар);
Для СчСтроки = 2 По ФайлСтрок Цикл
КодТовара = СокрЛ(Excel.Cells(СчСтроки,НомерКолонкиТовара).Value);
Количество = СокрЛ(Excel.Cells(СчСтроки,НомерКолонкиКоличествоТоваров).Value);
Сообщить(КодТовара);
ПолучитьТовар = НайтиТоварПоКоду(СтрокаТовар);
(21) Ну конечно, мы дружно пытаемся форматировать строку.
КодТовара = Формат(Excel.Cells(СчСтроки,НомерКолонкиТовара).Value, "ЧГ=0");
Количество = СокрЛ(Excel.Cells(СчСтроки,НомерКолонкиКоличествоТоваров).Value);
Сообщить(КодТовара);
ПолучитьТовар = НайтиТоварПоКоду(КодТовара);
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот