Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Открыть файл для загрузки Excel          
burza Подменю пользователя
сообщение 27.02.23, 19:19
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Подскажите как открыть файл для загрузки из экселя типо подобно или по началу строки? ибо конец строки меняеться постояно.
WB = Excel.Workbooks.Open("D:\1C\Mail\VA-03671_27022023_0811.xlsx");

а хотелось бы чтобы по началу VA-03671_ этого достаточно

Сообщение отредактировал Vofka - 28.02.23, 10:13

denis84 Подменю пользователя
сообщение 27.02.23, 19:50
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

burza @ Сегодня, 19:19 * ,
Создать временный файл копированием, прочитать ,сделать все что надо. Потом удалить временный файл, по аналогии как импорт банковских выписок делают, там файлы тоже имеют разные названия

Moloko Подменю пользователя
сообщение 27.02.23, 20:18
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 20 раз
Рейтинг: 18

Я маю каталог, відкриваю і читаю xls-файли в цьому каталохі незалежно від їх назви, після читання прибираю файли в інший, архівний каталог

denis84 Подменю пользователя
сообщение 28.02.23, 8:42
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

burza @ Вчера, 19:19 * ,
Процедура ВыборФайла()
      КаталогЗагрузки = "";
      ФайлЗагрузки = "";
      Если ФС.ВыбратьФайл(1, ФайлЗагрузки, КаталогЗагрузки, "Выберите файл", "*.xls|*.xls", , ) = 1 Тогда
             ФайлЗагрузки = КаталогЗагрузки + ФайлЗагрузки;
       КонецЕсли;
КонецПроцедуры

Процедура ПриВыбореИмениФайла()
      Поз=Найти(ФайлЗагрузки,".");
      Если (Поз=0) Или (Поз>8) Тогда
            ФайлЗагрузки=СокрП(Лев(СокрЛ(ФайлЗагрузки),10))+". XLS";
      Иначе
            ФайлЗагрузки=СокрЛП(Лев(ФайлЗагрузки,Поз)+"XLS");
       КонецЕсли;
КонецПроцедуры

sava1 Подменю пользователя
сообщение 28.02.23, 9:07
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

burza @ Вчера, 19:19 * ,
НайтиФайлы(<Путь>, <Маска>, <ИскатьВПодкаталогах>)

AnryMc Подменю пользователя
сообщение 28.02.23, 9:14
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 313
Спасибо сказали: 95 раз
Рейтинг: 96.6

Не проще загружать по имени КАТАЛОГА? (перебор файлов в каталоге)...


&НаКлиенте
Процедура ВыбратьФайлExcel(Команда)
    
    Если ОбработатьВсеФайлыИзПапки Тогда
        
        Если НЕ ПроверитьСуществованиеКаталога(Объект.ПутьКФайлу) Тогда
            
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Не вибрано каталог для імпорту!";
            Сообщение.Поле = "Объект.ПутьКФайлу";
            Сообщение.Сообщить();
            
            Возврат;
            
        КонецЕсли;
        
    Иначе
        
        Если НЕ ПроверитьСуществованиеФайла(Объект.ПутьКФайлу) Тогда
            
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Не вибрано файл для імпорту!";
            Сообщение.Поле = "Объект.ПутьКФайлу";
            Сообщение.Сообщить();
            
            Возврат;
            
        КонецЕсли;
        
    КонецЕсли;
    
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Початок вибірки з файлу: "+СокрЛП(ТекущаяДата());
    Сообщение.Сообщить();
    
    Если ОбработатьВсеФайлыИзПапки Тогда
        //много файлов
        
        СписокФайлов = НайтиПутиФайлов(Объект.ПутьКФайлу);
        
        Если СписокФайлов.Количество() = 0 Тогда
            
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Немає файлів для імпорту в каталозі: "+СокрЛП(Объект.ПутьКФайлу);
            Сообщение.Сообщить();
            
            Возврат;    
            
        КонецЕсли;
        
        Для КАЖДОГО текФ ИЗ СписокФайлов Цикл
            
            Попытка
                
                Двоичное = Новый ДвоичныеДанные(текФ);
                
            Исключение
                
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Помилка відкриття файлу: "+СокрЛП(текФ)+ОписаниеОшибки();
                Сообщение.Сообщить();
                
            КонецПопытки;
            
            Адрес = НЕОПРЕДЕЛЕНО;
            
            Адрес = ПоместитьВоВременноеХранилище(Двоичное, ЭтаФорма.УникальныйИдентификатор);
            
            ЗагрузкаНаСервере(Адрес, текФ);
            
        КонецЦикла;
        
    Иначе
        //Один файл
        
        Попытка
            
            Двоичное = Новый ДвоичныеДанные(Объект.ПутьКФайлу);
            
        Исключение
            
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Помилка відкриття файлу! "+ОписаниеОшибки();
            Сообщение.Сообщить();
            
        КонецПопытки;
        
        Адрес = ПоместитьВоВременноеХранилище(Двоичное, ЭтаФорма.УникальныйИдентификатор);
        
        ЗагрузкаНаСервере(Адрес);
        
    КонецЕсли;
    
    //Пост обработка
    
    нТип = НужныйТип();
    
    текН = 1;
    
    Для КАЖДОГО текТип ИЗ нТип Цикл
        
        текНужныйТип = текТип;
        
        ОповеститьОбИзменении(текНужныйТип);
        
    КонецЦикла;
    
