Есть обработка с загрузкой из экселя

1. G_106344807921151868538 03.04.25 15:03 Сейчас в теме
Есть обработка с загрузкой из экселя
Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
    
    ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбора.Заголовок = "Выберите файл";
    
    Если ДиалогВыбора.Выбрать() Тогда
        ИмяФайла = ДиалогВыбора.ПолноеИмяФайла;
    КонецЕсли;
    
КонецПроцедуры

Процедура ПрочитатьНажатие(Элемент)
    
    //очищаем таблицу и удаляем колонки 
    Таблица.Очистить();
    Таблица.Колонки.Очистить();
    ЭлементыФормы.Таблица.Колонки.Очистить();
    
    
    //подключаемся к эксел
    Попытка
        Excel = Новый COMОбъект("Excel.Application");
        Excel.WorkBooks.Open(ИмяФайла);
        Состояние("Обработка файла Microsoft Excel...");
    Исключение
        Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
        
    Попытка 
        //Открываем необходимый лист
        Excel.Sheets(1).Select();  // лист 1, по умолчанию  
    Исключение
        //Закрываем Excel
        Excel.ActiveWorkbook.Close();     
        Excel = 0;
        Сообщить("Файл "+Строка(ИмяФайла)+" не соответствует необходимому формату! Первый лист не найден!");
        ОтменитьТранзакцию();
        Возврат;
    КонецПопытки;    
    

    //Получим количество строк и колонок.
    //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
    Версия = Лев(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;    
    Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл
        ИмяКолонки = Excel.Cells(1, Сч).Text;
        ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",""); // убираем из имени колонок пробелы
        Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);         
        НоваяКолонка = ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки);
        НоваяКолонка.Данные = ИмяБезПробелов;
        Сч = Сч + 1;
    КонецЦикла;
    
    
    Для НС = 2 по ФайлСтрок Цикл  // НС указываем с какой строки начинать обработку        
        
        Состояние("Файл "+Строка(ИмяФайла)+": Обрабатывается первый лист "+Строка(Формат(?(ФайлСтрок=0,0,((100*НС)/ФайлСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");
        
        ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
        
        НоваяСтрока = Таблица.Добавить();        
            
        Для НомерКолонки = 1 по Таблица.Колонки.Количество() Цикл 
            //заполняем строку значениями
            ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text;
            ИмяКолонки = Таблица.Колонки[НомерКолонки-1].Имя;             
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;            
        КонецЦикла;
        
    КонецЦикла;   
    
    

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

Показать


Как можно реализовать код для 1С, который выполняет следующее:
Ищет номенклатурную позицию в справочнике "Номенклатура" по точному совпадению полного наименования с данными, указанными в файле Excel.
Если совпадение найдено, присваивает значение кода из файла Excel в соответствующий реквизит (кодНоменклатуры) .
В случае, если поиск выдает несколько результатов, обработка должна оповещать об ошибке и прекратить присвоение кода номенклатуры.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 81 03.04.25 15:20 Сейчас в теме
(1) наймите программиста - будет быстрее и дешевле
starik-2005; +1 Ответить
3. starik-2005 3170 03.04.25 15:29 Сейчас в теме
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);

ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла);

ЗЫ: В типовой уже есть загрузка из табличного документа.
ЗЫЗЫ: А еще есть инфострарт тулкит - ваще огонь )))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот