Имя: Пароль:
IT
Админ
Sdbf 4.5 (DBF-редактор с поддержкой SQL)
0 Sdbfnew
 
04.05.14
20:41
Sdbf 4.5

Улучшен SQL-редактор:
1. добавлено цветовое оформление полей в зависимости от типа данных колонки;
2. добавлено комбинацию клавиш Alt+→ для автоподбора ширины полей.

Поддержите проект: http://sdbf.host-ed.me/page.php
1 Sdbfnew
 
04.05.14
20:42
...комбинацию клавиш Alt+(стрелка вправо)...
2 sdv2000
 
04.05.14
21:17
хохлы мегаактивны :)
3 andr_andrey
 
04.05.14
21:38
(0) молодцы, красивенько.
4 Armando
 
04.05.14
22:24
С виду ниче так.
Мне кажется вы опоздали лет на 10 как минимум.
5 sdv2000
 
04.05.14
22:32
автору хочется в чем-то проявить себя, почему бы нет?
6 Sdbfnew
 
04.05.14
22:48
(4)Да, если бы у меня в руках был такой инструмент ещё лет 5 назад, я бы был счастлив. Хотя и сейчас многие люди говорят «спасибо», так как DBF живёт во многих госструктурах и др. организациях. Сейчас, например, DBF широко используется в геоинформационных системах, хотя это отдельная история.
7 Armando
 
04.05.14
23:13
В мою семерошную бытность он бы тоже пригодился. Но тогда лучшим был DBF Navigator
8 vcv
 
05.05.14
06:19
DBF Navigator и сейчас лучший. По крайней мере буквально с месяц назад у меня навигатор открыл полутрагигабайтный DBF с текстовыми полями длинной порядка 900 символов, а SBDF падал при открытии. Реструктуризировать не смог ни кто, кроме FoxPro ;)
9 Ёпрст
 
05.05.14
09:27
(8) не лучший, на больших дбф-ках он просто не откроется.
10 Sdbfnew
 
05.05.14
11:56
Поправьте меня, если я не прав, но насколько я знаю для DBase любых версий и Visual FoxPro максимальная длина строки (тип C) 254 символа. Все остальные случаи – это отклонение от стандарта или испорченные заголовки файлов.
11 Sdbfnew
 
05.05.14
12:02
(8) Можно мне посомтреть на этот файл с несколькими сроками данных? Хочу потестировать.
12 vcv
 
05.05.14
20:33
(10) Файл представляет собой табличную часть документа, полученную штатными средствами 1С. Так что в рамках этого форума, это стандартный DBF.
(11) Дать уже не могу. Потому что файл уже реструктуризирован, длины полей укорочены. Теперь он открывается sDBF. Правда это занимает несколько минут.
Сейчас размер файла 640 мегабайт, порядка 260000 записей. В нём одно строковое поле длиной 999 символов, парочка 200-300 символов, остальное более вменяемых размеров.
До реструктуризации было три или четыре поля длиной 999 символов и размер порядка 1.6 гигабайта.
13 Torquader
 
05.05.14
21:15
Не забываем, что 1С позволяет хранить в dbf-файле строки длинной до 999 символов, и прекрасно с ними работает.
С помощью такого "справочника" можно создать некоторый аналог blob-полей, который не разделяет с другими объектами своё хранилище.
14 Sdbfnew
 
05.05.14
21:17
(12) Реструктуризация прошла без потерь данных? Отсеялись только пробелы? Интересно, как FoxPro мог оставить такие длинные поля после реструктуризации, если это конечно не МЕМО-поля?
15 Torquader
 
05.05.14
21:18
(12) 1C использует для байта длины для char (то есть длина и количество десятичных разрядов).
16 Torquader
 
05.05.14
21:22
00000000A0: 56 45 52 53 54 41 4D 50 ? 00 00 00 43 00 00 00 00  VERSTAMP   C
00000000B0: 06 00 00 00 00 00 00 00 ? 00 00 00 00 00 00 00 00  ?
00000000C0: 53 50 33 39 00 00 00 00 ? 00 00 00 43 00 00 00 00  SP39       C
00000000D0: E7 03 00 00 00 00 00 00 ? 00 00 00 00 00 00 00 00  c?
00000000E0: 53 50 34 30 00 00 00 00 ? 00 00 00 43 00 00 00 00  SP40       C
00000000F0: E7 03 00 00 00 00 00 00 ? 00 00 00 00 00 00 00 00  c?
0000000100: 0D 1A                   ?                          ??

А вот DD:
#==TABLE no 12     : Справочник Длинный
# Name    |Descr                         |Type[A/S/U]|DBTableName|ReUsable  
T=SC37    |Справочник Длинный            |A          |SC37       |1        
#-----Fields-------
# Name      |Descr               |Type|Length|Precision
F=ID        |ID object           |C   |9     |0        
F=CODE      |object code         |C   |5     |0        
F=DESCR     |object description  |C   |25    |0        
F=ISMARK    |Flag Object is Marke|C   |1     |0        
F=VERSTAMP  |Version stamp       |C   |6     |0        
F=SP39      |(P)ДлиннаяСтрока    |C   |999   |0        
F=SP40      |(P)ЕщёСтрока        |C   |999   |0        
#----Indexes------
# Name     |Descr         |Unique|Indexed fields                                              |DBName    
I=IDD      |of ID         |0     |ID                                                          |IDD        
I=CODE     |of CODE       |0     |CODE(UPPER)                                                 |CODE      
I=DESCR    |of DESCR      |0     |DESCR(UPPER)                                                |DESCR      


Всё штатно и красиво.
17 Torquader
 
05.05.14
21:24
Если почитать формат файла:
http://articles.org.ru/docum/dbfall.php

То будет понятно, что 1С просто плевала на то, что там написано.
18 Sdbfnew
 
05.05.14
21:31
(17) И я о том же.
19 Sdbfnew
 
05.05.14
21:34
Интересно было бы посмотреть на полное описания формата DBF от 1C.
20 Torquader
 
05.05.14
21:35
(18) Не забываем, что и индексы там немного по-другому работают - так что для 1С нужен свой редактор.
Хотя, если посмотреть описание драйвера CodeBase, то там, наверное, про всё это сказано.
P.S. отсутствие memo-полей в семёрке - это самый большой и жирный минус.
21 Torquader
 
05.05.14
21:38
http://www.autopark.ru/ASBProgrammerGuide/DBFSTRUC.HTM

Вот здесь сказано:

33     0x21     1     Полная длина поля
34     0x22     1     Число десятичных разрядов; для типа C - второй байт длины поля

То есть, это не изобретение 1С.
22 Torquader
 
05.05.14
21:39
(21)+ А, собственно, знакомая картинка - я по ней парсер dbf-файлов для их восстановления писал.
23 Torquader
 
05.05.14
21:42
Кстати, заголовок 1С-файла говорит, что это стандартный dbf-файл.
24 Sdbfnew
 
05.05.14
21:42
СПАСИБО!
25 Torquader
 
05.05.14
21:43
А вот и описание cdx-файла:
http://articles.org.ru/docum/dbfbase.php
26 kiruha
 
05.05.14
21:43
(19)
Что именно интересно и что непонятно ?
Там мелкие отличия в сортировке и заголовке файла
Но имхо поезд ушел лет 10 назад
27 Torquader
 
05.05.14
21:46
(26) Не, ну кто-то на этом паровозе ещё ездит, и при должной доработке он "файловый экспресс" от 1С8 догонит, и "не сойдёт с рельсов" при первом выключении компьютера.
28 kiruha
 
05.05.14
21:56
(27)
И что ?
FoxPro вообще рвал всех и ничего не требовал. Но умер, а стоимость разработки там были млрд не рублей. Формат практически тот же
29 Sdbfnew
 
05.05.14
21:58
(26) Интересно, почему (8)"... навигатор открыл полутрагигабайтный DBF с текстовыми полями длинной порядка 900 символов, а SBDF падал при открытии...", а после реструктуризации когда стало (12)"...в нём одно строковое поле длиной 999 символов, парочка 200-300 символов, остальное более вменяемых размеров..." файл без проблем открылся?
30 kiruha
 
05.05.14
22:13
(29)
Разные технологии открытия
FoxPro поддерживает оба варианта ("SQL" и послед чтение) .
В одном из вариантов он только читает заголовки и двигается по "листьям" CDX, не засасывая файл целиком

При отображении в таблице считывает только следующие данные
По сути мог бы 10 ГБ открывать
31 Sdbfnew
 
05.05.14
22:27
(29) То есть Sdbf-у просто не хватило оперативки при попытке полностью загрузить файл?
32 Torquader
 
05.05.14
22:32
(31) Видимо - да.
dbf-файл предполагался для чтения по записям, из-за чего размер записи должен был быть меньше 64К (если кто-то помнит, с чем это связано).
33 vcv
 
06.05.14
09:37
(14) Реструктуризацию для надёжности делал не фокспро, а "штатными" средствами 1С. :) Распределенка, центральная SQL. Грохнул табличную часть на ПБ DBF и устроил полную миграцию этого вида документов.
(29) После реструктуризации файл стал открываться sDBF, только медленно и печально. А на старом файле, размером 1.6 гига, на сколько помнится, при открытии вылезали ошибка нехватки памяти.
34 Sdbfnew
 
06.05.14
10:17
При наличии 2-х гиг оперативки файл в 1.6 гиг легко бы открылся. Так уж устроен Sdbf.
35 vcv
 
