Страница 3 из 7

Работа с Меркурием

Добавлено: 16 Июнь 2019, 9:28
Игорь Столяров
Дед Пахом писал(а): 16 Июнь 2019, 9:05В 2019-м, я смотрю, не все ещё и про XPath слышали.
Слышали. :) А как его из Clarion использовать-то ?
Идти по пути генерации и запуска скриптов - ну совсем не хочется … :(
Я использую штатный Clarion XML, а он о таком не знает.

Работа с Меркурием

Добавлено: 16 Июнь 2019, 9:46
finsoftrz
Игорь Столяров писал(а): 16 Июнь 2019, 9:28
Дед Пахом писал(а): 16 Июнь 2019, 9:05В 2019-м, я смотрю, не все ещё и про XPath слышали.
Слышали. :) А как его из Clarion использовать-то ?
Идти по пути генерации и запуска скриптов - ну совсем не хочется … :(
Я использую штатный Clarion XML, а он о таком не знает.
Может, зря не хочется. При их использовании вопросов практически не возникает никаких. Даже если что-то замороченное нужно, гуглим, всегда находится готовый пример. При наличии объектного интерфейса кода в программе минимум. И работает всегда и сразу. Это важно, когда время реагирования на возникающие потребности сжато.

Работа с Меркурием

Добавлено: 16 Июнь 2019, 9:51
finsoftrz
Пример загрузки накладной из Егаис. Без марок. Марки дополнительно грузятся, там кода побольше.

Код: Выделить всё

  fsXmlPar.init(Loc:NameTmp,Loc:NameVbsTmp,Loc:NameOutTmp)
  fsXmlPar.EgaisNameSpace(3,0)
  fsXmlPar.LoadGroupNS('//ns:Document/ns:WayBill_v3/wb:Header','lor:group',lor:group)    !реквизиты шапки накладной
  fsXmlPar.LoadGroupNS('//ns:Document/ns:WayBill_v3/wb:Header/wb:Shipper','lor:group',lor:group)
  fsXmlPar.LoadQueueNS('//ns:Document/ns:WayBill_v3/wb:Content/wb:Position','lor:queue',lor:queue)  !строки накладной
  fsXmlPar.MakeScript(1)
  if fsXmlPar.ErrorCode<>0
     FsMessagePr('Ошибка! ' & clip(fsXmlPar.ErrorMessage))
     lor:err=1
  .
  fsXmlPar.kill

Работа с Меркурием

Добавлено: 16 Июнь 2019, 10:07
Игорь Столяров
finsoftrz писал(а): 16 Июнь 2019, 9:46Может, зря не хочется.
Я всё - пробил дно. Сделал запрос на получение списка ВСД - всё COMPLETED, но в тестовом контуре нет данных.
А в продуктивном контуре - нет пока доступа к Ветис.API ... :( Значит получается, что у солдата выходной … ;)

Работа с Меркурием

Добавлено: 17 Июнь 2019, 6:02
Игорь Столяров
finsoftrz писал(а): 14 Июнь 2019, 22:11Запрос стран для рабочего контура (важно правильно указать адреса в 2-3 строках):
А можно попросить Вас показать такой же пример XML запроса для списка регионов по стране ?
Потому, что пример на сайте Ветис.API нерабочий, похоже как и всё, что связно с ИКАР. :(

Код: Выделить всё

        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
                          xmlns:ws="http://api.vetrf.ru/schema/cdm/ikar/ws-definitions" 
                          xmlns:base="http://api.vetrf.ru/schema/cdm/base" 
                          xmlns:ikar="http://api.vetrf.ru/schema/cdm/ikar">
          <soapenv:Header/>
          <soapenv:Body>
            <ws:getRegionListByCountryRequest>
              <base:listOptions>
                <base:count>3</base:count>
                <base:offset>0</base:offset>
              </base:listOptions>
              <ikar:countryGuid>f133f1fd-7fa2-da91-d069-24df64749742</ikar:countryGuid>
            </ws:getRegionListByCountryRequest>
          </soapenv:Body>
        </soapenv:Envelope>

Работа с Меркурием

Добавлено: 17 Июнь 2019, 7:53
finsoftrz
Для какого контура? В тестовом и рабочем они слегка разные.

Работа с Меркурием

Добавлено: 17 Июнь 2019, 7:56
finsoftrz
Для тестового:

Код: Выделить всё

  fsFileMakerL.AddOutLine('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"')
  fsFileMakerL.AddOutLine('                  xmlns:ws="http://api.vetrf.ru/schema/cdm/ikar/ws-definitions"')
  fsFileMakerL.AddOutLine('                  xmlns:base="http://api.vetrf.ru/schema/cdm/base"')
  fsFileMakerL.AddOutLine('                  xmlns:ikar="http://api.vetrf.ru/schema/cdm/ikar">')
  fsFileMakerL.AddOutLine('  <soapenv:Header/>')
  fsFileMakerL.AddOutLine('  <soapenv:Body>')
  fsFileMakerL.AddOutLine('    <ws:getDistrictListByRegionRequest>')
  fsFileMakerL.AddOutLine('      <base:listOptions>')
  fsFileMakerL.AddOutLine('        <base:count>100</base:count>')
  fsFileMakerL.AddOutLine('        <base:offset>' & Loc:Sm & '</base:offset>')
  fsFileMakerL.AddOutLine('      </base:listOptions>')
  fsFileMakerL.AddOutLine('      <ikar:regionGuid>' & clip(Loc:GUIDParent) & '</ikar:regionGuid>')
  fsFileMakerL.AddOutLine('    </ws:getDistrictListByRegionRequest>')
  fsFileMakerL.AddOutLine('  </soapenv:Body>')
  fsFileMakerL.AddOutLine('</soapenv:Envelope>')

Работа с Меркурием

Добавлено: 17 Июнь 2019, 7:57
finsoftrz
Для рабочего:

Код: Выделить всё

  
  fsFileMakerL.AddOutLine('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"')
  fsFileMakerL.AddOutLine('                  xmlns:ws="http://api.vetrf.ru/schema/cdm/registry/ws-definitions/v2"')
  fsFileMakerL.AddOutLine('                  xmlns:base="http://api.vetrf.ru/schema/cdm/base"')
  fsFileMakerL.AddOutLine('                  xmlns:ikar="http://api.vetrf.ru/schema/cdm/dictionary/v2">')
  fsFileMakerL.AddOutLine('  <soapenv:Header/>')
  fsFileMakerL.AddOutLine('  <soapenv:Body>')
  fsFileMakerL.AddOutLine('    <ws:getRegionListByCountryRequest>')
  fsFileMakerL.AddOutLine('      <base:listOptions>')
  fsFileMakerL.AddOutLine('        <base:count>100</base:count>')
  fsFileMakerL.AddOutLine('        <base:offset>' & Loc:Sm & '</base:offset>')
  fsFileMakerL.AddOutLine('      </base:listOptions>')
  fsFileMakerL.AddOutLine('      <ikar:countryGuid>' & clip(Loc:GUIDParent) & '</ikar:countryGuid>')
  fsFileMakerL.AddOutLine('    </ws:getRegionListByCountryRequest>')
  fsFileMakerL.AddOutLine('  </soapenv:Body>')
  fsFileMakerL.AddOutLine('</soapenv:Envelope>')
  

Работа с Меркурием

Добавлено: 17 Июнь 2019, 8:18
Игорь Столяров
Спасибо ! Сразу пошла вода в хату … :)

Я смутно догадывался, что какая-то засада с xmlns:ikar="хттп://api.vetrf.ru/schema/cdm/ikar",
но подобрать нужное объявление вчера не смог за весь вечер … :(

Работа с Меркурием

Добавлено: 17 Июнь 2019, 8:35
finsoftrz
Когда сервер возвращает ошибку, там может быть полезная информация.

Работа с Меркурием

Добавлено: 17 Июнь 2019, 8:50
Игорь Столяров
finsoftrz писал(а): 17 Июнь 2019, 8:35Когда сервер возвращает ошибку, там может быть полезная информация.
Та я ошибки смотрю, конечно … Но когда берёшь пример запроса с сайта производителя (икона !) и он глючит -
то начинаешь конечно искать проблемы в своём коде. Вы заменили два объявления в шапке запроса, я смотрел WSDL
и не нашёл там такого … :( Вот откуда оно ?

Работа с Меркурием

Добавлено: 17 Июнь 2019, 9:17
finsoftrz
На форумах еще много обсуждений. Кто-то и примеры выкладывает. Беда у всех одна. Времени, конечно, такой серфинг много отнимает...

Работа с Меркурием

Добавлено: 17 Июнь 2019, 11:34
Игорь Столяров
Классическое лоббирование. Протолкнули закон на обязаловку, теперь все должны.
Есть несколько крупных разработчиков, которые получают инфу, заказывают специалистов, оплачивают консультации и
командировки (в столицу), отели, досуг, подарки, конверты для шефа. Это как раз был мой сектор, когда в молодости работал в банке.
Остальные долбятся с негодными примерами и барахтаются по форумам как хотят … :(

Работа с Меркурием

Добавлено: 17 Июнь 2019, 12:11
finsoftrz
Я тоже 4 года в банке отработал. С 1994 по 1998. Вначале один в отделе был, потом еще 4 женщин дали. Стало много тяжелее. Разруливать их вечные женские дрязги между отделами. А потом ушел в свободный полет.

Работа с Меркурием

Добавлено: 19 Июнь 2019, 19:37
Игорь Столяров
Таки выяснилось, что хитрый Меркурий не хочет отдавать более 1000 записей на любой запрос … :(
Ну значит одной задачей меньше - не надо проверять и тестировать парсинг на больших XML файлах. :)