1C:Бухгалтерия
1С:CRM ПРОФ, КОРП
1С:ERP Управление предприятием 2
Платформа 1С v8.3
Корп. решения 1С
Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В УТ 10.3. Сам код работает, загружает данные и заполняет табличный часть. Но пользователю надо что он могла вводить номер колонку. Пример : В Excel есть 4 колонку (Номенклатура, Цена, Количество, Сумма). Но Номенклатуры в третий колонке, цена 2, сумма 4 и количество 1.Создал форму, добавил новую реквизиты. Код изменил. Код выбирает номер колонку который пользователь вводил. Но
здесь он выбирает первую номенклатуру ( это группа в первом списке). Можете проста дать подсказку для решения. Спасибо за ранее
Вот полный код
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Эксель.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;
Конецесли;
Для Стр = 1 ПО ФайлСтрок Цикл
//ВвестиЗначение(НоменклатураКолонка, "Введите номер колонки ""Номенклатура""");
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Эксель.Cells(Стр,НоменклатураКолонка).Value));
Если Номенклатура.Пустая() Тогда
Сообщить("Строка - " + ФайлСтрок + " Номенклатура " + """" + СокрЛП(Эксель.Cells(Стр,НоменклатураКолонка).Value) + """" + " не найдена!");
СсылкаСправочник = Справочники.Номенклатура.СоздатьЭлемент();
СсылкаСправочник.Наименование = Номенклатура;
СсылкаСправочник.ПолноеНаименование = Номенклатура;
СсылкаСправочник.БазоваяЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("ƏD");
СсылкаСправочник.Записать();
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.Количество = СокрЛП(Эксель.Cells(Стр,КоличествоКолонка).Value);
НоваяСтрока.Цена = СокрЛП(Эксель.Cells(Стр,ЦенаКолонка).Value);
НоваяСтрока.Сумма = СокрЛП(Эксель.Cells(Стр,СуммаКолонка).Value);
НоваяСтрока.Номенклатура = Номенклатура;
Иначе
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.Количество = СокрЛП(Эксель.Cells(Стр,КоличествоКолонка).Value);
НоваяСтрока.Цена = СокрЛП(Эксель.Cells(Стр,ЦенаКолонка).Value);
НоваяСтрока.Сумма = СокрЛП(Эксель.Cells(Стр,СуммаКолонка).Value);
НоваяСтрока.Номенклатура = Номенклатура;
Конецесли
КонецЦикла;
Эксель.ActiveWorkbook.Close();
Эксель.Application.Quit();
ПереборСтрокТЗ();
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Универсальная обработка для загрузки данных из Экселя в табличную часть документа
- Загрузка данных из ОФД в 1С:БП 3.0, 1С:КА 2.4/2.5, УНФ 3.0 о денежных поступлениях (чеках)
- Загрузка номенклатуры из Эксель (новый взгляд)
- Универсальная загрузка данных из Экселя по основным параметрам для УТ 11.5
- Загрузка данных из экселя в Распоряжение на перечисление на карты МИР
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
1. Прочитай эксель-файл в табличный документ.
2. Табличный документ преобразуй в таблицу значений следующим кодом:
2. Табличный документ преобразуй в таблицу значений следующим кодом:
Функция ПреобразоватьТабличныйДокументВТаблицуЗначений(ИмяТД)
ТабДокумент = ЭтаФорма[ИмяТД];
ПоследняяСтрока = ТабДокумент.ВысотаТаблицы;
ПоследняяКолонка = ТабДокумент.ШиринаТаблицы;
Если ИмяТД = "СписокСотрудников" Тогда
ОбластьЯчеек = ТабДокумент.Область(8, 1, ПоследняяСтрока, ПоследняяКолонка);
Иначе
ОбластьЯчеек = ТабДокумент.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка);
КонецЕсли;
// Создаем описание источника данных на основании области ячеек табличного документа.
ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);
// Создаем объект для интеллектуального построения отчетов,
// указываем источник данных и выполняем построение отчета.
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
ПостроительОтчета.Выполнить();
// Результат выгружаем в таблицу значений.
ТабЗначений = ПостроительОтчета.Результат.Выгрузить();
Возврат ТабЗначений;
КонецФункции
Показать
В процедуре ПереборСтрокТЗ() на каждую строку создается свой документ.
СсылкаДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
СсылкаДокумент.Дата = ТекущаяДата();
Для Каждого Ст из ТЗ Цикл
ТекСтрокаТовары = СсылкаДокумент.Товары.Добавить();
ТекСтрокаТовары.Номенклатура = Ст.Номенклатура;
ТекСтрокаТовары.Количество = Ст.Количество;
ТекСтрокаТовары.Цена = Ст.Цена;
ТекСтрокаТовары.Сумма = Ст.Сумма;
ТекСтрокаТовары.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
ТекСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("ƏD");
ТекСтрокаТовары.Коэффициент = 1;
КонецЦикла;
СсылкаДокумент.Записать();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот