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


Зарегистрирован: 09/06/2018 12:58:23
Сообщений: 12
Оффлайн

Доброго времени суток, уважаемые!
Не далее как два дня назад, заказчик выдал мне явки и пароли от тестового сервера Ветис.API и радостно сообщил, что уже с 1 июля "Всё это должно работать, а уж за ценой мы не постоим!"
Насчет "цены", зная заказчика, особых иллюзий я не питал, кроме того, полазив по документации и форумам, стал довольно скептически относиться к вероятности воплощения всего желаемого в указанные сроки.
Единственная положительная эмоция, испытанная мною за два прошедших дня - это данная ветка форума.
Дело в том, что сам я родом из DOS, и программировать начал еще на Turbo Pascal 3.0, последовательно пройдя с компанией Borland, и всеми её сменщиками, все этапы длительного пути, от первой версии Delphi до нынешней 10.2 Tokyo.
Думаю, как и многие из Вас, за последнее десятилетие наслушался от молодежи массы рассказов о том, что "Delphi умерла". По этому поводу я только ухмылялся, и продолжал юзать VCL, а с появлением XE и FMX, о чем ничуть не сожалею. О чем это я...
Ах да! О Ветис.API посредством Delphi)))
С огромным удовольствием посмотрел всё то, что Вы здесь наваяли, и с удовлетворением отметил, что не я один такой "странный" любитель Паскаля.
Итак, у меня есть еще 20 суток, а в них, как известно, 24 часа... Правда блуждания по форуму быстро убедили, что радоваться тут особо не чему. Читая эту "стену плача", на ум невольно приходит один из шутливых законов Мерфи:
- Если бы программисты строили дома, то первый же залетевший дятел разрушил всю цивилизацию.
Это я про создателей сего удивительного продукта...
Но что есть, то и есть, а потому не буду без нужды впадать в уныние, думаю случай для этого мне еще не раз представится.
Коллеги, искренне надеюсь на Вашу помощь, хотя на первых порах буду мучить Вас идиотскими вопросами об устройстве системы в целом. Ибо чтение документации скорее удивляет, нежели насыщает полезными и нужными знаниями об объекте приложения усилий.

Это сообщение было редактировано 4 раз. Последнее обновление произошло в 10/06/2018 01:31:53

Vlad74ru


Зарегистрирован: 09/06/2018 12:58:23
Сообщений: 12
Оффлайн

Итак, с чего я начал.
Войдя в web интерфейс тестового сервера, обнаружил, что в так называемом "Журнале ВХОДНОЙ продукции" (вот кто этого писателя русскому языку учил???) отсутствует кнопка "Добавить запись".
В другой ветке форума мне уже объяснили, что отсутствует торговая площадка, которую следует создать посредством следующих манипуляций:

Создание площадки:
http://help.vetrf.ru/wiki/ModifyEnterpriseOperation_v2.0
Создание связи:
http://help.vetrf.ru/wiki/ModifyActivityLocationsOperation_v2.0

Вооружившись SoapUI наваял запрос для ModifyEnterpriseRequest, получил ApplicationId и по нему считал ответ с довольно странным сообщением:
<entityNotFoundFault>
<message Application with id=12be8eec-c802-49c3-8d73-bb3d2629dab4 and issuerId=12be8eec-c802-49c3-8d73-bb3d2629dab4 not found</message>
</entityNotFoundFault>
Тем не менее, площадка и кнопка "Добавить запись" в web появились. Теперь вот мучаюсь вопросом: какую "связь" и с чем устанавливает команда ModifyActivityLocationsOperation_v2.0, если и без неё всё заработало?
Подскажите пожалуйста.

Это сообщение было редактировано 2 раз. Последнее обновление произошло в 10/06/2018 01:18:29

start


Зарегистрирован: 20/10/2017 10:58:42
Сообщений: 28
Оффлайн

Выкладываю очередную версию - https://drive.google.com/drive/folders/1rpUVPvftQ6PMena1qkYkncu1XgUdqbME?usp=sharing
Берите более свежий zip. Внутри БД и WSDL-файлы. Может кому-то поможет
Vlad74ru


