Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/360: Рейтинг темы: голосов - 360, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 142

Загрузка Dbf-файлов с длиной имени больше 8 символов (1С 7.7)

15.02.2010, 09:43. Показов 71211. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В программе необходимо загружать DBF-файлы с длиной имени больше 8 символов. Если длина <=8 символам - все нормально, если же больше - программа вылетает с ошибками:

ДБФ.Первая(); : Перед выполнением операции нужно открыть базу!
Пока ДБФ.ВКонце() = 0 Цикл : Перед выполнением операции нужно открыть базу!

При этом я принудительно обрезаю имя файла до первых 8 символов - но все равно не помогает! Никак не могу понять свою ошибку(


Код ( (Unknown Language)):
Процедура ВыборФайла()

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

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

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


Процедура Сформировать()

ИмФайл=СокрЛП(Лев(СокрЛ(ФайлЗагрузки),8) )+".DBF";
Док1 = СоздатьОбъект("Документ.РеестрСчетовВход ящий");
ДБФ = СоздатьОбъект("XBase");
ДБФ.ОткрытьФайл(ИмФайл,,1);
Док1.Новый();
ДБФ.Первая(); // первая ошибка
Пока ДБФ.ВКонце() = 0 Цикл //вторая ошибка
Док1.НоваяСтрока();
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2010, 09:43
Ответы с готовыми решениями:

Доступ к полям длиной более 255 символов баз DBF
При чтении строкового поля базы DBF длиной более 255 символов получаем неверные данные. Все последующие поля тоже неверны. Как осуществить...

Загрузка Dbf файлов
Такая проблема, при загрузке пачки документов, попался &quot;битый&quot;, и на нём загрузка вылетает вот с такой ошибкой, ну и обработка падает. ...

Ошибка при имени dbf файла более 8 символов ( MSDASQL.1 )
Всем доброго времени суток :) Цель функции: Найти *.dbf файлы в директории, присоединиться к ним в цикле и выполнить SQL запрос. ...

24
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 142
18.03.2010, 13:36
Студворк — интернет-сервис помощи студентам
vbs, спасибо за подсказку! Буду теперь изучать реализацию Excel.Application
0
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 142
23.03.2010, 07:13
Итак, мне все-таки удалось решить проблему загрузки файлов DBF с длинными именами, причем без использования Excel.Application!

[codebox]
Перем Выб,long, НовИмяФайла, ДлинноеИмяФайла;
Процедура ВыборФайла()
ФайлЗагрузки = "";
КаталогЗагрузки="";
long=0;
Если ФС.ВыбратьФайл(0, ФайлЗагрузки, КаталогЗагрузки, "Выберите файл",
"Файлы баз данных (*.dbf)|*.dbf", , ) = 1 Тогда
Если СтрДлина(ФайлЗагрузки) > 12 тогда
long=1;
ДлиноеИмяФайла=ФайлЗагрузки;
ЗначИмени = Лев(Строка(ФайлЗагрузки),8); // получаем первые 8 символов из имени
Расш = Прав(Строка(ФайлЗагрузки),3);
НовИмяФайла = ЗначИмени + "." + Расш;
Фс.ПереименоватьФайл(ФайлЗагрузки,НовИмя Файла,1);
Выб = НовИмяФайла;
Иначе
Выб = ФайлЗагрузки;
КонецЕсли;
КонецЕсли;
КонецПроцедуры


Процедура Сформировать()


ИмФайл=СокрЛП(Выб);
Док1 = СоздатьОбъект("Документ.РеестрСчетовВход ящийЛПУ");
ДБФ = СоздатьОбъект("XBase");
ДБФ.ОткрытьФайл(КаталогЗагрузки + "\" + Выб);
Док1.Новый();
ДБФ.Первая();
Пока ДБФ.ВКонце() = 0 Цикл
Док1.НоваяСтрока();

и т.д. (обрабатываем документ)
......
ДБФ.ЗакрытьФайл();
Если long=1 Тогда
Фс.ПереименоватьФайл(НовИмяФайла,ФайлЗаг рузки,1);
КонецЕсли;
КонецПроцедуры
[/codebox]

Так что моя гипотеза была не такой уж безумной :(

P.S. С помощью Excel.Application также удается делать загрузку, вот только я не понял как узнать количество строк в файле (чтобы правильно организовать цикл)? Хотелось бы сделать вариант и с использованием Экселя
0
VyrusVtod
23.03.2010, 08:36
Вопросик :( ... а Вы уверены, что 8 первых символов файла уникальны? ))
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 142
23.03.2010, 11:11
Цитата Сообщение от VirusVlad
Вопросик :( ... а Вы уверены, что 8 первых символов файла уникальны? ))
В имени загружаемого файла? Да, уникальны, ибо формируются по единому принципу из разных регионов
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.03.2010, 12:43
Цитата Сообщение от BBDragon
P.S. С помощью Excel.Application также удается делать загрузку, вот только я не понял как узнать количество строк в файле (чтобы правильно организовать цикл)? Хотелось бы сделать вариант и с использованием Экселя
Наверняка и это можно узнать, я не заморачиваюсь, просто читаю в цикле, пока НЕ ПустоеЗначение в колонке, которая обязательно должна
быть заполнена
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.03.2010, 12:43

Преобразовать строки длиной больше 10 символов
С клавиатуры вводим число n типа int. Затем вводим n строк. Если в строке больше 10 символов, то преобразовать ее как на примере (первый и...

Строки: вывести слова длиной больше 5 символов
Есть строка, например str = &quot; 'More', 'Szlipkno', 'Самолет', 'Санки', 'Glecho' &quot; и нужно сделать Вывести слова которое имеет более 5...

Запись в базу текста длиной больше 255 символов
Всем привет. Пищу программу которая пишет и читает текстовые данные в аксес базу данных. Но тут столкнулся с одной проблемой, там...

Вывести на экран строки длиной больше 5 и меньше 20 символов из контейнера multiset<string>
Здравствуйте, у меня такой вопрос, например существует контейнер multiset&lt;string&gt;, как можно вывести на экран строки длиной больше 5 и...

Строка: убрать пробелы и найти все палиндромы (длиной больше пяти символов) во всем тексте
В строку вводится текст(возможно с пробелами). Нужно чтобы программа, убрала пробелы и нашла все палиндромы(больше пяти символов), во всем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru