Класс tXML (интерфейс для штатного CpXML)
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Admin
- Администратор
- Сообщения: 3924
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 14 раз
- Поблагодарили: 14 раз
- Контактная информация:
Класс tXML (интерфейс для штатного CpXML)
Простой EXE на С6.3 ABC падает при попытке обращения к классу.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Игорь Столяров
- Ветеран движения
- Сообщения: 6753
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Класс tXML (интерфейс для штатного CpXML)
Дежавю ...

Проверьте пожалуйста, что бы у Вас в проекте DLL были определены
опции самого CpXML (аналогично примеру):
Код: Выделить всё
_XmlLibDllMode_=>0
_XmlLibLinkMode_=>1
Совершенство достигается не когда нечего добавить, а когда нечего отнять !
- Admin
- Администратор
- Сообщения: 3924
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 14 раз
- Поблагодарили: 14 раз
- Контактная информация:
Класс tXML (интерфейс для штатного CpXML)
Действительно, туплю...
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 3924
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 14 раз
- Поблагодарили: 14 раз
- Контактная информация:
Класс tXML (интерфейс для штатного CpXML)
Вот вариант:
Как для этого товара получить две строки СвТД и ДопСведТов в очереди?
Не понимаю, что мешало СвТД вложить в какой либо тег.
XML добавляю на всякий случай.
Код: Выделить всё
...
<СведТов НомСтр="4" НаимТов="Стиральная машина LG F2T3HS6W кл.:A фронт. макс.:7кг белый " ОКЕИ_Тов="796" КолТов="10.00" ЦенаТов="41076.67" СтТовБезНДС="410766.67" НалСт="20%" СтТовУчНал="492920.00">
<Акциз>
<БезАкциз>без акциза</БезАкциз>
</Акциз>
<СумНал>
<СумНал>82153.33</СумНал>
</СумНал>
<СвТД КодПроисх="156" НомерТД="Прослеж" />
<СвТД КодПроисх="643" НомерТД="Прослеж" />
<ДопСведТов КодТов="1862190" НаимЕдИзм="шт" КрНаимСтрПр="Китай" НадлОтп="0.00">
<СведПрослеж НомТовПрослеж="99995038/141122/0000284/001" ЕдИзмПрослеж="796" КолВЕдПрослеж="7.00" НаимЕдИзмПрослеж="шт" />
<СведПрослеж НомТовПрослеж="99995038/011122/0000382/001" ЕдИзмПрослеж="796" КолВЕдПрослеж="3.00" НаимЕдИзмПрослеж="шт" />
</ДопСведТов>
<ИнфПолФХЖ2 Идентиф="рег_номер_таможенной_декларации_расшифровка" Значен="99995038/011122/0000382/001_3" />
<ИнфПолФХЖ2 Идентиф="рег_номер_таможенной_декларации_расшифровка" Значен="99995038/141122/0000284/001_7" />
</СведТов>
...
Не понимаю, что мешало СвТД вложить в какой либо тег.
XML добавляю на всякий случай.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 3924
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 14 раз
- Поблагодарили: 14 раз
- Контактная информация:
Класс tXML (интерфейс для штатного CpXML)
СвТД загрузил по аналогии с ИнфПолФХЖ2
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Игорь Столяров
- Ветеран движения
- Сообщения: 6753
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Класс tXML (интерфейс для штатного CpXML)
Если что - я вопрос услышал и им занимаюсь.
Вложенные теги в структуре списков ЭДО я видел, но поставил заглушку "по требованию".
Значит делаем их сейчас.
Вложенные теги в структуре списков ЭДО я видел, но поставил заглушку "по требованию".
Значит делаем их сейчас.