Зарегистрирован: 09/06/2018 12:58:23
Сообщений: 12
Оффлайн

start wrote:Выкладываю очередную версию - https://drive.google.com/drive/folders/1rpUVPvftQ6PMena1qkYkncu1XgUdqbME?usp=sharing
Берите более свежий zip. Внутри БД и WSDL-файлы. Может кому-то поможет


Во! За исходники отдельное спасибо! Когда мысль заходит в тупик, нет ничего лучше "шпаргалки" в виде листинга от того, кто это сделал ранее, причём не пожадничал - поделился

Кстати, у меня по WSDL схемам вопросик есть. Из обсуждения в этой ветке я понял, что Вы их закачивали локально, при этом активно правили. Хотелось бы понять, в чём тут изюм? Должен признаться, что до этого момента, не уделял должного внимания soap компонентам в Delphi. Когда делал интеграцию и с ЕГАИС, и с ГИС ЖКХ API, действовал по старинке: Indy HTTPClient плюс XML парсер. И тут скорее всего начал бы делать также, но почитав Ваше обсуждение заинтересовался данной технологией всерьез. Вчера загрузил основные схемы с тестового сервера, погонял обращения к справочникам - мне понравилось, гораздо быстрее, чем генерить запрос, пересылать по HTTP, затем парсить ответ... естественно быстрее в плане трудозатрат. Тестовый проект собирал в XE8, url указывал с инета, никаких особых проблем не было...
Потому и интересно, зачем Вы качаете WSDL схемы на локальную машину?
oleg-x


Зарегистрирован: 20/11/2017 11:24:40
Сообщений: 1665
Онлайн

Vlad74ru wrote:
Вооружившись SoapUI наваял запрос для ModifyEnterpriseRequest, получил ApplicationId и по нему считал ответ с довольно странным сообщением:
<entityNotFoundFault>
<message Application with id=12be8eec-c802-49c3-8d73-bb3d2629dab4 and issuerId=12be8eec-c802-49c3-8d73-bb3d2629dab4 not found</message>
</entityNotFoundFault>
Тем не менее, площадка и кнопка "Добавить запись" в web появились. Теперь вот мучаюсь вопросом: какую "связь" и с чем устанавливает команда ModifyActivityLocationsOperation_v2.0, если и без неё всё заработало?
Подскажите пожалуйста.

Связь нужна между площадкой и ХС. Написал про связь, потому что при создание площадки, не факт что она сразу появиться в списке (могли не указать владельца) и связь также является временной (над этим можно не заморачиваться), пока не погасите хотя бы один входящий ЭВСД.
Если площадка появилась, то второй запрос не нужен.
Сделайте еще одну площадку, что бы не просить в ветках, что бы вам кинули ВСД, будете сами создавать и между площадками перекидывать (так быстрее будет).
https://vk.com/mercuriy_rf
start


Зарегистрирован: 20/10/2017 10:58:42
Сообщений: 28
Оффлайн

"Потому и интересно, зачем Вы качаете WSDL схемы на локальную машину?"

Почитайте начало ветки - сообщения коллеги Игнатова. Там правки нужны... Чтобы DataWrapper сработал.

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 10/06/2018 15:15:07

Владимир Игнатов


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

start wrote:"Потому и интересно, зачем Вы качаете WSDL схемы на локальную машину?"

Почитайте начало ветки - сообщения коллеги Игнатова. Там правки нужны... Чтобы DataWrapper сработал.

Спасибо за предоставленное слово.

