|
[Search] Поиск   [Recent Topics] Последние темы   [Hottest Topics] Горячие темы   [Members]  Список участников   [Groups] На главную страницу 
[Register] Регистрация / 
[Login] Вход 
Чудеса в API (Страны) КЭШ? Объясните, это как?  XML
Индекс форума » Компонент МЕРКУРИЙ
Автор Сообщение
ANIT

[Avatar]

Зарегистрирован: 09/09/2016 11:26:18
Сообщений: 196
От: Катерина Бакшеева
Оффлайн

"Если в Google написать Google то можно сломать интернет"©
В ходе отладки кода в 1С, наткнулась на любопытную штуку, которая сломала мне мозг на день. Оказалось дело не в 1С, а в сервере Меркурия.
Тестился блок записи ошибок в журнал регистрации. На тестовом сервере намеренно был отправлен некорректный запрос, а именно при вызове функции ПолучитьСтрануПоГУИДУ (getCountryByGuid) был передан UUID одного из элемента, а именно КНДР. Сервис благополучно возвратил ошибку в части того, что такая страна не найдена. ОК. После был запущен корректный запрос, тот же UUID но операция GetCountryByUUID. Каково же было удивление, когда и тут упорно система возвращала ошибку.
ОК. Проводим другой эксперимент подсовываем UUID другой страны, вызываем GetCountryByUUID, УСПЕШНО возвращает нужный элемент. НЕ МЕНЯЕМ UUID и вызываем getCountryByGuid передав его в качестве параметра. ВОЗВРАЩАЕТ ЭЛЕМЕНТ, хотя должен был вывалиться по ошибке.

Перелопатила 1С вдоль и поперек. Добралась до SOAP_UI. И вот он результат:

------------------------------------------------------------------------
Запрос:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://api.vetrf.ru/schema/cdm/registry/ws-definitions/v2" xmlns:base="http://api.vetrf.ru/schema/cdm/base">
<soapenv:Header/>
<soapenv:Body>
<v2:getCountryByUuidRequest>
<base:uuid>1f52fd35-5ee5-ecb3-b23c-2bf3897de0c0</base:uuid>
</v2:getCountryByUuidRequest>
</soapenv:Body>
</soapenv:Envelope>


Ответ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
<SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Fault>
<faultcode xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">soap-env:Server:BEA-380001</faultcode>
<faultstring>Requested entity not found</faultstring>
<faultactor>http://api.vetrf.ru:80/ikar/api/ikar/services/IkarService</faultactor>
<detail>
<ws:entityNotFoundFault xmlns:ws="http://api.vetrf.ru/schema/cdm/base/ws-definitions">
<base:message xmlns:base="http://api.vetrf.ru/schema/cdm/base">Country with uuid [1f52fd35-5ee5-ecb3-b23c-2bf3897de0c0] not found.</base:message>
</ws:entityNotFoundFault>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</soapenv:Envelope>

------------------------------------------------------------------------
Запрос:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://api.vetrf.ru/schema/cdm/registry/ws-definitions/v2" xmlns:base="http://api.vetrf.ru/schema/cdm/base">
<soapenv:Header/>
<soapenv:Body>
<v2:getCountryByGuidRequest>
<base:guid>2ca4d153-0e81-15d1-f7b3-78eba7e814ef</base:guid>
</v2:getCountryByGuidRequest>
</soapenv:Body>
</soapenv:Envelope>

Ответ:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
<SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<v2:getCountryByGuidResponse xmlns:bs="http://api.vetrf.ru/schema/cdm/base" xmlns:dt="http://api.vetrf.ru/schema/cdm/dictionary/v2" xmlns:v2="http://api.vetrf.ru/schema/cdm/registry/ws-definitions/v2">
<dt:country>
<bs:uuid>1f52fd35-5ee5-ecb3-b23c-2bf3897de0c0</bs:uuid>
<bs:guid>2ca4d153-0e81-15d1-f7b3-78eba7e814ef</bs:guid>

