Редактировать

Задача

Товары на сайт выгружаются из базы 1С, в которой цены хранятся в нескольких валютах: евро, доллар, гривна, рубль. Базовая валюба - рубль. Требуется ежедневно получать курсы валют с сайта ЦБ РФ и стоимость товаров в каталоге показывать в рублях по актуальному курсу, округлять стоимости до целых в пользу магазина.

Решение

Для синхронизации курсов нужно либо самостоятельно написать функцию работы с апи ЦБ РФ и повесить ее выполнение на крон или добавить агент. Либо установить бесплатный модуль Валюты, запрос курса. Этот модуль добавляет в систему два обработчика событий и один агент для синхронизации курсов валют.

Теперь нужно настроить каталог на пересчет стоимостей товаров, для этого установим параметры вызова компонента:

<?$APPLICATION->IncludeComponent("bitrix:catalog", "", Array(
        //.. прочие параметры компонента
        "CONVERT_CURRENCY" => "Y",	// Показывать цены в одной валюте
        "CURRENCY_ID" => "RUB", // В какой валюте показывать
        //.. прочие параметры компонента
    ),
	  false
);?>

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

Для корректного округления цен нужно создать соответствующее правило в админке: Магазин -> Настройки -> Цены -> Округление