Править WSDL приходится, потому что не связаны объекты "запрос к серверу приложений" и кучка объектов собственно разных запросов.
Кроме того, из-за ошибки (видимо, Delphi), нужно править Soap.OPToSOAPDomConv.pas, т.к. в нескольких местах в массив элементов описан в одном пространстве имен, а сами элементы - в другом, и при этом Delphi неправильно генерирует XML. И, видимо, из WSDL - .pas, поэтому нужно выполнить
RemClassRegistry.RegisterExternalPropName(TypeInfo(Batch), 'packageList', '[ArrayItemNS="http://api.vetrf.ru/schema/cdm/dictionary/v2" ArrayItemName="package"]');
RemClassRegistry.RegisterExternalPropName(TypeInfo(Consignment), 'packageList', '[ArrayItemNS="http://api.vetrf.ru/schema/cdm/dictionary/v2" ArrayItemName="package"]');
RemClassRegistry.RegisterExternalPropName(TypeInfo(CheckShipmentRegionalizationRequest), 'shipmentRoute', '[ArrayItemName="routePoint"]');
RemClassRegistry.RegisterExternalPropName(TypeInfo(UpdateTransportMovementDetailsRequest), 'shipmentRoute', '[ArrayItemName="routePoint"]');

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 13/06/2018 10:32:40

bamxx


Зарегистрирован: 21/05/2018 14:38:45
Сообщений: 22
Оффлайн

Подскажите, где в delphi2007 указываются префиксы NS1,.. для запросов типа



а то возвращает ошибку
Format validation failed due to XML Schema rules: prefix of qname "NS1" can not be resolved
[Email]
start


Зарегистрирован: 20/10/2017 10:58:42
Сообщений: 28
Оффлайн

Никаких префиксов сам не ставлю!
<initiator><login xmlns="http://api.vetrf.ru/schema/cdm/mercury/vet-document/v2">Мой логин</login></initiator>
bamxx


Зарегистрирован: 21/05/2018 14:38:45
Сообщений: 22
Оффлайн

префиксы сами добавляются в запрос при команде
aResultResp := clnt.ReceiveApplicationResult(aResultReq);
при этом, префиксы не добавляются при команде
aResp := clnt.submitApplicationRequest(aReq);

[Email]
killigor


Зарегистрирован: 16/01/2018 11:54:00
Сообщений: 7
Оффлайн

bamxx wrote:Подскажите, где в delphi2007 указываются префиксы NS1,.. для запросов типа



а то возвращает ошибку
Format validation failed due to XML Schema rules: prefix of qname "NS1" can not be resolved


скорей всего при инициализации свойства initiator вы некорректно указали тип (User, User2), на основе которого инициализируете свойство. Или с другого модуля.
start


Зарегистрирован: 20/10/2017 10:58:42
Сообщений: 28
Оффлайн

Посмотрите примеры вызова в исходниках, я выкладывал ранее:

function TXSDParser.GetInitiator: ams_mercury_g2b.User2;
begin
Result:=ams_mercury_g2b.User2.Create;
Result.login:=FileIni.ReadString(MercuryIniSection, 'Initiator', '');
end;

GetDocumentRequest:=ams_mercury_g2b.modifyBusinessEntityRequest.Create;
GetDocumentRequest.initiator:=GetInitiator;

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 27/06/2018 08:16:48

bamxx


Зарегистрирован: 21/05/2018 14:38:45
Сообщений: 22
Оффлайн


Получаем

при этом запросы справочников (предприятий, ХС, др) формируются правильно
Может нужно что-нибудь подправить в rio.pas ? )
[Email]
bamxx


Зарегистрирован: 21/05/2018 14:38:45
Сообщений: 22
Оффлайн

Позвонил тут PHP-шнику, он говорит, что формирователь запросов добавляет в названия тэгов префиксы NS1, NS2, ... , когда считает, что они не уникальные (? за что купил - за то продаю).
Можно как-нибудь настроить THTTPRIO, чтобы он игнорировал эту проверку ?
--
это сообщение для Start: как там Тигран поживает?

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 28/06/2018 02:25:12

[Email]
killigor


Зарегистрирован: 16/01/2018 11:54:00
Сообщений: 7
Оффлайн

bamxx wrote:


почему не modifyEnterpriseRequest?

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 28/06/2018 05:29:44

 
Индекс форума » Автоматизированная система МЕРКУРИЙ
Перейти:   

Powered by JForum 2.1.8 © JForum Team