ЭДО
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 8016
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
ЭДО
Штатный XML класс прекрасно считывает и парсит пакет ЭДО c русскими тегами (после конвертации в UTF-8) !
Пакет ЭДО взял с 1С. Т.е. можно разбирать объёкт XDOM как рассказывал Юрий и всё ... никаких проблем.
Работы на 2 (два) порядка меньше, чем с Меркурием. Хорошо, что проверил ...

- Вложения
-
- Clarion XML.txt
- (2.69 КБ) 102 скачивания
Последний раз редактировалось Игорь Столяров 10 Февраль 2023, 14:39, всего редактировалось 1 раз.
Make Clarion Great Again ! 
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
ЭДО
глянем!Игорь Столяров писал(а): 10 Февраль 2023, 12:22 Штатный XML класс прекрасно считывает и парсит пакет ЭДО c русскими тегами
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5226
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
ЭДО
Что-то я зарапортовался. Приведенный код на vbscript, а не на js. Xml и vbscript от одного производителя, работают совместно как родные. То есть нет вопросов можно ли или как. Обвязать в методы класса то, что нужно, особых сакральных знаний не требует. Код в приложении заметно проще и понятнее, чем в штатной обертке. Если какие-то дополнения для парсера xml будут появляться, то они все сразу доступны. Просто интересно стало, почему другие стремятся вместо этого юзать штатную обертку, через которую не все можно реализовать, которая уже вряд ли будет дорабатываться. Какие аргументы в пользу такого подхода?
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8016
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
ЭДО
Вполне может получиться так, что другие:finsoftrz писал(а): 10 Февраль 2023, 16:31 почему другие стремятся вместо этого юзать штатную обертку
1. Хотят обеспечеть целостность работающего Win x32 приложения.
Например, мне не принципиально использовать именно штатный класс Clarion.
Очень долго я работал с библиотекой iXML, но потом Юрий показал несколько красивых приёмов
работы с штатным классом и я понял, что не надо юзать закрытый код и жить чужими приходами.
Время доказало правоту. Если бы был иной открытый XML класс - я бы с радостью потратил на него время.

2. Не хотят возвращаться к тому DOS режиму работы, когда одна программа запускает другую или скрипт.
Они умеют это делать и ещё поддерживают программы с такими скриптами, но новых уже не хотят.

Им компфортно работать с CallBack, кодами ошибок, динамическим связыванием библиотек и т.д.
3. Ну и главное - инструмент по задаче. Вы пару раз упоминали, что в ЕГАИС заюзаны какие-то расширенные
свойства XML. Наверно, если бы я не смог это реализовать имеющися средствами - то искал бы другие ...

Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5226
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
ЭДО
1. Открытость важна, когда можете самостоятельно разобраться в коде и внести необходимые корректировки. Я бы еще добавил сюда, когда можно это сделать за разумное время и потратив разумные усилия. А нам все надо быстро. Например, на переход от фиксированных тегов на xpath потребовалось совсем немного времени, пол дня от силы, и все заработало. Если бы я использовал штатную обертку, мне бы пришлось вначале немало повозиться в ней, войти в стресс от ковыряния в малопонятном коде, а затем, скорее всего, искать другой инструмент.
2. Dos тут ни при чем. VbScript это штатный инструмент во всех версиях windows. По умолчанию он всегда включен и под рукой. Хотя админ теоретически может его заблокировать, но с таким же успехом он может заблокировать и работу нашего приложения. Еще напомню, что динамические библиотеки это виндовая штука, а в линуксе (юниксе) исторически принято именно вызывать из одного приложения другое. Callback штука прикольная, но программить прикладные приложения таким способом особого кайфа нет. Именно по этой причине в кларионе придумали accept.
3. Погуглите xml xpath, это один из основных методов (отраслевой стандарт) в xml. В заголовке файла прописывается пространство имен, затем, в зависимости от установок в нем, специальными методами осуществляется поиск тегов с заранее неизвестными именами. То есть, один программист может задать в xml файле одни теги, другой другие, а мы должны все правильно понять и распарсить.
В упомянутой выше платной EasyXml такие возможности задекларированы. Но у меня большое подозрение, что используется Net фреймворк, не хотелось бы завязывать свои приложения напрямую на него.
2. Dos тут ни при чем. VbScript это штатный инструмент во всех версиях windows. По умолчанию он всегда включен и под рукой. Хотя админ теоретически может его заблокировать, но с таким же успехом он может заблокировать и работу нашего приложения. Еще напомню, что динамические библиотеки это виндовая штука, а в линуксе (юниксе) исторически принято именно вызывать из одного приложения другое. Callback штука прикольная, но программить прикладные приложения таким способом особого кайфа нет. Именно по этой причине в кларионе придумали accept.
3. Погуглите xml xpath, это один из основных методов (отраслевой стандарт) в xml. В заголовке файла прописывается пространство имен, затем, в зависимости от установок в нем, специальными методами осуществляется поиск тегов с заранее неизвестными именами. То есть, один программист может задать в xml файле одни теги, другой другие, а мы должны все правильно понять и распарсить.
В упомянутой выше платной EasyXml такие возможности задекларированы. Но у меня большое подозрение, что используется Net фреймворк, не хотелось бы завязывать свои приложения напрямую на него.
C6/C12, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5226
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
ЭДО
Если действительно дополнительных зависимостей нет и заявленные возможности работают, то как вариант, если не хочется vbscript. Написано, что продается в сырцах и стоит приемлемые деньги.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8016
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
- Игорь Столяров
- Ветеран движения
- Сообщения: 8016
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
ЭДО
Ну никто не против басика скриптов ... Мы например, используем скрипты для работы с CryptoPro и файлами.
Причина та же, они готовые на сайте - бери и работай. Конечно есть и API - но это же думать надо ...

