Имя: Пароль:
1C
 
Структура таблицы Config
0 Hadgehogs
 
12.12.07
13:16
Здравствуйте.
Вопрос теоретический, кто знает - ответьте.
Собственна сама таблица как я понял, хранит конфу.
Так вот, у меня в Типовой бухгалтерии таблица содержит множество записей, в поле "FileName" которых содержится GUID.
А в начале списка 3 записи "Metadata", "Version", "Versions".
Можете объяснить, что где храниться?
1 MMF
 
12.12.07
13:28
(0) в "Metadata" - метаданные, в "Version" - версия, в "Versions" - версии
2 Hadgehogs
 
12.12.07
13:36
Ок, запись Metadata, поле DataSize имеет значение 1065306, для Бухии маловато будет.
И еще такой вопрос - в поле BinaryData судя по всему хранится ссылка. Как получить данные по этой ссылке?
И последний - кроме этих 3- х записей есть еще множество других, в "FileName" которых - строковые GUID-ы.
Это описания объектов конфигурации (Справочники.Номенклатура, и.т.д.)?
3 MMF
 
12.12.07
13:42
(2) зип без заголовка. Идея про ссылку - это сурово
4 Hadgehogs
 
12.12.07
14:25
<<зип без заголовка>> - что это?
Прочитал, что в поле Image (BinaryData) можно хранить текст (сырые двоичные данные конфы 1С, в нашем случае).
Ок.
Тогда вопрос - почему длина поля Image - 16 байт?
Сам даю себе ответ: - это ссылка на какую - либо таблицу.

Почему я даю себе такой ответ?
Размер - 16 байт - размер GUID.
В соседнем поле - длина хранимых по ссылке данных (поле DataSize).

Прохожу к Дельфийскому аналогу (связка DataSize+BinaryData)=>> String[255]
Только длина связки адресуется 4 байтами, а не одним, как в Дельфи...
Где я не прав?
5 MMF
 
12.12.07
15:00
(4) не надо давать себе ответы, читай буквари, тобишь BOL. В некотором смысле содержимое Image это действительно ссылка на корневой узел дерева указателей карты страниц хранения этого блоба. Только это тебе нахрен не нужно, а раз уж ты пишешь, что дельфи-программер, то инстинктивно должен был изваять извлекатель этих данных
var
 Blob: TStream;
 fs : TFileStream;
begin
 Query1.Close;
 Query1.SQL.Text:= 'select binarydata from config where filename=''metadata''';
 Query1.Open;
 Blob := Query1.CreateBlobStream(Query1.Fields[0], bmRead);
 try
   Blob.Seek(0, soFromBeginning);
   fs := TFileStream.Create('c:\metadata', fmCreate or fmShareExclusive);
   try
     fs.CopyFrom(Blob, Blob.Size);
   finally
     fs.Free;
   end;
 finally
   Blob.Free;
 end;
По поводу зипа без заголовока - курить Zlib, она общедоступна
6 Hadgehogs
 
12.12.07
17:40
Спасибо
7 Ferz
 
12.12.07
17:51
а вообще есть примеры работы с этой таблицей ну и собственно данными.. тебе для чего?
Основная теорема систематики: Новые системы плодят новые проблемы.