|
[Search] Поиск   [Recent Topics] Последние темы   [Hottest Topics] Горячие темы   [Members]  Список участников   [Groups] На главную страницу 
[Register] Регистрация / 
[Login] Вход 
Прошу помощи. Интреграция базы MSSQL и Меркурий через шлюз на Delphi  XML
Индекс форума » Компонент МЕРКУРИЙ
Автор Сообщение
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

Jupiter wrote:Подскажите, как в Delphi для getProductByTypeListRequest задать ProductType?

А зачем? Вы собираете всю базу продуктов-подпродуктов и т.д.? Собирайте по GetProductChangesList. Да, первый раз получите весь справочник "от царя Гороха", зато потом - только то, что изменилось.
Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Владимир Игнатов wrote:
Jupiter wrote:Подскажите, как в Delphi для getProductByTypeListRequest задать ProductType?

А зачем? Вы собираете всю базу продуктов-подпродуктов и т.д.? Собирайте по GetProductChangesList. Да, первый раз получите весь справочник "от царя Гороха", зато потом - только то, что изменилось.


Спасибо! И все же, вдруг понадобится.
В ProductService_v2 типы продукции хранятся в виде ProductType2 = (_1, _2, _3, _4, _5, _6, _7, _8).

В запросе указываю так: aReq.productType:=ProductService_v2.ProductType(0);
В xml попадает <productType>_1</productType> и возникает ошибка, т.к. должно быть целое число. Но как его задать из Delphi?
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

ProductService_v2.ProductType._1, кажется.
Если в цикле, ProductService_v2.ProductType(i).

ВАЖНО! Всем, кто еще использует болванки кода, которые я когда-то сюда постил, перед aRes:=clnt..... поставить FreeAndNil(aRes), как и перед aResR:=clnt..... в "двухстадийных" запросах, которые могут крутиться в цикле. Иначе возникает утечка памяти.

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 31/10/2017 13:16:26

Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Владимир Игнатов wrote:ProductService_v2.ProductType._1, кажется.
Если в цикле, ProductService_v2.ProductType(i).


ProductService_v2.ProductType. - не содержит больше ничего.
ProductService_v2.ProductType2._1 - то же самое, что и ProductService_v2.ProductType2(0)
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

pi.productType:=ams_Mercury_g2b.ProductType(q.FieldByName('ProductType').AsInteger-1);

Проверьте по файлу запроса rio_req.txt правильность перевода, нужен ли там "-1"?

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 31/10/2017 13:28:19

Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Владимир Игнатов wrote:pi.productType:=ams_Mercury_g2b.ProductType(q.FieldByName('ProductType').AsInteger-1);

Проверьте по файлу запроса rio_req.txt правильность перевода, нужен ли там "-1"?


У меня aReq: ProductService_v2.getProductByTypeListRequest;
Поэтому при попытке написать
aReq.productType:=ams_Mercury_g2b.ProductType(1);
возникает ошибка несовместимости типов
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

Jupiter wrote:У меня aReq: ProductService_v2.getProductByTypeListRequest;

:=ProductService_v2.productType2._13
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

При генерации .pas из .wsdl у меня снята галка scoped enumeration или как-то так, чтобы не появлялось каждый раз (_1, _2...) и т.д. много раз для разных типов.
Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Владимир Игнатов wrote:
Jupiter wrote:У меня aReq: ProductService_v2.getProductByTypeListRequest;

:=ProductService_v2.productType2._13


То же самое, вот сгенерированный запрос:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlnssd="http://www.w3.org/2001/XMLSchema"
xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<getProductByTypeListRequest xmlns="http://api.vetrf.ru/schema/cdm/registry/ws-definitions/v2">
<listOptions xmlns="http://api.vetrf.ru/schema/cdm/base">
<count>1</count>
<offset>0</offset>
</listOptions>
<productType xmlns="http://api.vetrf.ru/schema/cdm/dictionary/v2">_1</productType>
</getProductByTypeListRequest>
</SOAP-ENV:Body></SOAP-ENV:Envelope>
Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Владимир Игнатов wrote:При генерации .pas из .wsdl у меня снята галка scoped enumeration или как-то так, чтобы не появлялось каждый раз (_1, _2...) и т.д. много раз для разных типов.


Интересно. То есть у Вас там целые числа (1, 2, ...) ?
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

Jupiter wrote:
Владимир Игнатов wrote:При генерации .pas из .wsdl у меня снята галка scoped enumeration или как-то так, чтобы не появлялось каждый раз (_1, _2...) и т.д. много раз для разных типов.