Но всё равно, осадочек-то остаётся ... Есть в самой методе что-то нехорошее (кроме вопросов безопасности).
Когда оптимизированное C компилятором x32 ООП приложение в 2023 г.составляет текстовый файл для того,
что бы запустить потом интерпретатор и выполнить построчно текстовый код ... Даже для CURL и ZIP.

Это как на элитном спорткаре развозить ящики с мандаринами по ларькам !

Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5226
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
ЭДО
Да, осадочек остаётся. Но корни вопроса в том, что мы работаем с мейнстримными технологиями из инструмента, завершившего свое развитие. Альтернатива использовать или самому писать какие-то достаточно сложные библиотеки. У этих библиотек априори будет мало пользователей, чтобы всесторонне протестировать и поддерживать в актуальном состоянии. С другой стороны, мы имеем все готовое с примерами на все случаи жизни и сам код скриптов достаточно простой и понятный, проверенный огромным количеством людей. Из кларионовских программ юзают ведь sql скрипты, а не не низкоуровневый сишный код, и ничего.
Для себя я придерживаюсь такого мнения. Если есть возможность использовать что-то на уровне библиотек и этот код достаточно понятен и потенциально в нем не предвидится опасности, то лучше использовать библиотеки. А со сложными вещами, такими, как парсер xml или офисные пакеты, лучше работать через скрипты. Локально это vbscript, а если с внешним миром, то это php.
Для себя я придерживаюсь такого мнения. Если есть возможность использовать что-то на уровне библиотек и этот код достаточно понятен и потенциально в нем не предвидится опасности, то лучше использовать библиотеки. А со сложными вещами, такими, как парсер xml или офисные пакеты, лучше работать через скрипты. Локально это vbscript, а если с внешним миром, то это php.
C6/C12, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5226
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
ЭДО
Для curl и zip скрипты не надо. Для curl я использую curl.exe, не curlib. Так как изначально это юниксовое приложение и все примеры в сети для exe. Для zip используется старый библиотечной вариант. Для 7z используется exe, хотя там тоже можно через библиотеку, но для клариона не попадалось решения.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8016
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
ЭДО
Просто интересно. Через Ваше решение с VBScript можно загружать из XML вложенные файлы
(содержание тегов в кодировке BASE64 большого и неизвестного заранее размера) ?
Для штатного класса XML я эту фишку сделал (с подсказки Юрия) в своё время.
Забавно, что сейчас полез читать справку CapeSoft xFiles 4 - и у них это сделано через промежуточный
вариант "Level-Up" который я тоже прошёл в своё время (и предлагал для класса cJSON).

Единственно, что они красиво вывернулись с определением, что в теге файл - через имя поля в Queue:
Код: Выделить всё
MyXmlList Queue
...
TheDate Long,Name('TheDate | @d6')
TheImage &String,Name('TheImage | &String')
end
...
DisposeQueue(Images)

Make Clarion Great Again ! 