Версия для печати темы (https://pro1c.org.ua/index.php?s=ba34c824867e5c5a6083fd58611796e0&showtopic=13673)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Наши сервисы _ Загрузка межбанковского курса валют в 1С

Автор: Vofka 04.08.13, 19:13

Сервис больше не поддерживается.

Привет!

Представляю вашему вниманию новый сервис smile.gif . Суть его из названия темы должна быть понятна. Сервис доступен по адресу: https://pro1c.org.ua/services/interbank_rate/out.php. Сейчас работаем с 3 валютами: доллар, евро и рубль. Другие валюты на текущий момент добавлять не планирую.

На данный момент доступны 2 операции с сервисом (в будущем, возможно, будет больше):

  1. Получение, собственно, курса валют. Чтобы обратиться к сервису, необходимо обратиться к операции getCourse, указав 3 параметра: МФО банка, код валюты в международном формате и дату. Например, я хочу получить курс доллара по приватбанку на 02.08.2013. Для этого мне нужно обратиться к сервису таким образом:

    _http://pro1c.org.ua/services/interbank_rate/out.php?operation=getCourse&mfo=305299&code=840&date=20130802

    Первый параметр operation=getCourse говорит о том, что нужно получить информацию по курсам валют. Второй и третий параметр - это МФО банка и код валюты, в общем, тут комментарии излишне. Последний параметр - дата в формате ГодМесяцЧисло.
    [Добавлено 22.12.2013] Параметр mfo можно не указывать. В таком случае будет выведена информация по всем доступным банкам. Курс может меняться несколько раз в день, поэтому может быть ситуация, когда по одному и тому же банку будут разные курсы. Что с этим делать - решается на стороне вызывающей программы: выбрать последний; выбрать максимальный/минимальный; выбрать средний; и т.п.

  2. Для того, чтобы получить информацию о том, по каким банкам можно получить курс на текущий момент, необходимо обратиться к сервису так:

    _http://pro1c.org.ua/services/interbank_rate/out.php?operation=checkLoad&code=840

    Операция checkLoad, code = код валюты в международном формате.


На выходе вы получите XML, который можно обрабатывать как душе угодно. Так же XML вы получите в случае ошибки. Я старался делать описание ошибок понятным, так что, надеюсь, разберетесь. Если не разберетесь - спрашивайте.

Курс валют на выходной день может отсутствовать.


Представляю вашему вниманию 2 обработки.


Вышеуказанные конфигурации - это конфигурации для Украины. Не исключено, что для Российских аналогов обработка тоже будет работать. Но это не проверялось. Кто пишет на 7.7, можете написать и выложить обработку работы с типовыми семерочными конфигурациями и пользователи семерки вам будут благодарны за это wink.gif .

Вроде бы все, что хотел сказать я сказал. Если что-то забыл - буду обновлять первый пост и сигнализировать об этом в данной теме.

Сервис находится в бета-стадии, поэтому большая просьба отписывать об обнаруженных ошибках. Так же просьба отписывать, если ошибок не обнаружено и заявленный функционал отрабатывает нормально. Предложения и пожелания принимаются. Если будут интересные предложения по улучшению функционала - пишите и если это будет действительно интересно и технически нормально реализуемо - сервис будет наращивать функционал.

Сервис загрузки курса валют НБУ: https://pro1c.org.ua/index.php?showtopic=415

Автор: Vofka 12.08.13, 18:41

Готовы обработки для работы с типовыми Украинскими конфигурациями. Первый пост обновлен. Пароль стандартный. Просьба отписаться, кто попробует сервис в работе. Предложения и пожелания так же высказывайте. Ещё тем кому сервис интересен - советую подписаться на тему, что бы быть в курсе всех новостей, изменений и обновлений.

Автор: olegbilas 15.08.13, 17:52


 ! 

Правила, п.13
 


За разработку автору большое спасибо, однако, по моему мнению, официальный курс НБУ был бы более востребованным, так как исходя именно из такого курса бухгалтера пересчитывают валюту в гривны на дату баланса или на дату покупки-продажи валюты в бухгалтерском и налоговом учете.

Автор: Vofka 15.08.13, 18:51

olegbilas, http://pro1c.org.ua/index.php?showtopic=415

Автор: Nitrochaos 04.10.13, 3:37

перехожу по ссылке, а в ответ это:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<InterbankCurrencyRate>
<status>TRUE</status>
<response>
<purchase>8.11</purchase>
<sale>8.15</sale>
</response>
</InterbankCurrencyRate>

Автор: Vofka 04.10.13, 7:57

Nitrochaos, ну и?

Автор: logist 09.12.13, 16:41

А как насчет варианта который будет отдавать сразу информацию по всем банкам? Смысл - мне нужен средний курс (ну или даже информация по большей части банков), а получать список банков, потом по каждому делать запрос как-то не кошерно smile.gif

Автор: Vofka 09.12.13, 17:10

logist, на данный момент такой возможности нету. А для каких целей это надо, если не секрет?

Автор: logist 09.12.13, 17:56

Цитата(Vofka @ 09.12.13, 18:10) http://pro1c.org.ua/index.php?act=findpost&pid=78958
logist, на данный момент такой возможности нету

Можешь дать out.php я посмотрю на него, и сделаю такой вариант.

Автор: Vofka 09.12.13, 21:33

Цитата(logist @ 09.12.13, 17:56) *
Можешь дать out.php я посмотрю на него, и сделаю такой вариант.

Если обладаешь достаточными навыками в пхп, могу предложить написать свой сервис, опубликую специально для тебя smile.gif . И зная из чего состоит этот веб-сервис, скажу, что out.php тебе ровным счетом ничего не даст, а всю систему я не дам bk.gif . Я не обещаю, но постараюсь сделать то, что ты просишь до НГ.

Автор: logist 10.12.13, 10:46

Цитата(Vofka @ 09.12.13, 22:33) http://pro1c.org.ua/index.php?act=findpost&pid=78973
могу предложить написать свой сервис

Можешь просто сказать откуда берешь информацию для своей базы wink.gif Может мне проще будет оттуда взять то, что мне надо.

Цитата(Vofka @ 09.12.13, 22:33) *
Я не обещаю, но постараюсь сделать то, что ты просишь до НГ.

А сколько стоит, что бы пообещал? wink.gif

Автор: Vofka 22.12.13, 14:16

logist, доработал сервис. Обновил в первом посте описание.

Автор: group_aprel 22.05.14, 11:39

Добрый день, а какой у вас "стандарный" пароль? smile.gif

Автор: Vofka 22.05.14, 11:41

group_aprel, в правилах сказано.

Автор: Rurikovi4 23.11.15, 18:07

Vofka, такой вопрос. Если я хочу выбрать информацию по днях начиная с 13-го года, не обрубает ли меня сервер на n-ном запросе?

Автор: Rurikovi4 26.11.15, 13:16

Цитата(Vofka @ 04.08.13, 19:13) *
Кто пишет на 7.7, можете написать и выложить обработку работы с типовыми семерочными конфигурациями и пользователи семерки вам будут благодарны за это wink.gif .


Дам код получения курса на дату. В принципе, для любого програмиста там все понятно.

Передаваемая переменная "Дт" - это дата получения курсов

 
    Попытка
        Соединение = СоздатьОбъект("Addin.V7HttpReader");
    Исключение
        Сообщить("Не удалось создать объект Addin.V7HttpReader!");
    КонецПопытки;
    
    Валюта ="840";
    МФО = "305299";
    //Дт - переменная с датой для получения курсов
    Если СтрДлина(МФО)<6 Тогда
    ТекстСсылки = "http://pro1c.org.ua/services/interbank_rate/out.php?operation=getCourse&code="+Строка(Валюта)+"&date="+Строка(СокрЛП(Формат(Дт,"Д ГГГГММДД")));
    Иначе
    ТекстСсылки = "http://pro1c.org.ua/services/interbank_rate/out.php?operation=getCourse&mfo="+Строка(МФО)+"&code="+Строка(Валюта)+"&date="+Строка(СокрЛП(Формат(Дт,"Д ГГГГММДД")));
    КонецЕсли;
    
    
    стр = "";
    Попытка
        Ошибка = 0;
        Соединение.ПолучитьКакСтроку(ТекстСсылки, Стр);
    Исключение
        Сообщить("Неудачная попытка соединения. Курсы по валюте """ + Валюта +""" не загружены.");
        Ошибка = 1;
    КонецПопытки;
    
    КурсПокупки=0;
    КвоКурсовПокупки=0;
    КурсПродажи=0;
    КвоКурсовПродажи=0;
    Стр1 = "";
    Стр2 = "";
    
    Для к=1 по СтрКоличествоСтрок(Стр) Цикл
        Перебор  = СтрПолучитьСтроку(Стр,к);
        //Сообщить(Перебор);
        Если СтрЧислоВхождений(Перебор,"purchase")>0 Тогда
            Стр1 = СтрЗаменить(Перебор,"<purchase>","");
            Стр2 = СтрЗаменить(Стр1,"</purchase>","");
            КурсПокупки = КурсПокупки + Число(СокрЛП(Стр2));
            КвоКурсовПокупки = КвоКурсовПокупки+1;
            Стр1 = "";
            Стр2 = "";
        КонецЕсли;    
        Если СтрЧислоВхождений(Перебор,"sale")>0 Тогда
            Стр1 = СтрЗаменить(Перебор,"<sale>","");
            Стр2 = СтрЗаменить(Стр1,"</sale>","");
            КурсПродажи = КурсПродажи + Число(СокрЛП(Стр2));
            КвоКурсовПродажи = КвоКурсовПродажи+1;
            Стр1 = "";
            Стр2 = "";
        КонецЕсли;    
    КонецЦикла;    
    
    Если КвоКурсовПокупки>0 Тогда  
        // Средний курс покупки
        Сообщить("Покупка "+Строка(КурсПокупки/КвоКурсовПокупки));
    КонецЕсли;    
    Если КвоКурсовПродажи>0 Тогда
        // Средний курс продажи
        Сообщить("Продажа "+Строка(КурсПродажи/КвоКурсовПродажи));
    КонецЕсли;


Автор: Vofka 26.11.15, 13:20

Rurikovi4, я забыл разобраться с вашим предыдущем сообщением. Вопрос ещё актуальный?

Автор: Rurikovi4 26.11.15, 13:39

Цитата(Vofka @ 26.11.15, 13:20) *
Rurikovi4, я забыл разобраться с вашим предыдущем сообщением. Вопрос ещё актуальный?

Да, если не затруднит.

Автор: Vofka 26.11.15, 13:59

Rurikovi4, попробуйте помесячно выбирать. Я думаю, проблем не будет.

Автор: Vofka 14.11.19, 10:00

Сервис больше не поддерживается.

Автор: pablo 14.11.19, 10:16

Обнови, пожалуйста, первый пост.

Автор: Vofka 14.11.19, 10:38

Готово.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua