| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Реализация Excel.Application в 1С 7.7 |
| Автор: SubZero 19.3.2010, 15:36 | ||||
| На диске в различных каталогах находятся файлы dbf с длиной имени порядка 12-14 символов. Если длина имени не превышает 8 символов- файлы открываются нормально, если же больше - программа вылетает с ошибкой "Перед выполнением операции нужно открыть базу!" на строчках ДБФ.Первая(); и Пока ДБФ.ВКонце() = 0 Цикл Хотелось бы программно переименовывать длинные имена до 8 символов, обрабатывать данные, а затем возвращать исходное имя файлам. В противном случае остается только вручную переименовывать файлы, что весьма неудобно, ибо их несколько сотен и каждый день появляются новые. Первоначальная версия процедур:
Решил сделать возможной загрузку файлов и с длинными именами. Алгоритм следующий: 1) long = 0; 2) пытаемся открыть файл, если длина больше 8 символов Тогда а) усекаем имя до 8 символов; б) переименовываем файл на диске в короткое имя; в) присваиваем переменной long значение 1; Иначе ничего не делаем Далее создаем объект типа XBase, создаем новый документ, открываем наш файл DBF и начинаем заполнять документ значениями полей файла. Если у нас был длинный файл (long=1), то после окончания всех действий вновь переименовываем файл (возвращаем ему исходное имя).
Гуру подсказали, что необходимо использовать Excel.Application, так что думаю засесть за его изучение. Никто не сталкивался с подобным? |
| Автор: SubZero 24.3.2010, 08:45 | ||
| Zero, спасибо большое! Мне все-таки удалось решить проблему загрузки файлов DBF с длинными именами, причем без использования Excel.Application!
Так что моя гипотеза была не такой уж безумной P.S. С помощью Excel.Application также удается делать загрузку, вот только я не понял как узнать количество строк в файле (чтобы правильно организовать цикл)? Хотелось бы сделать вариант и с использованием Экселя |
| Автор: SaschaL 24.3.2010, 11:45 |
| Я же и говорил что проблемы с загрузкой из *.dbf нет, надо просто гибко подойти к этому |
| Автор: korund2010 26.3.2010, 12:34 |
| По поводу определения числа строк //Определяю размеры входного файла Функция ПрочитатьСписокПолейВходногоФайла() Если НачальнаяСтрока<=0 Тогда // не задано число строк НачальнаяСтрока = 1; КонецЕсли; Если КонечнаяСтрока<=0 Тогда // не задано число строк КонечнаяСтрока = 1; Для НомСтр=1 по ЧислоСтрокExcelФайла Цикл Если ПустаяСтрока(ВходExcel.Sheets(SheetOfBook).Cells(КонечнаяСтрока,1).Value)=0 Тогда КонечнаяСтрока = КонечнаяСтрока + 1; и т.д где ЧислоСтрокExcelФайла - предварительно задается числом заведомо большим. чем ожидается ВходExcel = СоздатьОбъект("Excel.Application"); SheetOfBook - номер страницы книги Excel |
| Автор: Zero 27.3.2010, 18:43 | ||||
|
| Автор: SubZero 29.3.2010, 07:50 |
| SaschaL, спасибо огромное за решение моей проблемы стандартными средствами! korund2010, Zero, огромное спасибо за помощь в освоении Excel.Application |