Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В УТ 10.3. Сам код работает, загружает данные и заполняет табличный часть. Но пользователю надо что он могла вводить номер колонку. Пример : В Excel есть 4 колонку (Номенклатура, Цена, Количество, Сумма). Но Номенклатуры в третий колонке, цена 2, сумма 4 и количество 1.
У меня в экселя номенклатуры написан в третий колонке. И есть только одно товар (Пример ; Клавиатура).
Код такой -
Но код выбирает самую первую который есть списке справочнике номенклатура. И это родитель. Код так то отбор не делает. С отладкей посмотрел но не могла решить проблему. Как могу решить эту проблему. Полный код ниже. Спасибо всем за ранее.
У меня в экселя номенклатуры написан в третий колонке. И есть только одно товар (Пример ; Клавиатура).
Код такой -
НоменклатураКолонка = 3; // я сам это поставил
ВвестиЗначение(НоменклатураКолонка, "Введите номер колонки ""Номенклатура""");
///// .......
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Эксель.Cells(Стр,НоменклатураКолонка).Value));
НоваяСтрока.Номенклатура = Номенклатура;
Но код выбирает самую первую который есть списке справочнике номенклатура. И это родитель. Код так то отбор не делает. С отладкей посмотрел но не могла решить проблему. Как могу решить эту проблему. Полный код ниже. Спасибо всем за ранее.
Перем ТЗ Экспорт;
Процедура СоздатьТЗ()
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура",,,);
ТЗ.Колонки.Добавить("Количество",,,);
ТЗ.Колонки.Добавить("Цена",,,);
ТЗ.Колонки.Добавить("Сумма",,,);
КонецПроцедуры // СоздатьТЗ()
Процедура ПереборСтрокТЗ()
СсылкаДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
СсылкаДокумент.Дата = ТекущаяДата();
Для Каждого Ст из ТЗ Цикл
ТекСтрокаТовары = СсылкаДокумент.Товары.Добавить();
ТекСтрокаТовары.Номенклатура = Ст.Номенклатура;
ТекСтрокаТовары.Количество = Ст.Количество;
ТекСтрокаТовары.Цена = Ст.Цена;
ТекСтрокаТовары.Сумма = Ст.Сумма;
ТекСтрокаТовары.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
ТекСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("ƏD");
ТекСтрокаТовары.Коэффициент = 1;
КонецЦикла;
СсылкаДокумент.Записать();
КонецПроцедуры
Процедура ВыберитеФайлНажатие(Элемент)
СоздатьТЗ();
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите excel - файл";
Диалог.ПолноеИмяФайла = "С:\";
Диалог.Фильтр = "Таблицы (*.xls,*.xlsx)|*.xls;*.xlsx;|Microsoft Excel 97/2000/XP/2003 (*.xls)|*.xls|Microsoft Excel 2007/2010 (*.xlsx)|*.xlsx";
Если Диалог.Выбрать() Тогда
Предупреждение(Диалог.ПолноеИмяФайла, 10 , "Файл выбран.");
Иначе
Предупреждение("Файл не выбран.");
Возврат;
КонецЕсли;
ПолеВвода1 = Диалог.ПолноеИмяФайла;
Эксель = Новый COMОбъект("Excel.Application");
Эксель.Workbooks.Open(Диалог.ПолноеИмяФайла);
Эксель.Sheets(1).Select();
Версия = Лев(Эксель.Version,Найти(Эксель.Version,".")-1);
Если Версия = "8" тогда
ФайлСтрок = Эксель.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Эксель.Cells.CurrentRegion.Columns.Count, 13);
Иначе
ФайлСтрок = Эксель.Cells(1,1).SpecialCells(11).Row;
ФайлКолонок = Эксель.Cells(1,1).SpecialCells(11).Column;
Конецесли;
НоменклатураКолонка = 3; // я сам это поставил
ВвестиЗначение(НоменклатураКолонка, "Введите номер колонки ""Номенклатура""");
КоличествоКолонка = 0; // я сам это поставил
ВвестиЗначение(КоличествоКолонка , "Введите номер колонки ""Количество""");
ЦенаКолонка = 0; // я сам это поставил
ВвестиЗначение(ЦенаКолонка , "Введите номер колонки ""Цена""");
СуммаКолонка = 0; // я сам это поставил
ВвестиЗначение(СуммаКолонка , "Введите номер колонки ""Сумма""");
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Эксель.Cells(Стр,НоменклатураКолонка).Value));
Если Номенклатура.Пустая() Тогда
Сообщить("Строка - " + ФайлСтрок + " Номенклатура " + """" + СокрЛП(Эксель.Cells(Стр,НоменклатураКолонка).Value) + """" + " не найдена!");
СсылкаСправочник = Справочники.Номенклатура.СоздатьЭлемент();
СсылкаСправочник.Наименование = Номенклатура;
СсылкаСправочник.ПолноеНаименование = Номенклатура;
СсылкаСправочник.БазоваяЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("ƏD");
СсылкаСправочник.Записать();
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.Количество = СокрЛП(Эксель.Cells(Стр,КоличествоКолонка).Value);
НоваяСтрока.Цена = СокрЛП(Эксель.Cells(Стр,ЦенаКолонка).Value);
НоваяСтрока.Сумма = СокрЛП(Эксель.Cells(Стр,СуммаКолонка).Value);
Иначе
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.Количество = СокрЛП(Эксель.Cells(Стр,КоличествоКолонка).Value);
НоваяСтрока.Цена = СокрЛП(Эксель.Cells(Стр,ЦенаКолонка).Value);
НоваяСтрока.Сумма = СокрЛП(Эксель.Cells(Стр,СуммаКолонка).Value);
НоваяСтрока.Номенклатура = Номенклатура;
Конецесли
КонецЦикла;
Эксель.ActiveWorkbook.Close();
Эксель.Application.Quit();
ПереборСтрокТЗ();
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки
- Загрузка документов из УТ 10.3 в БП 3.0 по правилам конвертации
- Перенос данных из УТ 10.3 в КА 2.5. Переносятся документы (обороты за период), справочная информация и остатки
- Загрузка в УТ 10.3 (поступления, оприходования и цены номенклатуры из Excel)
- Перенос остатков из УТ 10.3 в УНФ 3.0
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
У вас ошибка в синтаксисе.
Скорее всего неверно откуда то скопировали.
Должно быть что-то на подобии
Проверьте синтаксис получше и вдумайтесь в код. Тогда есть вероятность, что он отработает
Скорее всего неверно откуда то скопировали.
Должно быть что-то на подобии
Для каждого Стр из ТЗ Цикл
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Эксель.Cells(Стр,НоменклатураКолонка).Value));
Если Номенклатура.Пустая() Тогда
Сообщить("Строка - " + ФайлСтрок + " Номенклатура " + """" + СокрЛП(Эксель.Cells(Стр,НоменклатураКолонка).Value) + """" + " не найдена!");
СсылкаСправочник = Справочники.Номенклатура.СоздатьЭлемент();
СсылкаСправочник.Наименование = Номенклатура;
СсылкаСправочник.ПолноеНаименование = Номенклатура;
СсылкаСправочник.БазоваяЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("ƏD");
СсылкаСправочник.Записать();
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.Количество = СокрЛП(Эксель.Cells(Стр,КоличествоКолонка).Value);
НоваяСтрока.Цена = СокрЛП(Эксель.Cells(Стр,ЦенаКолонка).Value);
НоваяСтрока.Сумма = СокрЛП(Эксель.Cells(Стр,СуммаКолонка).Value);
Иначе
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.Количество = СокрЛП(Эксель.Cells(Стр,КоличествоКолонка).Value);
НоваяСтрока.Цена = СокрЛП(Эксель.Cells(Стр,ЦенаКолонка).Value);
НоваяСтрока.Сумма = СокрЛП(Эксель.Cells(Стр,СуммаКолонка).Value);
НоваяСтрока.Номенклатура = Номенклатура;
КонецЕсли;
КонецЦикла;
ПоказатьПроверьте синтаксис получше и вдумайтесь в код. Тогда есть вероятность, что он отработает
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот