v8: Кодировка OEM в DBF на Linux #605712


#0 by adron
При попытке прочитать файл dbf в кодировке OEM, на Linux сервере 1С 8.2 выдает ошибку "формат файла отличен от .DBF". При попытке прочитать тот же файл в Windows XP 1с отрабатывает правильно. Вопросы: 1) Что посоветуете? 2) Таблица кодировки OEM она где храниться, в операционной системе или в приложении?
#1 by adron
Пытаемся загрузить классификаторы в 1С. Думаю в какую сторону копать. Может в линуксе надо енту самую таблицу ОЕМ как-то прекрутить (как прикручивать не советуйте, прикручивать буду не я)?
#2 by pumbaEO
таблица в теории в приложении, надо смотреть различия бинарные между созданным dbf файлом на linux разделе и XP, все таки ошибка "формат файла отличен от .DBF" намекает, что возможно проблема в самом файле.
#3 by adron
Спасибо, может тогда подскажешь чем сравнивать?
#4 by pumbaEO
vbindiff AptDiff это гуевое в винде, ну или far(универсален)
#5 by Jaffar
я всю жизнь считал, что кодировки придумали, чтоб не зависеть от конкретного разработчика ПО или производителя оборудования. надеюсь, у вас не возникает вопроса, где хранится кодировка ASCII? fc /b <file1.dbf> <file1.dbf> >> file.log
#6 by adron
именно возник вопрос: где хранится кодировка в ОС или в ПО, только ОЕМ?
#7 by Jaffar
наводящий вопрос: а где хранится любая другая кодировка, например - азбука Морзе?
#8 by pumbaEO
в энциклопедии :)
#9 by adron
На сколько я понимаю кодировка храниться в ПО. Поправьте меня если я ошибаюсь.
#10 by adron
файлы сравнили, они идентичны.
#11 by zva
Я правильно понял, что клиентская часть 1С 8.2 у вас на Linux сервере?
#12 by adron
не у нас на сервере серверная честь
#13 by zva
т.е. КЛАДР с клиентской машины на ХР не загружается в серверную базу?
#14 by adron
Да. 1С отваливается на строке "xB = Новый  Base(ФайлАдресногоКлассификатора);" с ошибкой "формат файла отличен от .DBF". Строка выполняется в серверном модуле "АдресныйКлассификатор", соответственно на сервере.
#15 by pumbaEO
ФайлАдресногоКлассификатора - куда указывает?
#16 by adron
Временный каталог на Linux сервере. Файл существует. Путь нужен?
#17 by adron
точнее там полное имя файла во временно каталоге...
#18 by adron
пишу подробно что происходит. Конфигурация: Сервер: Linux+postgre+сервер1С 8.2. Клиент: WinXP + тонкией клиент 8.2. На клиенте запускается обработка по загрузке классификатора. Механизм загрузки типовой. Сначала с сервера 1с качается Zip-архив на локальную машину. Затем архив передаётся с клиената на сервер. На сервере из архива извлекаются dbf файлы, при попытки чтения которых 1С вылетает.
#19 by adron
Есть ещё мысли по этому поводу, товарисчи?!
#20 by Serginio1
Это все потому, что если для текстов в 1С додумались подсовывать указывать кодировку двумя способами Кодировка может быть задана как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки То в ДБФ только КодировкаXBase. И как мучаются люди у которых кодировка файлов дбф отличаются от системных.
#21 by adron
Если мне не изменяет память, то при чтении dbf файла с кодировкой, отличной от понимаемой 1С, ошибок не возникало. Просто текст внутри файла был нечитаем.
#22 by Serginio1
А вообще кодировка внутри файла есть и глупо задавать только системные кодировки. Но суть не про это. Попробуй открыть какойнидь ДБФ файл в доступной директории и заведомо правильный. И пиши в 1С
#23 by adron
Да, попробовали. Взяли один и тот же файл. Написали свой код по открытию и чтению файла. На клиенте под XP файл открывается и читается. На серваке под Linux нет. Он какбэ его открывает, но метод "открыта" возвращает ложь.
#24 by adron
Будем писать в саппорт
#25 by andrewks
емнип, внутри дбф кодировка не указывается, её нужно задавать самим, при чтении
#26 by andrewks
а какой релиз платформы?
#27 by Serginio1
Смотри 29 байт
#28 by andrewks
угу, спасибо. интересно, какого фига тогда 1сина её не определяет
#29 by adron
8.2.15.301
#30 by adron
Не факт что проблема в кодировке. Это было одно из моих  предположений. Оно пока не подтверждается. Проблема в том что 1С не может открыть этот dbf файл!
#31 by pumbaEO
ок, ты проверял, может ли 1С открыть на сервере текстовый файл? Смотрел, какой файл и первые 29 байт в файле который сохранен на сервер?
#32 by ukolabrother
попробуй переименовать сам файл в формат 8.3
#33 by adron
Это условие выполнено. Файл представляет из себя классификатор загруженный с сайта 1С.
#34 by adron
29-й байт в HEX - системе счисления представлен в виде "00" что соответствует кодировке OEM.
#35 by pumbaEO
пойдем дальше, возьми консоль этот dbf и натрави на него dbview
#36 by adron
а смысл?
#37 by pumbaEO
узнать, 1С косячит или проблема все таки в правах, в файле и т.д...
#38 by adron
на Linux серваке у нас админ рулит. Он говорит что файл читал, тока другой утилитой. Некой консольной dbf. Файл открылся. В правах скорее всего проблем быть не может, т.к. 1С-сервак сам создает этот файл, а потом его читает. По логике если есть права на создание, то на чтение быть должны тоже.
#39 by adron
более того. ЭТОТ же dbf файл, который не читался сервером 1С на Linux-е прочитался на клиенте 1С (в файловой версии) в XP. Из этого можно заключить что в файле проблем нет.
#40 by adron
Похоже что проблема в 1С-сервере, в его Linux-овом варианте:(
#41 by andrewks
конечно, можно ещё на 310-м попробовать, хотя в оф.описаниях исправлений на эту тему и не было
#42 by adron
ну да, как вариант
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С