<bs:active>true</bs:active>
<bs:last>true</bs:last>
<bs:status>200</bs:status>
<bs:createDate>2012-09-03T09:48:36+04:00</bs:createDate>
<bs:updateDate>2012-09-03T09:48:36+04:00</bs:updateDate>
<bs:previous>0bff845e-c9b3-f4bd-4332-9d2c865ce93b</bs:previous>
<dt:name>Корея, Народно-Демократическая Республика</dt:name>
<dt:fullName>Корейская Народно-Демократическая Республика</dt:fullName>
<dt:englishName>North Korea</dt:englishName>
<dt:code>KP</dt:code>
<dt:code3>PRK</dt:code3>
</dt:country>
</v2:getCountryByGuidResponse>
</SOAP-ENV:Body>
</soapenv:Envelope>

------------------------------------------------------------------------
И еще интереснее

Запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://api.vetrf.ru/schema/cdm/registry/ws-definitions/v2" xmlns:base="http://api.vetrf.ru/schema/cdm/base">
<soapenv:Header/>
<soapenv:Body>
<v2:getCountryByUuidRequest>
<base:uuid>2ca4d153-0e81-15d1-f7b3-78eba7e814ef</base:uuid>

</v2:getCountryByUuidRequest>
</soapenv:Body>
</soapenv:Envelope>


Ответ:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
<SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<v2:getCountryByUuidResponse xmlns:bs="http://api.vetrf.ru/schema/cdm/base" xmlns:dt="http://api.vetrf.ru/schema/cdm/dictionary/v2" xmlns:v2="http://api.vetrf.ru/schema/cdm/registry/ws-definitions/v2">
<dt:country>
<bs:uuid>1f52fd35-5ee5-ecb3-b23c-2bf3897de0c0</bs:uuid>
<bs:guid>2ca4d153-0e81-15d1-f7b3-78eba7e814ef</bs:guid>

<bs:active>true</bs:active>
<bs:last>true</bs:last>
<bs:status>200</bs:status>
<bs:createDate>2012-09-03T09:48:36+04:00</bs:createDate>
<bs:updateDate>2012-09-03T09:48:36+04:00</bs:updateDate>
<bs:previous>0bff845e-c9b3-f4bd-4332-9d2c865ce93b</bs:previous>
<dt:name>Корея, Народно-Демократическая Республика</dt:name>
<dt:fullName>Корейская Народно-Демократическая Республика</dt:fullName>
<dt:englishName>North Korea</dt:englishName>
<dt:code>KP</dt:code>
<dt:code3>PRK</dt:code3>
</dt:country>
</v2:getCountryByUuidResponse>
</SOAP-ENV:Body>
</soapenv:Envelope>

------------------------------------------------------------------------

Шедеврально товарищи.
Теперь 2 вопроса:
1. Как вычистить кэш на Меркурианском сервере и вернуть нормальный результат после ошибочного? Стоит послать UUID в операцию получения по GUID и всё, операция получения по UUID не отрабатывает больше.
2. ЭТО ТАК ВО ВСЕХ СПРАВОЧНИКАХ И ЗАЯВКАХ РАБОТАТЬ БУДЕТ???




------------------------
"Тяжела и неказиста жизнь простого программиста."
mevgenym


Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312
Оффлайн

это ведь очень удобно - по гуид можно искать любой операцией
https://github.com/mevgenym/1c_vetis.api_v1.1
https://github.com/mevgenym/1c_vetis.api
ANIT

[Avatar]

Зарегистрирован: 09/09/2016 11:26:18
Сообщений: 196
От: Катерина Бакшеева
Оффлайн

mevgenym wrote:это ведь очень удобно - по гуид можно искать любой операцией

Вопрос не в том что по ГУИД искать любой операцией, а вопрос, что поиск по UUID сломался после первой же ошибки. Искал себе нормальненько, переслали ему GUID вместо UUID и всё, не работает больше поиск по UUID при передаче UUID.
------------------------
"Тяжела и неказиста жизнь простого программиста."
Владимир Игнатов


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

Т.е., в поле UUID указываешь GUID и оно так и работает.

"Леонид Ильич Брежнев принял французского посла за швейцарского и имел с ним долгую, продолжительную беседу."
Владимир Игнатов


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

Из описания именно так и получается: спросили по UUID, дав неверный UUID - ошибка. Спросили по UUID, дав правильный UUID - ошибка (потому, что система воспринимает данный ей UUID как GUID). Затем спросили по UUID, передав вместо него GUID - получили правильный ответ.

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 29/11/2017 12:48:12

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

Powered by JForum 2.1.8 © JForum Team