Имя: Пароль:
IT
Админ
Помогите определить формат файла (dbf) и как его прочесть.
,
0 arsik
 
гуру
15.03.16
16:06
Собственно сбер эквайринг присылает. В рар архиве. В архиве файл с расширением xls.
Но на самом деле, покопался я, это dbf. Но какой то нестандартный.
По первому биту вроде db3, но названия полей - кириллица.

http://fastpic.ru/view/73/2016/0315/b304c9b944402bc17725e8426cdc3f45.jpg.html

Сам файл кинуть не могу, в нем конфиденциальная информация.

Чем его читать?
1 Rie
 
15.03.16
16:11
(0) Возможно, я ошибаюсь. Но вроде как xBase понимает кириллицу.
2 aka AMIGO
 
15.03.16
16:12
FoxBase тоже понимает
3 aka AMIGO
 
15.03.16
16:13
Если есть Excel - можно открыть в нём
4 aka AMIGO
 
15.03.16
16:16
LibreOffice Calc предлагает на выбор страницы.
Выбрал 1251 - норма, по-русски.
5 Ёпрст
 
15.03.16
16:18
да любым oledb провайдером. Напиши запрос по ado к нему и привет
6 vde69
 
15.03.16
16:19
пропатч реестр и 1с будет нормально его читать

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase]
"DataCodePage"="ANSI"
"BDE"=dword:00000002

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
7 arsik
 
гуру
15.03.16
16:21
Открывать файл открывает, но имена полей не читабельны.
Пробовал
1) 1С с разными кодировками
2) BaseViev
8 Garykom
 
гуру
15.03.16
16:22
(7) попробуй LibreOffice
9 arsik
 
гуру
15.03.16
16:26
Либре тоже криво. Не может нормально прочитать имена полей. С кодировкой норм, но левое дополнительно туда что то вставляет
10 arsik
 
гуру
15.03.16
16:27
11 arsik
 
гуру
15.03.16
16:29
Извиняюсь. Убегаю.
12 Garykom
 
гуру
15.03.16
16:29
(10) передайте му*акам из сбера что они тупые
13 DmiVo
 
15.03.16
16:46
(0) Sdbf 4.3 умеет изменять кодовую страницу заголовка.
Формат xBaseIII.
14 пипец
 
15.03.16
17:11
обычно связываемся с тех поддержкой непосредственно того отделения, которое прислало и просим поменять формат
ЗЫ были моменты - пришлось на пальцах объяснять - в каком формате нужно , для каждого отделения отдельно
15 Карупян
 
15.03.16
17:13
помнится раньше была программка winDBFview - мастхэв для любого семерочника
16 Garykom
 
гуру
15.03.16
17:17
(15) по прежнему юзаю DBF Navigator 2.01
17 6kubikov
 
15.03.16
21:53
(0) Excel нормально открывает
18 Aleksey
 
15.03.16
21:58
Тоже нормально открыл и ексель и плагин к тотал командеру
19 arsik
 
гуру
16.03.16
11:37
(17) (18) Для этого эксель нужен на сервере.
20 Aleksey
 
16.03.16
11:38
(19) А еще и компьютер нужен

Вопрос был в чём? Как прочитать файл. Ответ - екселем
21 ЧеловекДуши
 
16.03.16
16:08
(19) И какая религия мешает установить на сервер ексель? :)
22 Карупян
 
16.03.16
16:09
(21) ктож даст на сервер что-то ставить
23 ЧеловекДуши
 
16.03.16
16:10
(22) Гл. Бух с Ген. Директором :)
24 Aleksey
 
16.03.16
16:23
(22) Т.е. ексель ставить нельзя а всякий левый софт скаченный на файлопомойки для просмотра дбф - это пожалуйста?
25 arsik
 
гуру
16.03.16
19:58
(24) Кто вам сказал, что я это все на сервере делаю?
Даже непонятно что с таблицей. И где у нее не та кодировка. Да блин почему он не в той кодировке то открывает?
26 Garykom
 
гуру
16.03.16
21:32
(25) с таблицей все замечательно, и кодировка все замечательно
но кто ее выгружал слегка того и не в курсе http://www.sql.ru/forum/538655/russkie-nazvaniya-poley-v-dbf-s-dos-kodirovkoy-tdbf-halcyon-i-apollo-ne-spravlyautsya