06.05.14
10:20
(34) Факт есть факт. Не открывался. Физической памяти 4 гига.
36 Sdbfnew
 
06.05.14
10:22
(35) Обязательно проверю. Спасибо.
37 Sdbfnew
 
06.05.14
10:34
Может, кто ещё пробовал открывать файлы размером больше 1.5 Гб с помощью Sdbf. Поделитесь результатами.
38 vcv
 
06.05.14
10:49
Дело, наверное, было не в размере DBFника, а в размере записи или индексе. Нашел у себя DBFник размером 1.5 гига. Открывался долго, потому что копировал во временный файл. Но открылся. Структура этого DBFника проще и меньше. В табличной части документа один реквизит, строка(300).
39 Sdbfnew
 
06.05.14
11:08
Изначально временный (.tmp) файл было решено создавать на случай «Ой … не то стёр и копии нет». Так как изменения не кэшируются, а сразу применяются.  Это большой минус, но пока так.

Нужно будет сделать  гибкую настройку программы конкретно под каждого пользователя, но это зависит от приоритетов и поддержки проекта. Пока всё на добровольных началах.
40 vcv
 
06.05.14
13:59
Может быть создавать временный файл не при каждом открытии, а при попытке редактирования? А то тормозит, тормозит при открытии, а редактировать и не надо, только посмотреть. А то бывают еще ситуации, когда с какого-нибудь примапленного инет-хранилища файл посмотреть надо.
41 Torquader
 
07.05.14
16:43
(39) У меня в редакторе диска во временные файлы писались только изменённые сектора (то есть то, что было изменено).
Потом, когда делался "COMMIT" это всё писалось в основной файл, а так - он рассматривался ReadOnly и не поднимался весь в память.
42 Ёпрст
 
07.05.14
16:58
(37) 1.8 нормально открывает, в отличие от дбфнафигатрока, который не алё при этом..
43 vcv
 
07.05.14
21:48
Вот этот DBF http://1drv.ms/1kMdMyB , штатно сделанный в 1С, открывается нормально. За 3.5 минуты на моём пожилом ноуте. А вот реструктуризацию сделать нельзя, не принимает строки такой длины.
44 Sdbfnew
 
07.05.14
22:30
(43) Не удалось скачать файл по ссылке. Пишет: "OneDrive не удалось проверить dt12.dbf.7z на вирусы." и отказывается скачивать.
45 Sdbfnew
 
07.05.14
22:32
(43) На счёт реструктуризации, то в текущей версии действительно стоит ограничение на длину строки в 254 символа - исправлю в след. версии.
46 Sdbfnew
 
07.05.14
22:36
у меня другой вопрос: пишет ли 1С в 1-3 байты заголовка DBF дату последнего обновления данных, или там остаётся неизменной дата создания файла (последней модификации структуры)?

нет возможности проверить
47 Sdbfnew
 
07.05.14
22:40
и ещё, отсчет года начинается с 1900 года (см. 1 байт заголовка) или с 2000?
48 MMF
 
07.05.14
23:21
1) Почему при открытии диалога sql запроса таблица закрывается? Что, нужно держать в голове структуру таблицы или сначала запрос писать на бумажке?
2) "Однооконность" резко сокращает применимость утилиты. Как минимум нужно иметь возможность держать открытыми несколько таблиц
Ну а в целом "не взлетит", опоздал на 10 лет.
49 vcv
 
08.05.14
05:58
(44)Вот зараза! Держи пожатый зипом http://1drv.ms/1mEok45 Его отдаёт.
(46) Попробовал добавить данных. Изменились только 4-6 байты файла.
(47)
0000000000: 03 72 05 07 D8 AC 07 00 ? 21 01 E3 0E 00 00 00 00
0000000010: 00 00 00 00 00 00 00 00 ? 00 00 00 00 01 00 00 00
0000000020: 49 44 44 4F 43 00 00 00 ? 00 00 00 43 00 00 00 00
0000000030: 09 00 00 00 00 00 00 00 ? 00 00 00 00 00 00 00 00
(48) Зайти на инфостарт и поищи там "DBF" в разработках. Дофига. Свеженького. Буквально вчера пробежала какая-то выгрузка в Сбербанк. Так что, никакого "опоздания" пока не наблюдается.
50 Sdbfnew
 
08.05.14
10:22
(49) СПАСИБО!
Интересно, что такой подход к записи даты модификации (структуры, а не данных!) предполагает последнюю возможную дату - 1900+256=2156 год, так как 0x72=114 (см. первый байт).
Опять же, в описании DBF формата сказано, что в первый байт дожлжен быть записан год в формате YY, то есть не 0x72=114, а 0x20=14. Вот и думай, как правильно год записывать.
51 Sdbfnew
 
08.05.14
21:21
(50) Опечатка 0x0E=14.
Закон Брукера: Даже маленькая практика стоит большой теории.