Интересно. То есть у Вас там целые числа (1, 2, ...) ?

Нет, сквозная нумерация. Но может это виляет?
Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

ProductService_v2.productType2(i) Вам возвращает d, а не _d ?
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

RemClassRegistry.RegisterExternalPropName(TypeInfo(ProductService_v2.ProductType), '_13', '1');
RemClassRegistry.RegisterExternalPropName(TypeInfo(ProductService_v2.ProductType), '_23', '2');
RemClassRegistry.RegisterExternalPropName(TypeInfo(ProductService_v2.ProductType), '_33', '3');
RemClassRegistry.RegisterExternalPropName(TypeInfo(ProductService_v2.ProductType), '_4', '4');
RemClassRegistry.RegisterExternalPropName(TypeInfo(ProductService_v2.ProductType), '_5', '5');
RemClassRegistry.RegisterExternalPropName(TypeInfo(ProductService_v2.ProductType), '_6', '6');
RemClassRegistry.RegisterExternalPropName(TypeInfo(ProductService_v2.ProductType), '_7', '7');
RemClassRegistry.RegisterExternalPropName(TypeInfo(ProductService_v2.ProductType), '_8', '8');

Принимать 1 раз, при старте программы. Убедиться в правильности первых строчных аргументов.
GusVal


Зарегистрирован: 10/11/2017 12:14:53
Сообщений: 176
Оффлайн

Подбираю ручки к API... На основании wsdl...
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlnssd="http://www.w3.org/2001/XMLSchema" xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<submitApplicationRequest xmlns="http://api.vetrf.ru/schema/cdm/application/ws-definitions">
<apiKey>xxx</apiKey>
<application xmlns="http://api.vetrf.ru/schema/cdm/application">
<serviceId>mercury-g2b.service:2.0</serviceId>
<issuerId>YYY</issuerId>
<issueDate>2017-11-20T17:38:31.390+03:00</issueDate>
<data>
<getBusinessEntityUserListRequest xmlns="http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2">
<localTransactionId>20171120173831901</localTransactionId>
<initiator>
<login xmlns="http://api.vetrf.ru/schema/cdm/mercury/vet-document/v2">UserXYZ</login>
</initiator>
<listOptions xmlns="http://api.vetrf.ru/schema/cdm/base">
<count>100</count>
<offset>0</offset>
</listOptions>
</getBusinessEntityUserListRequest>
</data>
</application>
</submitApplicationRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Вот такой запрос отправляю на сервер...

submitApplicationRequest отрабатывает SUCCEESS

receiveApplicationResult возвращает REJECTED... И "Unsupported application data format" в сообщении...

Помогите, плз, понять, что не так в структуре... Застрял что-то...

nifor

[Avatar]

Зарегистрирован: 21/04/2017 04:01:50
Сообщений: 150
Оффлайн

GusVal wrote:Подбираю ручки к API... На основании wsdl...
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlnssd="http://www.w3.org/2001/XMLSchema" xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<submitApplicationRequest xmlns="http://api.vetrf.ru/schema/cdm/application/ws-definitions">
<apiKey>xxx</apiKey>
<application xmlns="http://api.vetrf.ru/schema/cdm/application">
<serviceId>mercury-g2b.service:2.0</serviceId>
<issuerId>YYY</issuerId>
<issueDate>2017-11-20T17:38:31.390+03:00</issueDate>
<data>
<getBusinessEntityUserListRequest xmlns="http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2">
<localTransactionId>20171120173831901</localTransactionId>
<initiator>
<login xmlns="http://api.vetrf.ru/schema/cdm/mercury/vet-document/v2">UserXYZ</login>
</initiator>
<listOptions xmlns="http://api.vetrf.ru/schema/cdm/base">
<count>100</count>
<offset>0</offset>
</listOptions>
</getBusinessEntityUserListRequest>
</data>
</application>
</submitApplicationRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Вот такой запрос отправляю на сервер...

submitApplicationRequest отрабатывает SUCCEESS

receiveApplicationResult возвращает REJECTED... И "Unsupported application data format" в сообщении...

Помогите, плз, понять, что не так в структуре... Застрял что-то...



Так вы выложите receiveApplicationResult запрос
 
Индекс форума » Компонент МЕРКУРИЙ
Перейти:   

Powered by JForum 2.1.8 © JForum Team