Вход | Регистрация
 
Информационные технологии :: Как страшно жить

РБК подставил, выдал неверные курсы валют :(

РБК подставил, выдал неверные курсы валют :(
Я
   Fragster
 
29.12.20 - 10:54
   mave13
 
1 - 29.12.20 - 10:57
Аналогично
   ptiz
 
2 - 29.12.20 - 11:05
Вчерашние курсы подсунули?
   ptiz
 
3 - 29.12.20 - 11:10
Может, они неправильно поняли указание о "заморозке цен"? :)
   mave13
 
4 - 29.12.20 - 11:17
(2) ага
   Волшебник
 
5 - 29.12.20 - 11:26
Никогда такого не было и вот опять...

Курсы надо грузить от первоисточника - Центробанка России.
Если оттуда не грузится, то от РБК и обязательно проверять вручную.
   Fragster
 
6 - 29.12.20 - 11:30
(5) в старых БСП грузится с этого ресурса, в более новых - с ИТС или с этого ресурса
   kzot
 
7 - 29.12.20 - 11:31
(5) было и раньше, научили...

а если у Центробанка неверно ? )
   Fragster
 
8 - 29.12.20 - 11:59
(7) у центробанка вот с этого: https://www.cbr.ru/development/DWS/
получается полная шляпа:
https://i.imgur.com/JKgk8pW.png
   Fragster
 
9 - 29.12.20 - 11:59
в ответ вместо данных приходит схема данных ответа
   Волшебник
 
10 - 29.12.20 - 12:06
(7) Вероятность очень мала. Даже если у Центробанка вдруг будет техническая ошибка, то есть вероятность, что её узаконят где-то в недрах ЦБ.
   ptiz
 
11 - 29.12.20 - 12:21
(8)



Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    ТекстОшибки = "";
    ПроксиВебСервиса = ПолучитьНовыйПроксиВебСервисаКурсовВалютЦБ(ТекстОшибки);
    
    Если ЗначениеЗаполнено(ТекстОшибки) Тогда
        Сообщить(ТекстОшибки);
        Возврат;
    КонецЕсли;

    // курсы
    ДатаСтрокой = Формат(ДатаКурса, "ДФ=yyyy-MM-ddTHH:mm:ss");
    
    ТипWSПараметра = ПроксиВебСервиса.ФабрикаXDTO.Пакеты.Получить("http://web.cbr.ru/").Получить("GetCursOnDateXML";);
    WSПараметр = ПроксиВебСервиса.ФабрикаXDTO.Создать(ТипWSПараметра);    
    
    WSПараметр.On_date = ДатаСтрокой;
    
    
    Попытка
        СтрокаОтвета = ПроксиВебСервиса.GetCursOnDateXML(WSПараметр);
    Исключение
        ТекстОшибки = "Ошибка веб-сервиса: " + ОписаниеОшибки();
    КонецПопытки;
    
    Если ЗначениеЗаполнено(ТекстОшибки) Тогда
        Сообщить(ТекстОшибки);
    Иначе
        //Сообщить(СтрокаОтвета);
        
        Для каждого Элемент Из СтрокаОтвета.GetCursOnDateXMLResult.ValuteData.ValuteCursOnDate Цикл
        
            Сообщить(СокрЛП(Элемент.Vname) + " - " + СокрЛП(Элемент.Vcurs));
        
        КонецЦикла;
    КонецЕсли;
        
    
КонецПроцедуры


Функция ПолучитьНовыйПроксиВебСервисаКурсовВалютЦБ(ТекстОшибки = "", ТаймАут = 5) Экспорт
    
    Пользователь = "";
    Пароль = "";
    
    ОпределениеСервиса = Неопределено;
    
    АдресВебСервиса = "http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL";;
    
    ТекстОшибки = "";
    Попытка
        ОпределениеСервиса = Новый WSОпределения(АдресВебСервиса, Пользователь, Пароль, ТаймАут);
    Исключение
        ТекстОшибки = ОписаниеОшибки();
        ОпределениеСервиса = Неопределено;
    КонецПопытки;
    
    Если ОпределениеСервиса = Неопределено Тогда
        ТекстОшибки = ТекстОшибки + ?(ТекстОшибки = "", "", Символы.ПС) + "Не удалось получить определение веб-сервиса";
        Возврат Неопределено;
    КонецЕсли;
    
    Попытка
        Сервис = ОпределениеСервиса.Сервисы[0];
        Прокси = Новый WSПрокси(ОпределениеСервиса, Сервис.URIПространстваИмен, Сервис.Имя, Сервис.ТочкиПодключения[0].Имя, ТаймАут);
        Прокси.Пользователь = Пользователь;
        Прокси.Пароль = Пароль;
    Исключение
        ТекстОшибки = ОписаниеОшибки();
        ОпределениеСервиса = Неопределено;
        Прокси = Неопределено;
    КонецПопытки;

    Если Прокси = Неопределено Тогда
        ТекстОшибки = ТекстОшибки + ?(ТекстОшибки = "", "", Символы.ПС) + "Не удалось получить прокси веб-сервиса";
        Возврат Неопределено;
    КонецЕсли;
    
    Возврат Прокси;
    