ЗЫ в формате DBF никогда не были оговорены не ASCII = только латиница, заглавные
http://softclipper.net/bazy-dbf/format-fajla-dbf.html
27 Garykom
 
гуру
16.03.16
21:36
(26)+ заголовки полей в DBF "по общепринятому стандарту" только латиница

потому что разработчики большинства программ/компонентов для работы с dbf писали на компах на которых в байте 7 бит )) нет других кодировок кроме https://ru.wikipedia.org/wiki/ASCII

а так как эти исходные/изначальные алгоритмы используются без изменения то вот и получаются глюки

ЗЫ вы еще имя MEMO файла длиннее 8 символов латиницы сделайте...
28 Garykom
 
гуру
16.03.16
21:40
(10) в следующий раз будешь выкладывать файл с "удаленной" конфиденциальной информацией, лучше сначала изучить как происходит удаление в DBF файлах, что такое "флаг пометки удаления" и "сжатие таблицы"
29 arsik
 
гуру
17.03.16
07:28
(28)  Да я убегал уже. По быстрому сделал, без головы. На следующий день увидел. :) Удалил его.
30 arsik
 
гуру
17.03.16
07:31
(26) Спасибо. Буду долбить сбер, для приведения к стандарту. Не знал, как аргументировать.
31 NikVars
 
17.03.16
10:42
(30) Ага! Застрой Сбер! Про ипотеку тоже не забудь!!!
Аргумент: Ипотека должна быть доступной, как сказал Путин.
"В дальнейшем - стремиться к тому, чтобы ставки по ипотеке составляли 5-6% годовых", - сказал Путин еще в 2011 году.
http://realty.newsru.com/article/20Apr2011/putin
32 6kubikov
 
17.03.16
10:54
(31) Не забудь еще Ельцина вспомнить и всех, кто до него был. Тоже обещали светлое будущее.
33 arsik
 
гуру
17.03.16
12:17
Попробовал через ADODB. Нормально поля видит, но числовые дробные значения "портятся" :)

Ничего понять не могу.

Значение 1645,97 через адодб видно как 1645,96999999999

Код:

СтрокаСоединения = "Provider=Microsoft.Jet.OLEDB.4.0;
                    |Data Source=D:\bd;
                    |Extended Properties=""DBASE III;"";";

Попытка
    АДОДБ = Новый COMОбъект("ADODB.Connection");
    АДОДБ.Open(СтрокаСоединения);
Исключение
    Сообщить(НСтр("ru = '"+ОписаниеОшибки()+"'"), СтатусСообщения.Внимание);
    Возврат;
КонецПопытки;


НБ= АДОДБ.Execute("Select * from [primer]");
Пока НБ.EOF=0 Цикл
    СУММА=НБ.Fields("СУММА_РАСЧ").value;
    Сообщить("СУММА_РАСЧ "+Формат(СУММА,"ЧГ=0"));
    НБ.MoveNext();
КонецЦикла;
НБ=Неопределено;
АДОДБ.Close();    
АДОДБ = Неопределено;
34 Mikeware
 
17.03.16
12:20
Блин, давно б читал посимвольно, и сам разбирал - быстрее бы вышло.
один хрен, тупо последовательно читаешь...
35 arsik
 
гуру
17.03.16
12:41
(34) Да ну зачем так глубоко копать.
VFPOLEDB -  справился. :) Нормально дробь считывает.
36 Garykom
 
гуру
17.03.16
12:49
Ну вот нафига с разными АДО выделываться? Штатно из 1С прочитать через xBase затем поля но номерам сопоставить с испорченными (коды символов юзать) названиями
Т.е. русское "СУММА_РАСЧ" переводишь в то что выдает xBase в 1С по имени поля и сопоставляешь.
Далее данные из dfb в ТЗ с нужными именами полей и штатно крутишь
37 arsik
 
гуру
17.03.16
13:15
(36) И ты прав. Действительно прокатило через ПолучитьЗначениеПоля(НомерПоля). В методе можно номер поля использовать.
Просто изначально когда я смотрел в отладчике как xBase работает, там поля были в порядке алфавитном, а не как в файле. Подумал, что сопоставить не смогу.
38 Garykom
 
гуру
17.03.16
13:24
(37) но проверку на порядок и имена полей вставь, а то эти "в сберах" могут догадаться переставить поля ))