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


Зарегистрирован: 30/05/2017 10:26:40
Сообщений: 19
Оффлайн

Если я правильно понял , то регистрация пользователей от имени ХС происходит в ветис.паспорт. при регистрации в ветис.меркурий , автоматически регистрируют в ветис.паспорт пользователя по заявке. Но права там урезаны , получается у меня нет прав на создание ХС в ветис.меркурий , и редактированию своих прав в ветис.паспорт.
VoditelKobyly


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

В системе много дублей записей в адресных классификаторах с разными GUIDами. Я правильно понимаю, что мы можем выбирать любую запись из понравившихся?
Zoeh


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

ИНН?
bigmal


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

Пытаюсь добавить площадку к уже имеющимся у данного ИП. Результат обработки заявки получаю положительный, но площадка не появляется. Уже пробовал в обоих версиях - 1 и 2.

Запрос на создание в версии 2. М.б. есть где-то ошибка? хотя раньше работало... М.б. что-то в самом сервисе не работает??

Адрес сервиса:https://api2.vetrf.ru:8002/platform/services/2.0/ApplicationManagementService
<?xml version="1.0" encoding="utf-8"?>
<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>apiKey</apldef:apiKey>
<apl:application>
<apl:serviceId>mercury-g2b.service:2.0</apl:serviceId>
<apl:issuerId>1dd6d645-0d9c-4376-aa85-a2d58dd37a96</apl:issuerId>
<apl:issueDate>2017-10-27T15:14:27</apl:issueDate>
<apl:data>
<merc:modifyBusinessEntityRequest>
<merc:localTransactionId>as01010101</merc:localTransactionId>
<merc:initiator>
<vd:login>login</vd:login>
</merc:initiator>
<merc:modificationOperation>
<vd:type>FIND_OR_CREATE</vd:type>
<vd:resultingList>
<dt:businessEntity>
<dt:type>3</dt:type>
<dt:fio>Почепко Николай Владимирович</dt:fio>
<dt:inn>550301094470</dt:inn>
<dt:juridicalAddress>
<dt:country>
<bs:guid>74a3cbb1-56fa-94f3-ab3f-e8db4940d96b</bs:guid>
</dt:country>
<dt:region>
<bs:guid>05426864-466d-41a3-82c4-11e61cdc98ce</bs:guid>
</dt:region>
<dt:locality>
<bs:guid>140e31da-27bf-4519-9ea0-6185d681d44e</bs:guid>
</dt:locality>
<dt:addressView>г.Омск, ул. 6 Шинная 10</dt:addressView>
</dt:juridicalAddress>
</dt:businessEntity>
</vd:resultingList>
<vd:reason>Оптовая торговля продуктами питания.</vd:reason>
</merc:modificationOperation>
</merc:modifyBusinessEntityRequest>
</apl:data>
</apl:application>
</apldef:submitApplicationRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
andpal


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

Вероятно этот код для 8-ки?
Даже если в 7-ке: Stream = СоздатьОбъект("ADODB.Stream");
все равно ругается на WinHttp.ResponseBody - Тип переменой не поддерживается.
bigmal wrote:
Я вот такой вариант нашёл.

Stream = Новый COMОбъект("ADODB.Stream");

Stream.Type = 1;
Stream.Mode = 3;

Stream.Open();
Stream.Write(WinHttp.ResponseBody);
Stream.SaveToFile("C:\1.zip", 2);
Stream.Close();
bigmal


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

andpal wrote:Вероятно этот код для 8-ки?
Даже если в 7-ке: Stream = СоздатьОбъект("ADODB.Stream");
все равно ругается на WinHttp.ResponseBody - Тип переменой не поддерживается.


Да, к сожалению так и есть, это для 8-ки. Я попробовал у себя на 7.7, получил такую же ошибку. Дальше не стал экспериментировать
ПользовательRex


Зарегистрирован: 06/06/2017 07:48:13
Сообщений: 38
Оффлайн

Такая конструкция в 7.7 вполне себе работает.

