среда, 12 марта 2014 г.

Типовая функция для получения курса валют на дату

Для получения курса валюты в таких конфигурациях как: УТ, УТП, УПП и Бухгалтерия существует типовая функция ПолучитьКурсВалюты(Валюта, ДатаКурса), которая располагается в общем модуле МодульВалютногоУчета. Текст функции в данных конфигурациях практически одинаков, отличается, разве что в УПП выводом доп. сообщений и проверкой входных параметров.

Текст функции из УПП:

// Возвращает курс валюты на дату
//
// Параметры:
//  Валюта     - Валюта (элемент справочника "Валюты")
//  ДатаКурса  - Дата, на которую следует получить курс
//  ПроверятьКурс - Если Истина и курс или кратность для валюты не установлены (=0),
//                  то им будет присвоено значение 1 (для избежания дальнейших ошибок деления на 0)
//
// Возвращаемое значение:
//  Структура, содержащая:
//   Курс      - курс валюты
//   Кратность - кратность валюты
//
Функция ПолучитьКурсВалюты(Валюта, ДатаКурса, ПроверятьКурс = Истина) Экспорт


    Если НЕ
ЗначениеЗаполнено(Валюта) Тогда
       
ОбщегоНазначения.СообщитьСлужебнуюИнформацию("ПолучитьКурсВалюты() - не заполнена валюта");

        Возврат Новый
Структура("Курс, Кратность", 1, 1);

    КонецЕсли;

   
СтруктураКурсов = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ДатаКурса, Новый Структура("Валюта", Валюта));

    Если
СтруктураКурсов.Курс = 0 и ПроверятьКурс Тогда

       
СтруктураКурсов.Вставить("Курс", 1);
       
ОбщегоНазначения.СообщитьОбОшибке("По валюте """ + Валюта + """ на дату """ + ДатаКурса + """ обнаружен нулевой курс."
                        
+ Символы.ПС + Символы.Таб + "Временно, для расчетов, присвоено значение 1.");

    КонецЕсли;

    Если
СтруктураКурсов.Кратность = 0 и ПроверятьКурс Тогда

       
СтруктураКурсов.Вставить("Кратность", 1);
       
ОбщегоНазначения.СообщитьОбОшибке("По валюте """ + Валюта + """ на дату """ + ДатаКурса + """ обнаружена нулевая кратность."
                        
+ Символы.ПС + Символы.Таб + "Временно, для расчетов, присвоено значение 1.");

    КонецЕсли;

    Возврат
СтруктураКурсов;

КонецФункции
// ПолучитьКурсВалюты()

А это текст этой же функции только из УТ:

// Возвращает курс валюты на дату
//
// Параметры:
//  Валюта     - Валюта (элемент справочника "Валюты")
//  ДатаКурса  - Дата, на которую следует получить курс
//
// Возвращаемое значение:
//  Структура, содержащая:
//   Курс      - курс валюты
//   Кратность - кратность валюты
//
Функция ПолучитьКурсВалюты(Валюта, ДатаКурса) Экспорт

   
Структура = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ДатаКурса, Новый Структура("Валюта", Валюта));
    Возврат
Структура;

КонецФункции
// ПолучитьКурсВалюты()

Пример вызова функции из модуля документа Реализация товаров и услуг:

СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаДокумента, ОбщегоНазначения.ПолучитьРабочуюДату());
КурсВзаиморасчетов           = СтруктураКурсаВзаиморасчетов.Курс;
КратностьВзаиморасчетов      = СтруктураКурсаВзаиморасчетов.Кратность;


Добавить комментарий

2 комментария :

  1. Спасибо. А приходилось запросом получать курсы валют для конвертации долларов в рубли, которые падают мне в карман с моегоденежного дерева

    ОтветитьУдалить