КонецПроцедуры

&НаСервере
Процедура ЗагрузкаНаСервере(Адрес, текФайл = "")
        
    темп_Путь = КаталогВременныхФайлов()+ "Import_KP_"+СтрЗаменить(СтрЗаменить(СтрЗаменить(Формат(ТекущаяДата(), "ЧГ=0"), ".", ""), ":", ""), "", "_")+".xlsx";
    
    темп_файл = ПолучитьИзВременногоХранилища(Адрес);
    темп_файл.Записать(темп_Путь);
    
    СписокКолонок = Новый СписокЗначений;
    СписокКолонок.Добавить("ВидЗапроса"); //1
    СписокКолонок.Добавить("РегНомер");     //2
    СписокКолонок.Добавить("ДатаДок");      //3
        
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Початок створення файлу переносу: "+СокрЛП(ТекущаяДата());
    Сообщение.Сообщить();
    
    ТабЗагрузки = НЕОПРЕДЕЛЕНО;
    
    ТабЗагрузки = ЗагрузитьЭксель(темп_Путь,СписокКолонок);
    
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Файл перенесення сформовано: "+СокрЛП(ТекущаяДата());
    Сообщение.Сообщить();
...

&НаСервере
Функция  ЗагрузитьЭксель(Путь, СписокКолонки)
    
    ТЗФайл = Новый ТаблицаЗначений;
    
    Попытка
        
        ex = ПолучитьCOMобъект("","Excel.Application");
        
    Исключение
        
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст ="Excel Application не створено!!";
        Сообщение.Сообщить();
        
        Возврат ТЗФайл;
        
    КонецПопытки;
    
    Попытка
        
        ex.workbooks.open(Путь,1);
        
    Исключение
        
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст ="Файл переміщено або видалено!";
        Сообщение.Сообщить();
        
        Возврат ТЗФайл;
        
    КонецПопытки;
    
    Для каждого Зн Из СписокКолонки Цикл
        
        ТЗФайл.Колонки.Добавить(Зн.Значение);
        
    КонецЦикла;    
    
    RCount = ex.Cells(1,1).SpecialCells(11).Row;
    CCount = ex.Cells(1,1).SpecialCells(11).Column;
    
        Для j = 6 по RCount цикл
        
        Новая = ТЗФайл.Добавить();
        
        Для i=1 По СписокКолонки.Количество() Цикл
            
            ТД = СокрЛП(ex.ActiveSheet.Cells(j,i).Value);
            ТД = СтрЗаменить(ТД,Символ(КодСимвола(Символы.ВК,1))," ");
    
            
            Новая.Установить(i-1, ТД);
            
        КонецЦикла;    
        
    КонецЦикла;    
    
    ex.workbooks.Close();
    ex.quit();
    
    Возврат ТЗФайл;
    
КонецФункции

AnryMc Подменю пользователя
сообщение 28.02.23, 13:33
Сообщение #7

Оратор
Иконка группы
Группа: Местный
Сообщений: 313
Спасибо сказали: 95 раз
Рейтинг: 96.6

Если мне не изменяет память, то вроде должно работать

"VA-03671_*.xls|VA-03671_*.xls"

вроде так делал...

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 21:42
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!