Вход | Регистрация


1С:Предприятие ::

Метки: 

В чем преимущество XML перед INI?

Я
   romix
 
16.03.04 - 17:01
Предположим, что мне надо перегонять документы из одной базы в другую по модему. Приведу самый простой пример:

[Документ]
ДатаДок='22.03.04'
ВремяДок='15:30:11'
НомерДок='121'
[/Документ]

В XML то же самое так:

<Документ ДатаДок='22.03.04' ВремяДок='15:30:11' НомерДок='121'></Документ>

XML имхо беспорядочнее, т.к. текст между тегами может либо содержать другие теги, либо не содержать их - может это и подходит извратов типа <b>это жирный <i>курсивный</i>шрифт</b>, но не для баз данных и информационных систем.
 
 
   Рупор абсурда
 
1 - 16.03.04 - 17:20
А если надо будет передать два документа?
   IAm
 
2 - 16.03.04 - 17:23
какая разница, какая разница, разница какая, а?
   fellow
 
3 - 16.03.04 - 17:24
CSV ещё лучше:
"22.03.04","15:30:11","121"
"23.03.04","11:22:07","151"
"23.03.04","11:24:35","152"
Ексел берёт влёт.

XML удобен, если одним потоком выгоняются данные, имеющие разную структуру и принадлежащие разным "хозяевам" - один хозяин получил поток, выгнал свои данные, другой получил - свои, и так далее.

Хотя, то же самое можно сделать и в формате INI.

Для нескольких документов легко сделать
[Документ01]
[Документ02]
[Документ03]
и т.д. Естественно, конструкция [/Документ] не нужна.

Сложнее, если документ содержит встроенный объект, который тоже нуждается в подробном выводе. Но тоже решаемо.

Возникает вопрос - зачем самому создавать парсер, если можно найти XML'овский?
   BorisG
 
4 - 16.03.04 - 17:29
Какая, собственно, разница, что лучше...
Разработчик имеет право выбрать инструмент, он его и выбрал. Все.
Для себя можешь использовать хоть собственный... можешь даже своим именем назвать... только будут ли применять... Втолкнуть, чтоб использовали... это уже маркетинг... ;-)
   Все ОК
5 - 16.03.04 - 20:40
0 Для ini разве есть средства для работы с вложенными секциями?
   Все ОК
6 - 16.03.04 - 20:43
+5 а имено  беспорядочность и вложенность тугов в xml дает вохможность описывать иерархические структуры
   Волшебник
 
7 - 16.03.04 - 20:45
Для XML есть готовые парсеры, которые нужно просто брать и использовать.
   romix
 
8 - 17.03.04 - 15:02
(1) Несколько документов имхо надо так:

[Документ]
Вид='РасходнаяНакладная'
ДатаДок='22.03.04'
ВремяДок='15:30:11'
НомерДок='121'
[/Документ]
[Документ]
Вид='РасходнаяНакладная'
ДатаДок='23.03.04'
ВремяДок='16:52:30'
НомерДок='122'
[/Документ]

Аналогично - структуры любой вложенности.

(2) Никакой, только угловые скобочки меняются на квадратные, все элементы идут построчно (их удобнее просматривать) и запрещены элементы "текст между тегами" (с ними то как раз в XML и вся неопределенность).

(3) Для переноса документов csv юзать вроде неудобно..

(4) верно

(5) В чистом ini нет, но ничто не мешает написать, например, так:

[aaa]
[bbb]
[/bbb]
[/aaa]

(7) В 1С не особо хороший парсер XML, т.к. он неэкономно расходует память. Фактически юзают программный интерфейс DOM от Microsoft, а это - дерево в памяти. Со всеми вытекающими (точнее, произрастающими) из этого последствиями.
   fellow
 
9 - 17.03.04 - 17:42
Конструкции [\имя_секция] не нужны, на самом деле. Вложенность любого уровня раскрывается легко в набор подчинённых секций:
[секция]
[секция_внутри]
[секция_внутри_внутри]
и так далее, и тому подобное.

Хороший ли, плохой ли - он есть.
   BorisG
 
10 - 17.03.04 - 17:56
(8) Я уже говорил, и почему ты не Нуралиев... ;-)
Вообще не пойму, к чему это обсуждение?
Обратить внимание разработчиков 1С все равно не сможешь... даже не поведутся...
Использовать нестандартные форматы где-нибудь еще... тоже смысла никакого, даже если они значительно лучше...
Увы, но это жизнь.
 
  Рекламное место пустует
   romix
 
11 - 17.03.04 - 20:15
(9) То есть выгрузку документа делать так?:
[Документ]
...
[Документ_Шапка]
...
[Документ_Строка]
...
Знаете в чем подстава? Мне нужен обязательно завершающий тег [/Документ], иначе тяжело будет определить, а в каком же месте я должен выйти из цикла и Записать() документ. То есть именно для удобства алгоритма - XML в этом хорошо продуман, и именно в этом аспекте мне очень нравится.

(10) Лично мне сейчас требуется информационный обмен между двумя базами. Самописная ВК для XML у меня уже есть (выложена с открытым исходником на Delphi на хиппо http://1c.hippo.ru/cgi-bin/rlist.cgi?r=1c77&t=na&code=2&s=1&searchstr=FastXML&order=1 - че-то много скачиваний... 1536 - это не глюк там у них? :-)
Вот думаю, а не лучше ли сделать что-то проще и красивее по формату, чем XML. Претензии у меня к нему на самом деле две:

1) Возможность беспорядочно смешивать текст и теги.
Например, так: <xxx>Это текст <yyy>1000</yyy></xxx>.
Не знаю, в какие ворота это лезет, но точно не в 1С-ные.

2) Неоптимальное представление спецсимволов. Так, чтобы представить символы & " ' < > я должен (а иногда - не должен) юзать &amp; &quot; &apos; &lt; &gt;. Поэтому самый глубокий цикл разбора символов предполагает довольно много не самых быстрых ассемблерных команд (я пытался оптимизировать на асме - именно в самом глубоком цикле в XML полная подстава). А именно, обязательный посимвольный перенос байт из одного места в другое (чтение+запись в ОЗУ), а также обязательный malloc() на каждой подстроке. Отсюда имхо тормоза.

Я же предложил бы полный запрет спецсимволов: какие-то кавычки надо сделать запретными (возможны компромиссы типа трех видов кавычек). Тогда закрывающую кавычку заменяю на 0 и возвращаю указатель на начало строки, которая уже лежит в буфере. Как результат - никакого копирования байт в самом глубоком цикле, и никаких malloc на каждой подстроке. Тогда обмен будет летать (хотя надо будет практически это проверить и выложить в исходнике).
   Den
12 - 18.03.04 - 13:56
А в DBF кидать в ломы? ;)
   romix
 
13 - 18.03.04 - 14:07
(12) В DBF неудобно представлять структуры типа документов 1С и многоуровневых справочников 1С.
А в XML (или подобном формате) как раз заточен на такого рода вещи.
   Кое-кто@где-то.там
14 - 18.03.04 - 15:06
>В DBF неудобно представлять структуры типа документов 1С и многоуровневых справочников 1С.
Не понятно про справочники. Ведь именно в scXXX.dbf 1C и хранит свои справочники.
К достоинствам хранения в DBF следует также отнести и встроенную возможность работы с индексами.
   skunk
 
15 - 18.03.04 - 17:13
(13)да... я поражен... все больше и больше... а как же... ну да ладно
   romix
 
16 - 18.03.04 - 17:42
(15) в смысле для переноса данных между базами.
   skunk
 
17 - 18.03.04 - 17:44
(16)смотря как организовать... одним файликом... да согласен... а если парой связанных... на много удобнее получается... хотя... на вкус и цвет, товарищей нет ;-)
   romix
 
18 - 18.03.04 - 17:57
(17) А многоур. справочник тоже DBF-ами удобнее переносить?
   Кое-кто@где-то.там
19 - 18.03.04 - 17:59
(18) Не вижу проблемы с использованием. Объясни?
   Рупор абсурда
 
20 - 18.03.04 - 18:02
(18) Пару дополнительных полей добавить придётся ...
   romix
 
21 - 18.03.04 - 18:05
(20) Cсылка на parent ID и признак группа-не группа? Будет очень удобно обходить такую таблицу в цикле...
   fellow
 
22 - 18.03.04 - 18:07
Неудобно только на потолке спать - одеяло спадывает. Всё остальное сделать можно, и даже не особо напрягаясь.
   skunk
 
23 - 18.03.04 - 18:16
(21)интересно как это в xml & ini обходишь
   romix
 
24 - 18.03.04 - 18:21
(23)
[Группа]
Наименование=Резисторы
[Группа]
Наименование=Резисторы 0805
[Элемент]
Наименование=Резистор 0805 1,2К 1%
[/Элемент]
[/Группа]
[/Группа]
   skunk
 
25 - 18.03.04 - 18:37
(24)это хорошо когда ты один справочник и попорядку грузишь а кабы в разнабой... да еще и в перемежку с доками...
   SnarkHunter
 
26 - 18.03.04 - 18:48
(21)Использовать индекс НомерУровня+ПризнакГруппаЭлемент видимо талмуд запрещает...
   romix
 
27 - 18.03.04 - 18:53
(26) Какой еще "индекс НомерУровня"? Переведите талмудского на русский плиз...
   romix
 
28 - 18.03.04 - 18:55
(25) Извини, не понял, как это возможно.
   SnarkHunter
 
29 - 18.03.04 - 19:02
На свете много есть чудес, мой друг Горацио,
Что и не снились нашим мудрецам... (с)

Два доп.поля в дбф-файле... В одно пишется уровень элемента/группы справочника, в другое - признак группы/элемента, по этим полям индекс...
Затем за один проход по записям файла закачиваем справочник...
Хотя... Даже можно обойтись индексированием по уровню...
   skunk
 
30 - 18.03.04 - 19:09
(29)по моему по ID родителя енто будет лучше
   romix
 
31 - 20.03.04 - 16:43
(29) так не прокатит - в самой 1С (справочники) реализовано как в (30). Плюс для быстрого отбора - до 7 колонок со ссылками на родителей разных уровней.
   SnarkHunter
 
32 - 20.03.04 - 16:55
(31)Ну ты мне сказки-то не рассказывай... У меня перенос из ТиС в бухгалтерию именно так реализован...
   romix
 
33 - 20.03.04 - 17:10
(32) Ну и как программа узнает, из какой папки что?
А хотя да, если все по порядку отгружать, то может и прокатить (если DBF гарантирует порядок; в SQL он например не гарантируется).
 
  Рекламное место пустует
   skunk
 
34 - 20.03.04 - 17:21
по IDу родитедя, конечно... чего тут не понятного... :)
   SnarkHunter
 
35 - 20.03.04 - 17:26
Это тебе не Кернигана-Ричи читать...
   romix
 
36 - 20.03.04 - 17:39
Ну не знаю, может в этом что-то и есть.
   qs12
37 - 20.03.04 - 22:57
(36) Какая там "практика программирования", читай Робачевского! (только не спрашивай кто это такой)



Список тем форума
Рекламное место пустует  
Ошибка? Это не ошибка, это системная функция.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует