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


Зарегистрирован: 16/08/2017 10:22:55
Сообщений: 102
Оффлайн

Без OleExSup.InvokeOLEMethod() длинные ответы не загрузишь. У меня DOMDocument подвисал на этих длинных ответах, поэтому сделал код, как выше приводил.

Файлы сохраняю на всякий случай. Потому как если здесь тех.поддрежку наладят хотя бы до уровня ЕГАИСа, то с ними будет проще.
VoditelKobyly


Зарегистрирован: 16/08/2017 10:22:55
Сообщений: 102
Оффлайн

Вот с этой процедурой потом легко вычищать каталоги обмена.

//******************************************************************************
Процедура СохранитьДокумент_XML(ОтветСервера,ЧастьИмениФайла, ИмяФ="")

ЧастьИмениФайла=СтрЗаменить(ЧастьИмениФайла,"/","_");

ДневнойКаталогФайлов=КаталогИБ()+ИмяКаталогаФайловОбмена+Формат(РабочаяДата(),"ДГГГГММДД");
Если ФС.СуществуетФайл(ДневнойКаталогФайлов)=0 Тогда ФС.СоздатьКаталог(ДневнойКаталогФайлов); КонецЕсли;

//передали имя файла, возможно с каталогом
лЦепочкаКаталогов=ДневнойКаталогФайлов+"\";
лВремЧасть=ЧастьИмениФайла;
лПоз=Найти(лВремЧасть,"\");
Пока лПоз>0 Цикл
лЧастьКаталога=Лев(лВремЧасть,лПоз);
лЦепочкаКаталогов=лЦепочкаКаталогов+лЧастьКаталога;
Если ФС.СуществуетФайл(лЦепочкаКаталогов)=0 Тогда
ФС.СоздатьКаталог(лЦепочкаКаталогов);
КонецЕсли;
лВремЧасть=Сред(лВремЧасть,лПоз+1);
лПоз=Найти(лВремЧасть,"\");
КонецЦикла;

ИмяФ=лЦепочкаКаталогов+лВремЧасть+СтрЗаменить(ТекущееВремя(),":","_")+".xml";
//
Если ФС.СуществуетФайл(ИмяФ)=1 Тогда ФС.УдалитьФайл(ИмяФ); КонецЕсли;
//
//DOMDocument = CreateObject("MSXML2.DOMDocument.3.0");
//DOMDocument.LoadXML(ОтветСервера);
//DOMDocument.Save(ИмяФ);

Stream = CreateObject("Adodb.Stream");
Stream.Charset = "utf-8";
Stream.Open();

//Будем бить на части по 100000 байт
ВсегоБайт=СтрДлина(ОтветСервера);
ДлинаКуска=100000;
КоличествоКусков=Цел(ВсегоБайт/ДлинаКуска);
ОстатокБайт=ВсегоБайт-(КоличествоКусков*ДлинаКуска);
Для НомерКуска=1 По КоличествоКусков Цикл
КусокТекста=Сред(ОтветСервера,(НомерКуска-1)*ДлинаКуска+1,ДлинаКуска);
Stream.WriteText(КусокТекста);
КонецЦикла;
Если ОстатокБайт>0 Тогда
КусокТекста=Сред(ОтветСервера,(КоличествоКусков*ДлинаКуска)+1,ДлинаКуска);
Stream.WriteText(КусокТекста);
КонецЕсли;

//Stream.WriteText(ОтветСервера);
Stream.SaveToFile(ИмяФ);
Stream.Close();

КонецПроцедуры //СохранитьДокумент_XML
bigmal


Зарегистрирован: 24/07/2017 07:58:49
Сообщений: 73
Оффлайн

Утащил в закладки
andpal


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

Ух как ветка оживилась после безобидного вопроса.
Много полезной информации. Всем участникам спасибо.
Судя по примерам, некоторые формируют xml, как обычный текст, я тоже так делал в ЕГАИСе.
ПользовательRex wrote: зп = "<soapenv:Envelope
...
|</soapenv:Envelope>";
об = СоздатьОбъект("MSXML2.XMLHTTP.6.0");
...
об.send(зп);

Сейчас решился как XML_DOM=CreateObject("MSXML2.DOMDocument.6.0") делать, не все получается пока, но так правильнее, наверное.
VoditelKobyly


Зарегистрирован: 16/08/2017 10:22:55
Сообщений: 102
Оффлайн

Ух как ветка оживилась после безобидного вопроса.
Много полезной информации. Всем участникам спасибо.


Просто жалко всех семерочников, кто пытается самостоятельно прицепить Меркурий к своим системам учета.
И себя тоже жалко. Столько времени на это уходит.
Предупреждал меня Павел Большаков...
Знал бы во что ввязываюсь, может раньше и передумал бы, сейчас уже поздно.
andpal


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

Отправил submitApplicationRequest на создание предприятия (с <modifyEnterpriseRequest>) в ответ получил submitApplicationResponse со <status>ACCEPTED</status>.
Проверяю запросом getBusinessEntityByGuidRequest в ответе нету предприятий (нет <ent:enterprise>), только сам ХС.
Надо что-то еще сделать или надо ждать?

Нашел ответ здесь же http://www.fsvps.ru/vetrf-forum/posts/list/720/6855.page#40361
Следовательно, получив applicationId (в submitApplicationResponse), надо послать второй запрос (receiveApplicationResultRequest), для получения результата.

Это сообщение было редактировано 2 раз. Последнее обновление произошло в 30/11/2017 17:28:38

VoditelKobyly


Зарегистрирован: 16/08/2017 10:22:55
Сообщений: 102
Оффлайн

А receiveApplicationResultRequest посылал с полученным applicationId?
VoditelKobyly


Зарегистрирован: 16/08/2017 10:22:55
Сообщений: 102
Оффлайн


Подсистема обработки заявок
Это сервис для выполнения бизнес-операций в специализированных информационных системах Аргус, Меркурий, Веста и т.д. В подсистеме реализован сервис ApplicationManagementService суть работы которого заключается в приеме, авторизации и маршрутизации заявки к той или иной целевой специализированной информационной системе. Работа с этим сервисом реализована по псевдо-асинхронному принципу и осуществляется в два шага:
1 шаг – подача заявки на выполнение бизнес-операции, получение результата приема заявки (выполняется синхронно);
2 шаг – подача запроса на получение результатов обработки заявки/выполнения бизнес-операции (выполняется синхронно).
andpal


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

VoditelKobyly wrote:А receiveApplicationResultRequest посылал с полученным applicationId?
Да, конечно.
Площадку создал со второй попытки. В первой была ошибка структуры xml.
bigmal


Зарегистрирован: 24/07/2017 07:58:49
Сообщений: 73
Оффлайн

Не могу получить ВСД по UUID. Ни в версии 1, ни в версии 2. Ошибка сервера 500, ругается на структуру XML.

Подскажите, пните в нужном направлении - не могу увидеть в чем ошибка (((

<SOAP-ENV:Envelope
xmlns:dt = "http://api.vetrf.ru/schema/cdm/dictionary/v2"
xmlns:bs = "http://api.vetrf.ru/schema/cdm/base"
xmlns:merc = "http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2"
xmlns:apldef = "http://api.vetrf.ru/schema/cdm/application/ws-definitions"
xmlns:apl = "http://api.vetrf.ru/schema/cdm/application"
xmlns:vd = "http://api.vetrf.ru/schema/cdm/mercury/vet-document/v2"
xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<apldef:submitApplicationRequest>
<apldef:apiKey>АпиКей</apldef:apiKey>
<apl:application>
<apl:serviceId>mercury-g2b.service:2.0</apl:serviceId>
<apl:issuerId>9c48578e-b514-4a7b-a286-b3d16ea20f2b</apl:issuerId>
<apl:issueDate>2017-12-07T14:55:00</apl:issueDate>
<apl:data>
<merc:getVetDocumentByUuidRequest>
<merc:localTransactionId>тr145500</merc:localTransactionId>
<merc:initiator>
<vd:login>mdp</vd:login>
</merc:initiator>
<bs:uuid>381bb91e-e4c8-4088-b265-7f5f5e4a6fe5</bs:uuid> <-- UUID имеющегося ВСД
<dt:enterpriseGuid>006a4d4b-82ba-4fbf-b947-c312df41b688</dt:enterpriseGuid> <-- GUID площадки
</merc:getVetDocumentByUuidRequest>
</apl:data>
</apl:application>
</apldef:submitApplicationRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Yoreg07


Зарегистрирован: 21/07/2016 06:41:02
Сообщений: 573
Оффлайн

bigmal wrote:Не могу получить ВСД по UUID. Ни в версии 1, ни в версии 2. Ошибка сервера 500, ругается на структуру XML.

Подскажите, пните в нужном направлении - не могу увидеть в чем ошибка (((

<SOAP-ENV:Envelope
xmlns:dt = "http://api.vetrf.ru/schema/cdm/dictionary/v2"
xmlns:bs = "http://api.vetrf.ru/schema/cdm/base"
xmlns:merc = "http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2"
xmlns:apldef = "http://api.vetrf.ru/schema/cdm/application/ws-definitions"
xmlns:apl = "http://api.vetrf.ru/schema/cdm/application"
xmlns:vd = "http://api.vetrf.ru/schema/cdm/mercury/vet-document/v2"
xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<apldef:submitApplicationRequest>
<apldef:apiKey>АпиКей</apldef:apiKey>
<apl:application>
<apl:serviceId>mercury-g2b.service:2.0</apl:serviceId>
<apl:issuerId>9c48578e-b514-4a7b-a286-b3d16ea20f2b</apl:issuerId>
<apl:issueDate>2017-12-07T14:55:00</apl:issueDate>
<apl:data>
<merc:getVetDocumentByUuidRequest>
<merc:localTransactionId>тr145500</merc:localTransactionId>
<merc:initiator>
<vd:login>mdp</vd:login>
</merc:initiator>
<bs:uuid>381bb91e-e4c8-4088-b265-7f5f5e4a6fe5</bs:uuid> <-- UUID имеющегося ВСД
<dt:enterpriseGuid>006a4d4b-82ba-4fbf-b947-c312df41b688</dt:enterpriseGuid> <-- GUID площадки
</merc:getVetDocumentByUuidRequest>
</apl:data>
</apl:application>
</apldef:submitApplicationRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Попробуйте убрать
<-- UUID имеющегося ВСД
<-- GUID площадки
bigmal


Зарегистрирован: 24/07/2017 07:58:49
Сообщений: 73
Оффлайн

В рабочем варианте этого ессно нету )) Это я написал здесь сугубо для информации.
Yoreg07


Зарегистрирован: 21/07/2016 06:41:02
Сообщений: 573
Оффлайн

Пример коммента в XML
<!--ваш текст-->
bigmal


Зарегистрирован: 24/07/2017 07:58:49
Сообщений: 73
Оффлайн

Yoreg07 wrote:Пример коммента в XML
<!--ваш текст-->


Спасибо )
Yoreg07


Зарегистрирован: 21/07/2016 06:41:02
Сообщений: 573
Оффлайн

Ну не знаю ... чисто синтаксически вроде XML верный
 
Индекс форума » Компонент МЕРКУРИЙ
Перейти:   

Powered by JForum 2.1.8 © JForum Team