АктСвер 3.01 (Чтение XML)

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Admin
Администратор
Сообщения: 3642
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

АктСвер 3.01 (Чтение XML)

Сообщение Admin »

Ни у кого нет кода для разбора акта сверки взаиморасчетов с помощью iQXML ?
Что то мозгов не хватает его разобрать.
Или чем то другим. Или преобразование этого XML в XLS для удобства чтения.
А то присылают это, и нужно бухам глазками читать.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3642
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

АктСвер 3.01

Сообщение Admin »

Или напомните кусочек кода для ручного разбора XML т.к. повторюсь, iQXML не устраивает.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5084
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

АктСвер 3.01

Сообщение Игорь Столяров »

Admin писал(а): 30 Ноябрь 2020, 9:38iQXML не устраивает
iQXML сдох. Года 3-4 назад все парсеры переписали на штатный разбор Clarion по
примеру Юрия (ещё раз спасибо !): viewtopic.php?f=1&t=3390

Что такое "АктСвер 3.01" - не знаю, но если дадите описание, то посмотрю и скажу. :)
«V» значит Вендетта !
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

АктСвер 3.01

Сообщение Yufil »

Поищи в этом форуме по слову FillDomQueue.
Рассказывал, как это делается встроенными классами Кларион, начиная с cw6.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5084
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

АктСвер 3.01

Сообщение Игорь Столяров »

Yufil писал(а): 30 Ноябрь 2020, 10:42 Рассказывал, как это делается
Вот Ваше описание. Это же как настольная библия (или прикроватная камасутра) ... :)
Вложения
Clarion XML.txt
(2.6 КБ) 58 скачиваний
«V» значит Вендетта !
Аватара пользователя
Admin
Администратор
Сообщения: 3642
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

АктСвер 3.01

Сообщение Admin »

Спасибо. Завтра разберу.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3642
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

АктСвер 3.01

Сообщение Admin »

Не могу найти исходник FillDomQueue. Киньте кто ни будь сюда или в личку.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5084
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

АктСвер 3.01

Сообщение Игорь Столяров »

Admin писал(а): 01 Декабрь 2020, 3:33 Не могу найти исходник FillDomQueue
Как-то Вы сразу решили начать с переписывания всего ...
А этот исходник вообще существует ? Реализация работы с XML в Clarion выполнена
в библиотеках Clacpxml.dll и Claxmlty.dll - они добавляются в проект. И это всё ...
«V» значит Вендетта !
Аватара пользователя
Admin
Администратор
Сообщения: 3642
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

АктСвер 3.01

Сообщение Admin »

Я не в теме.
FillDomQueue генерирует дерево по которому потом в коде бежим в цикле.
FillDomQueue я так понял написал Юрий Философов но ссылка на Тактик Диполь не работает.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5084
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

АктСвер 3.01

Сообщение Игорь Столяров »

Admin писал(а): 01 Декабрь 2020, 7:44 FillDomQueue я так понял написал Юрий Философов
Нет. Метод FillDomQueue описан в cpxml.inc / clw которые находятся в папке LibSrc Clarion.
Есть штатный PDF с описанием, он полезен для понимания как это вообще работает.
Вложения
clarionxmlsupport.pdf
(424.05 КБ) 23 скачивания
«V» значит Вендетта !
Аватара пользователя
Admin
Администратор
Сообщения: 3642
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

АктСвер 3.01

Сообщение Admin »

Спасибо.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3642
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

АктСвер 3.01

Сообщение Admin »

Я правильно понимаю что XML с русскими тегами не читаются?
Обычный английский без проблем.
При чтении русского через XMLFileToDOM получаю NULL

Код: Выделить всё

<?xml version="1.0" encoding="windows-1251"?>
<Файл Формат="АктСвер" ВерсияФормата="3.01" Имя="ON_ACCOUNTS___20201123_f36a5aa6-5cb1-4c2c-94ae-31f1df41bf18">
...
</Файл>
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

АктСвер 3.01

Сообщение Yufil »

1. В Кларионе есть шаблон ViewXML. Если его вызвать вызовом кнопки где-то в уголке, то всё подключится на автомате.
Обычно я так и делаю :)
2. Шаблон загружает файл в очередь, используя FillDomQueue, после чего показывает XML в виде очереди.
Кстати, полезно посмотреть загруженный XML-файл, сразу будет видно, где что лежит.

3. Если при загрузке происходит авария, то XML-файл не загрузится, надо менять кодовую таблицу.
Вот рабочий фрагмент ( документ лежит в Блоб-поле БД )

Код: Выделить всё

LoadXMLDoc   Routine  ! Разборка XML
             Data
XMLText      Cstr
WinPos       Long
             Code
             XMLText.LoadFromBlob(BlobField)
             WinPos=Instring('"WINDOWS-1251"',XMLText.S[1:60],1,1)
             If WinPos
                XMLText.S[WinPos : WinPos+13]='"UTF-8"'
                XMLText.ToUtf8()
             End

             xmlDoc &= XMLStringToDOM(XMLText.S)

             If XMLDoc &= Null
              If BlobToFile(BlobField, 'Error.XML') .
              Return(1)
            End
            Exit
Документ загружается в память, в начале документа ищем "WINDOWS-1251" ( такие у меня документы ), заменяем на "UTF-8" и перекодируем текс, а потом загружаем через XMLStringToDOM.
Если документ лежит не в Блобе, заменяем LoadFromBlob на LoadFromFile.

4. Если ViewXML работает, но показывает кракозябли - это нормально, данные надо будет перекодировать из UTF-8 в Win1251.
5. Мой адрес на tacis-dipol.ru давно ликвидирован.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

АктСвер 3.01

Сообщение Yufil »

Admin писал(а): 01 Декабрь 2020, 9:42 Я правильно понимаю что XML с русскими тегами не читаются?
Обычный английский без проблем.
При чтении русского через XMLFileToDOM получаю NULL

Код: Выделить всё

<?xml version="1.0" encoding="windows-1251"?>
<Файл Формат="АктСвер" ВерсияФормата="3.01" Имя="ON_ACCOUNTS___20201123_f36a5aa6-5cb1-4c2c-94ae-31f1df41bf18">
...
</Файл>
Надо перекодировать файл в UTF-8, после чего всё будет, никаких проблем
Аватара пользователя
Admin
Администратор
Сообщения: 3642
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

АктСвер 3.01

Сообщение Admin »

Это понял. Только нужно еще encoding="UTF-8" добавить
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить