Цитата:
Сообщение от
Ильдар
А скажите, пожалуйста, в каком месте кода это

Наверно речь идет о методе \Classes\ExchangeRateProviderCBRF_RU\getExchangeRatesFromService
строка 64:
X++:
currencyPair.parmToCurrency(#RUB);
Код смотрел в DAX 2012 R2 CU7.
Честно говоря, я не очень понял в чем суть проблемы. Какая прога засылала "Руб" вместо RUB?
Импорт курсов валют ни никуда не "засылает" Руб или RUB. Единственно, что он "засылает" - это дату, за которую необходимо получить курсы. Получив от ЦБ курсы валют на дату, импорт курсов сохраняет курсы в таблице. Поиск соответствий кодов валют происходит по currency.CurrencyCodeISO в методе \Classes\ExchangeRateImportOperation\saveRates(43)
X++:
toCurrency = Currency::findCurrencyCodeISO(externalCurrencyPair.parmToCurrency());
Т.е. для российского импорта курсов валют "To Currency" всегда будет валюта, у которой ISO код - RUB.
Если говорить про "From Currency", то в отличие от других провайдеров, в российском From Currency ищется по двум полям или CurrencyCode или CurrencyCodeISO:
Метод \Classes\ExchangeRateProviderCBRF_RU\getExchangeRatesFromService(46)
X++:
select CurrencyCode from fromCurrency
where fromCurrency.CurrencyCode == cbCurrencyCode
|| fromCurrency.CurrencyCodeISO == cbCurrencyCode;
...
if (fromCurrency)
{
currencyCode = fromCurrency.CurrencyCode;
}
else
{
currencyCode = cbCurrencyCode;
}
и тут уже валюта ищется по коду:
\Classes\ExchangeRateImportOperation\saveRates(31)
X++:
// Get the internal currency code that relates to the ISO Currency Code.
// <GEERU>
if (_exchangeRateImportRequest.parmProviderId() == ExchangeRateProviderCBRF_RU::providerId())
{
fromCurrency = Currency::find(externalCurrencyPair.parmFromCurrency());
}
else
{
// </GEERU>