В данном руководстве описаны все необходимые действия, если необходимо загрузить курс ЦБ с сайта Центрального Банка на другую площадку без роли ЦБ и использовать иные соответствия, то есть исправить соответствия в xslt.

Пошаговое руководство

Для загрузки курса ЦБ на другую площадку необходимо выполнить следующие действия:

  1. Необходимо создать нового контрагента в Навигатор в справочнике, для которого необходимо загружать  курсы и добавить ему роль Биржа, ниже на скриншоте создан контрагент TEST_CB_COPY_RATE с идентификатором 178274
  2. Для контрагента, что создан в пункте выше, необходим код режима торгов для поиска нужной секции биржи и режима торгов для котировок. 

    Для этого необходимо создать новую секцию биржи с произвольным названием и выбрав её, добавить новый код режима торгов MAIN, а так же установить чекбокс "Загружать рыночные котировки", ниже на скриншоте данные действия отмечены как 1. и 2.

  3. Для внешней системы, алиас которой будет использоваться для поиска данного владельца-контрагента (TEST_CB_COPY_RATE), необходимо установить идентификатор данного контрагента. В системе зарезервированы специальные внешние системы для подобных целей InternalBank (InternalBank0..InternalBank9), в примере будет использоваться InternalBank9.

    Система InternalBankN может быть уже зарезервирована для иного контрагента и использоваться для решения других задач, убедитесь что owner_id у выбранной системы пуст

    Устанавливаем владельца для системы InternalBank9 (можно использовать другую систему, но это потребуют исправления xslt что приложено ниже):

    update resman.ext_systems set owner_id = 178274 where (id = 129 or SYSTEM_ALIASE = 'InternalBank9') and OWNER_ID IS NULL; 
    commit;
  4. В справочнике кодов, для контрагента TEST_CB_COPY_RATE и внешней системы InternalBank9 необходимо создать и завести новый тип кода и коды инструментов:
  5. В SWLoader`е необходимо добавить новое xslt, для запроса текущего курса можно воспользоватся готовым XSLT InternalBank9.xslt. Для запроса исторического курса InternalBank9_dynamic.xslt Или создать xslt под свои нужды воспользовавшись исходным xslt CBRToStore.xslt, CBRToStore_dynamic.xslt, добавив нужного контрагента в параметры MARKET_SHORT, MARKET_NAME для примера в данной статье указать InternalBank9, для параметров TRADING_PLACE_SHORT, TRADING_PLACE_NAME для настроенных кодов указать MAIN, для параметров BID, ASK, OFFER, если требуется заполнять, можно использовать блоки аналогичные заполнению CLOSE_PRICE. 
    Добавив в параметр XML = в конфигурационном файле SWLoader.ini новое xslt преобразование (или несколько), что выше:

    XML = CBRToStore.xslt,InternalBank9.xslt,InternalBank9_dynamic.xslt

    Сохранить изменения, после чего перезапустить SWLoader.

  6. В SWLoader`е создать новое правило для загрузки, выбрав новое xslt InternalBank9.xslt или InternalBank9_dynamic.xslt (для динамического курса)
  7. Выполнить данное правило, котировки должны появиться в KIP, в чём можно убедится запросом:

    SELECT '==trading_palces->===',tp.*,'==quotation->===', eh.*, '==instr->===',
      ei.*, '===markets->===',em.*
    FROM KIP.EXQ_HISTORY eh,
      KIP.EXQ_INSTRUMENTS ei,
      KIP.EXQ_TRAIDING_PLACES tp,
      KIP.EXQ_MARKETS em
    WHERE ei.INSTRUMENT_ID = eh.C$INSTRUMENT and
    ei.trading_place_id = tp.traiding_place_id and
    tp.MARKET_PLACE_ID = em.MARKET_PLACE_ID
    --and ei.instrument_short = 'LKOH'
    and C$DATE>=trunc(sysdate)--(eh.c$date = to_date('14.10.14','dd.mm.yy') or eh.c$date = to_date('07.11.14','dd.mm.yy'))
    and em.MARKET_SHORT = 'InternalBank9'
    order by eh.c$date, ei.INSTRUMENT_ID;
  8. Убедиться что котировки отправились в навигатор, для диагностики можно воспользоваться статьей Котировки не загружаются в справочник Рынок Навигатора. Как диагностировать проблему?
  9. Если котировки появились в KIP и успешно отправились, их можно будет обнаружить в справочнике рынок, возможно потребуется обновить данные


Похожие статьи