КонецФункции


Процедура ПриОткрытии()
    
    ДатаКурса = ТекущаяДата();
    
КонецПроцедуры
   Fragster
 
12 - 29.12.20 - 12:26
(11) уже сделал так:

Адрес = "https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL";;

Определение = Новый WSОпределения(Адрес);

Сервис = Определение.Сервисы[Определение.Сервисы.Количество() - 1];

ПространствоИмен = Сервис.URIПространстваИмен;
ТочкаПодключения = Сервис.ТочкиПодключения[Сервис.ТочкиПодключения.Количество() - 1];

Прокси = Новый WSПрокси(Определение, ПространствоИмен, Сервис.Имя, ТочкаПодключения.Имя);
Фабрика = Определение.ФабрикаXDTO;

Тип = Фабрика.Тип(ПространствоИмен, "EnumValutes");
Параметр = Фабрика.Создать(Тип);
Результат = Прокси.EnumValutes(Параметр);
СписокВалют = Результат.EnumValutesResult.diffgram.ValuteData.EnumValutes;

Для каждого СтрокаВалют Из СписокВалют Цикл
    Если СтрокаВалют.Получить("VcharCode") = "EUR" Тогда
        КодВалюты = СокрЛП(СтрокаВалют.Vcode);
        Прервать;
    КонецЕсли;
КонецЦикла;


Тип = Фабрика.Тип(ПространствоИмен, "GetCursDynamic");
//Тип = Фабрика.Тип(ПространствоИмен, "GetCursDynamicXML");
Параметр = Фабрика.Создать(Тип);
Параметр.FromDate = НачалоДня(ТекущаяДата() - 5*86400);
Параметр.ToDate = НачалоДня(ТекущаяДата());
Параметр.ValutaCode = КодВалюты;

Результат = Прокси.GetCursDynamic(Параметр);
//Результат = Прокси.GetCursDynamicXML(Параметр);

Курсы = Результат.GetCursDynamicResult.diffgram.ValuteData.ValuteCursDynamic

Для каждого СтрокаКурсов Из Курсы Цикл
    
КонецЦикла;
   Fragster
 
13 - 29.12.20 - 12:26
у них свои коды прост. + ответ они отдают неправильный, из-за которого он AnyType
   Fragster
 
14 - 29.12.20 - 12:27
и надо что влечет некоторое количество кода на преобразование список-объект и строк в числа идаты
   Fragster
 
15 - 29.12.20 - 12:32
как-то так:
Курсы = Результат.GetCursDynamicResult.diffgram.ValuteData.ValuteCursDynamic;

Если ТипЗнч(Курсы) <> Тип("СписокXDTO") Тогда
    ТМП = Новый Массив;
    ТМП.Добавить(Курсы);
    Курсы = ТМП;
КонецЕсли;
Для каждого СтрокаКурсов Из Курсы Цикл
    Дата = XMLЗначение(Тип("Дата"), СтрокаКурсов.CursDate);
    Курс = XMLЗначение(Тип("Число"), СтрокаКурсов.Vcurs);
    Кратность = XMLЗначение(Тип("Число"), СтрокаКурсов.Vnom);
КонецЦикла;
   Fragster
 
16 - 29.12.20 - 12:32
+ оно с пропусками дат (в отличии от РБК)
   Оболтус
 
17 - 29.12.20 - 12:40
РБК чинить-то собирается?
   ДенисЧ
 
18 - 29.12.20 - 12:45
(17) Сейчас пообедаем и будем чинить. Иншалла починим...
   kzot
 
19 - 29.12.20 - 13:13
(18) не поел ещё ? цб курс выдало на 30.12  90,2074
   ДенисЧ
 
20 - 29.12.20 - 13:15
(19) Я же сказал - иншалла...
   kzot
 
21 - 29.12.20 - 14:19
(17) уже поправили.

(20) свинину ел что ли ?
   ДенисЧ
 
22 - 29.12.20 - 14:20
(21) Ты хочешь оскорбить чувства свиноедов или свиней?
   Оболтус
 
23 - 29.12.20 - 14:36
Да, поправили. Наконец-то.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.