Совершенство достигается не когда нечего добавить, а когда нечего отнять !
- Игорь Столяров
- Ветеран движения
- Сообщения: 6753
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Класс tXML (интерфейс для штатного CpXML)
В первом сообщении сабж обновлён до версии 30.03.2023 г.
-----------------------------------------------------------------------------
- Устранены мелкие проблемы с парсингом связанных списов;
- Добавлен класс PushXML - запись XML пакетов (см. пример).
Есть много способов красиво и правильно записать XML пакет (например класс Capesoft xFiles).
Класс PushXML - это иное. Здесь просто и быстро записываем XML как код.
Бонусом есть несколько методов для записи блоков ЭДО и разбора строки ФИО на составляющие. 
-----------------------------------------------------------------------------
- Устранены мелкие проблемы с парсингом связанных списов;
- Добавлен класс PushXML - запись XML пакетов (см. пример).
Есть много способов красиво и правильно записать XML пакет (например класс Capesoft xFiles).
Класс PushXML - это иное. Здесь просто и быстро записываем XML как код.
Код: Выделить всё
Write Class(PushXML).
Code
If Write.Init(True) ! Записываем XML UTF-8 кирпичиком
Write.AddCap ! Стандартный заголовок
! Комментарий
Write.AddRem('Класс PushXML - это быстро и просто !')
If Write.Opened('Root') ! Открытый тег без атрибутов
! Закрытый тег с атрибутами
Write.SetAtr('Атрибут1','Значение А')
Write.SetAtr('Атрибут2','Значение Б')
Write.Closed('ЗакрытыйТег1')
! Открытый тег с атрибутами
Write.SetAtr('Атрибут3','Значение В')
If Write.Opened('ОткрытыйТег1')
! Закрытый тег с атрибутами и значением
Write.SetAtr('Атрибут4', 'Значение Г')
Write.Closed('ЗакрытыйТег2','Значение Д')
! Закрыть открытый тег
Write.EndTag('ОткрытыйТег1')
end
! Тег с файлом в BASE64
Write.AddFile('Файл','test.xml')
! Запись в XML пакет произвольного текста
Write.AddStr('<?mso-application progid="Excel.Sheet"?>')
Write.EndTag('Root') ! Закрыть открытый тег
end
! Запись XML в файл
Write.SaveAs('TestPush.xml')
Write.Kill
end

Совершенство достигается не когда нечего добавить, а когда нечего отнять !
- Игорь Столяров
- Ветеран движения
- Сообщения: 6753
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Класс tXML (интерфейс для штатного CpXML)
В первом сообщении сабж обновлён до версии 07.04.2023 г.
-----------------------------------------------------------------------------
- Добавлена запись / чтение тегов с секциями CDATA;
- Загрузка вложенных списков с тегами (ранее только с атрибутами);
- Добавлен пример загрузки документа ЭДО со списком марок (КИЗ).
Что бы не создавать монстра - сделано несколько примеров документов ЭДО,
которые мона переключать в тексте примера:
-----------------------------------------------------------------------------
- Добавлена запись / чтение тегов с секциями CDATA;
- Загрузка вложенных списков с тегами (ранее только с атрибутами);
- Добавлен пример загрузки документа ЭДО со списком марок (КИЗ).
Что бы не создавать монстра - сделано несколько примеров документов ЭДО,
которые мона переключать в тексте примера:
Код: Выделить всё
Loc:FileXML CString('test.xml') ! Имя файла с XML пакетом ЭДО (базовая комплектация)
!Loc:FileXML CString('pros.xml') ! Имя файла с XML пакетом ЭДО (прослеживаемость)
!Loc:FileXML CString('mark.xml') ! Имя файла с XML пакетом ЭДО (КИЗ - марки)
Совершенство достигается не когда нечего добавить, а когда нечего отнять !
- Admin
- Администратор
- Сообщения: 3924
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 14 раз
- Поблагодарили: 14 раз
- Контактная информация:
Класс tXML (интерфейс для штатного CpXML)
Непонятно почему, разбираться не стал. Не грузит в очередь с префиксом.
Код: Выделить всё
XMLQueue2 QUEUE,PRE(Q2)
SCInvoice GROUP
Number STRING(255)
AccountDate STRING(255)
...
tXML.ToQueue(XMLQueue2, 'SCInvoice')
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Игорь Столяров
- Ветеран движения
- Сообщения: 6753
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Класс tXML (интерфейс для штатного CpXML)
Сопоставление имени тега и поля в группе (записи очереди) при парсе идёт по имени.
Поэтому при наличии префикса нужно указывать для полей имя тега в Name('TagName').
Я так понимаю.
Поэтому при наличии префикса нужно указывать для полей имя тега в Name('TagName').
Я так понимаю.

Совершенство достигается не когда нечего добавить, а когда нечего отнять !