Ошибка при открытии файла DBF

1. Azgerd 13.03.19 13:46 Сейчас в теме
Здравствуйте!
В конфигурации на платформе 8.2 Во внешней обработке (обычная форма) есть код:

БДШ = Новый XBase;
БДШ.ОтображатьУдаленные = Ложь;
БДШ.Кодировка = КодировкаXBase.ANSI ;
FSO = Новый COMObject("Scripting.FileSystemObject");
КаталогБД = ЭлементМассива.Путь;
ПутьБДШ = ЭлементМассива.ПолноеИмя;
БДШ.ОткрытьФайл(fso.GetFile(ПутьБДШ).ShortPath,,0);

Название файла DBF в (ПутьБДШ) имеет больше 8 символов типа 000001000005000.dbf. Вопрос: у одних клиентов этот файл открывается нормально, у других тот же самый файл не открывается, выдаёт ошибку:
ВнешняяОбработка.sh81_prih.Форма.Форма.Форма(770)}: Ошибка при вызове метода контекста (ОткрытьФайл)
БДШ.ОткрытьФайл(fso.GetFile(ПутьБДШ).ShortPath,,0);
по причине:
Длина имени файла превысила 8 символов.
Почему у одних клиентов с одной и той же конфигурацией система съедает длиный файл а у других нет?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. dim_1c 13.03.19 14:08 Сейчас в теме
(1)
Почему у одних клиентов с одной и той же конфигурацией система съедает длиный файл а у других нет?
Съедает ли? В синтакс-помощнике четко сказано:
XBase - основной объект для работы с таблицами баз данных в формате DBF. Предоставляет доступ к коллекции полей и индексов таблицы, позволяет открывать и записывать файлы таблиц, работать с записями таблицы.
При работе с файлами DBF следует иметь в виду, что имя файла должно удовлетворять ограничению 8.3.
5. Denis_CFO 48 13.03.19 14:32 Сейчас в теме
7. Vitaly1C8 13.03.19 17:43 Сейчас в теме
(1)
.ShortPath

Очевидно надо использовать что-то типа .FullPath
Иначе БДШ.ОткрытьФайл( будет искать его в каком то каталоге по-умолчанию )
8. alxarz 31 13.03.19 18:37 Сейчас в теме
(1) а файл этот в одном и том же каталоге на одном и том же диске лежит у разных клиентов? Может в имени папок у одного есть кириллица/пробелы, а у другого нет?
2. Timur.V 78 13.03.19 14:01 Сейчас в теме
Во время написания обработки чтения dbf файла столкнулся с проблемой: длина имени файла больше 8-ми символов. Вот так решил проблему:
Код 1C v 8.х
 Процедура ПрочитатьФайлНажатие(Элемент)
    //Получаем объект Файл
    НашФайл = Новый Файл(ИмяФайла);

    //Получаем первые 8-мь симовол имени нашего исходного файла
    НашеИмяФайла = Лев(НашФайл.ИмяБезРасширения,8)+".dbf";

    //Копируем наш исходный файл во временный каталог с нормальным именем
    НашПолныйПутьФайла = КаталогВременныхФайлов()+НашеИмяФайла;
    КопироватьФайл(ИмяФайла,НашПолныйПутьФайла);

    //Работа с dbf файлом
    ФайлДБФ = Новый XBase;
    ФайлДБФ.Кодировка = КодировкаXBase.OEM;
    ФайлДБФ.ОткрытьФайл(НашПолныйПутьФайла);
    ФайлДБФ.Первая();

    Пока Не ФайлДБФ.ВКонце() Цикл
        НомерЗаказаКонтрагента = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("MSG"));
        СуммаВФайле = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("PAYSUM"));

        //Обрабатываем запись dbf файла

        ФайлДБФ.Следующая();
    КонецЦикла;

    ФайлДБФ.ЗакрытьФайл();
КонецПроцедуры   
Показать

https://helpf.pro/faq/view/912.html
jefjef; request4t; +2 Ответить
4. Azgerd 13.03.19 14:16 Сейчас в теме
(2) Спасибо! Но все же хотелось бы разобраться, почему у одних открывается у других нет...
6. protexprotex 114 13.03.19 16:43 Сейчас в теме
(4) Добрый день. Существуют ограничения на длину имени файла и на длину пути. Абсолютное ограничение длины имени файла вместе включая путь к нему равно 260 символам. Этот предел называют термином MAX_PATH. На самом же деле на практике пределы для имен еще меньше из-за ряда других ограничений. Например, каждая строка на конце должна содержать так называемый нулевой символ, который обозначает конец строки. Несмотря на то, что маркер конца строки не отображается, он учитывается как отдельный символ при подсчете длины, а значит остается 259 символов доступных для имени файла и пути к нему.
Так что надо посмотреть - у кого не открывает - может, длина путь+Имя файла > 260?
9. jefjef 10 24.12.20 13:03 Сейчас в теме
(2)
Спасибо, код годнота, чуток поправил под свои переменные и все работает.

Непонятно почему DBF viewer спокойно работает с любыми именами и каталогами, а XBase выпендривается. Походу платформа кривая и поныне.
Оставьте свое сообщение

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