зп = "<soapenv:Envelope
...
|</soapenv:Envelope>";
об = СоздатьОбъект("MSXML2.XMLHTTP.6.0");
об.open("POST", ProductServicePath, 0, Login, Password);
об.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
SOAPAction="ws:getProductByGuidRequest";
об.setRequestHeader("SOAPAction", SOAPAction);
об.send(зп);
Если об.Status=200 Тогда

ОтветСервера=об.responseText;
Stream = СоздатьОбъект("Adodb.Stream");

//Stream.Type = 1;
//Stream.Mode = 3;
Stream.Charset = "utf-8";
Stream.Open();

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

Анализатор = СоздатьОбъект("AddIn.XMLParser");
XML = Анализатор.СоздатьДокумент();
Stream.Position = 0;
XML.Загрузить(Stream);
XML.Проверить();
Stream.Close();
КонецЕсли;

Это сообщение было редактировано 2 раз. Последнее обновление произошло в 29/11/2017 07:13:20

VoditelKobyly


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

bigmal Да, к сожалению так и есть, это для 8-ки. Я попробовал у себя на 7.7, получил такую же ошибку. Дальше не стал экспериментировать


Я же тебе в личку присылал работающий семерочный код.
Разве не получилось?
bigmal


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

VoditelKobyly wrote:
bigmal Да, к сожалению так и есть, это для 8-ки. Я попробовал у себя на 7.7, получил такую же ошибку. Дальше не стал экспериментировать


Я же тебе в личку присылал работающий семерочный код.
Разве не получилось?


Честно говоря - не пробовал, ибо ещё не столкнулся с проблемой. Но информация у меня зафиксирована В любом случае - тебе большое спасибо )

А пример выше попробовал именно из-за его краткости.
VoditelKobyly


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

Пример выше это кусок кода из моей программы.
VoditelKobyly


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

Вот ещё кусок, без которого семерочникам не обойтись при написании шлюза к Меркурию.
Решает проблему длинного ответа.
Когда добыл его в инете при поиске методов обмена с ЕГАИСом:

Попытка
ЗагрузитьВнешнююКомпоненту("OleExSup.dll");
OleExSup = СоздатьОбъект("OLEExSup");
Исключение
OleExSup = 0; // внешняя компонента не используется
Сообщить("Нет внешней компоненты OleExSup.dll");
КонецПопытки;

Stream = CreateObject("Adodb.Stream");
Stream.Charset = "utf-8";
Stream.Open();
Stream.LoadFromFile(пИмяФайла);

Если (Stream.Size>500000) И (OleExSup<>0) Тогда
OleExSup.InvokeOLEMethod(XML_Документ, "loadXML", Stream.readText());

ИначеЕсли Stream.Size>500000 Тогда
ТекстОшибки="Полученный файл XML слишком длинный...";
Возврат лРез;

Иначе

XML_Документ.loadXML(Stream.readText());
КонецЕсли;
VoditelKobyly


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

Анализатор = СоздатьОбъект("AddIn.XMLParser");

Лучше не использовать, та ещё штучка...
ПользовательRex


Зарегистрирован: 06/06/2017 07:48:13
Сообщений: 38
Оффлайн

Чем штучка не та?
Что лучше?
VoditelKobyly


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

Я делаю все через
XML_Документ = СоздатьОбъект("MSXML.DOMDocument");

Нет никаких проблем и работает быстрее.
bigmal


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

Честно сказать, в ЕГАИС-е не сталкивался с проблемой больших файлов. Наверное потому, что пользовался cUrl и DOM. ЕМНИП, то файлы остатков бывали по 2-3 Мб. Даже не замечал их объема.

Сейчас я ответ сервиса в файл не сохраняю, а сразу загружаю в DOM

ОтветСервиса=WinHttp.ResponseText();
DOMDocument.loadXML(ОтветСервиса);

если надо в файл сохранить, то

DOMDocument.save(ИмяФайлаОтвета);
 
Индекс форума » Автоматизированная система МЕРКУРИЙ
Перейти:   

Powered by JForum 2.1.8 © JForum Team