Имя: Пароль:
1C
 
формула персчета из одной валюты вдругую
0 Beans
 
22.03.09
13:26
как пересчитать Валюту в рубли это понятно
ТекущийКурс = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(Дата,Отбор).Курс;
Сумма = ТекСтрокаСостав.Сумма * ТекущийКурс;

а вот как персчитать из одной валюты в другую, например из долларов в евро и наоборот, есть у кого нибудь универсальная
правильная функция, в гугле не нашел.
1 Aleksey_3
 
22.03.09
13:29
Курс доллара к евро <> курсу Доллар=>руб=>евро. Поэтому тебе нужны кросс курсы, и точно так же переводишь.

А так зависит от задачи
2 Dmitrii
 
гуру
22.03.09
13:29
Искать надо было определение "кросс курс"
3 Euguln
 
22.03.09
13:31
// Эта функция пересчитывает сумму из валюты ВалютаНач по курсу ПоКурсуНач
// в валюту ВалютаКон по курсу ПоКурсуКон
//
// Параметры:      
//    Сумма          - сумма, которую следует пересчитать;
//    ВалютаНач      - ссылка на элемент справочника Валют;
//                   определяет валюты из которой надо пересчитвать;
//    ВалютаКон      - ссылка на элемент справочника Валют;
//                   определяет валюты в которую надо пересчитвать;
//    ПоКурсуНач     - курс из которого надо пересчитать;
//    ПоКурсуКон     - курс в который надо пересчитать;
//    ПоКратностьНач - кратность из которого надо пересчитать (по умолчанию = 1);
//    ПоКратностьКон - кратность в который надо пересчитать  (по умолчанию = 1);
//
// Возвращаемое значение:
//  Сумма, пересчитанная в другую валюту
//
Функция ПересчитатьИзВалютыВВалюту(Сумма, ВалютаНач, ВалютаКон, ПоКурсуНач, ПоКурсуКон,
                                  ПоКратностьНач = 1, ПоКратностьКон = 1 ) Экспорт

   Если (ВалютаНач = ВалютаКон) Тогда

       // Считаем, что пересчет не нужен.
       Возврат Сумма;

   КонецЕсли;

   Если (ПоКурсуНач     = ПоКурсуКон)
      и (ПоКратностьНач = ПоКратностьКон) Тогда

       // ну, тут и считать нечего...
       Возврат Сумма;

   КонецЕсли;

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

   КонецЕсли;

   Возврат Окр((Сумма * ПоКурсуНач * ПоКратностьКон) / (ПоКурсуКон * ПоКратностьНач), 2);

КонецФункции //ПересчитатьИзВалютыВВалюту()
4 Dmitrii
 
гуру
22.03.09
13:35
КурсВалютыУчета = ?(Курсы.КурсВалютыУчета = 0, 1, Курсы.КурсВалютыУчета);
КурсВалютыХолдинга = ?(Курсы.КурсВалютыХолдинга = 0, 1, Курсы.КурсВалютыХолдинга);
СуммаХолдинга = Сумма * КурсВалютыУчета/КурсВалютыХолдинга;
5 Beans
 
22.03.09
13:43
(3)
испытал - работает - спасибо!
(4)
теперь я узнал новое понятие "кросс курс" :)

"соотношение между двумя валютами, которое определяется на основе курса этих валют по отношению к какой-либо третьей валюте"
6 Euguln
 
22.03.09
13:50
(5) Это функция типовой БП ))))
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший