Модуль «Валюты» (currency) — фундамент денежной части магазина на 1С-Битрикс. Пока он не настроен корректно, цены не считаются, а в счетах и корзине появляются странные суммы. Ниже — последовательный маршрут от установки до проверки, по которому мы обычно заводим валюты на проектах.
Что делает модуль и зачем его настраивать
Модуль «Валюты» — это отдельный служебный модуль редакции, который хранит справочник валют, их курсы к базовой валюте и правила форматирования сумм. На него опираются Торговый каталог, Интернет-магазин (sale) и все компоненты вывода цен.
Практически модуль отвечает за три вещи:
- Справочник валют — какие валюты вообще есть в системе (RUB, USD, EUR и т. д.), их коды по ISO 4217 и символы.
- Курсы — сколько единиц базовой валюты стоит одна единица другой валюты на конкретную дату.
- Формат вывода — как сумма показывается покупателю: положение символа, разделители разрядов и дробной части, число знаков после запятой.
Шаг 1. Установка и проверка модуля
В большинстве редакций «1С-Битрикс: Управление сайтом» модуль устанавливается автоматически вместе с торговым функционалом. Проверить его наличие можно в административной части: Настройки → Настройки продукта → Модули. В списке должен присутствовать модуль «Валюты» со статусом «установлен».
Если модуля нет, нажмите «Установить» напротив него. Физически он лежит в /bitrix/modules/currency/; управление валютами после установки доступно в разделе Магазин → Настройки → Валюты (в старых сборках — Контент → Валюты).
currency — зависимость для catalog и sale. Не удаляйте его на работающем магазине: это обрушит расчёт цен и оформление заказов.Шаг 2. Базовая валюта
Базовая (национальная) валюта — та, к курсу которой приводятся все остальные и в которой ведётся внутренний учёт сумм. Для магазина в России это, как правило, RUB.
Откройте Магазин → Настройки → Валюты и добавьте валюту через «Добавить валюту». При создании укажите:
- Код валюты — трёхбуквенный код ISO 4217 (например,
RUB). Изменить его после создания нельзя, поэтому вводите внимательно. - Название — для внутреннего удобства в админке.
- Курс и номинал — для базовой валюты курс равен
1при номинале1.
Само понятие «базовая» задаётся косвенно: базовой становится валюта с курсом 1, к которой пересчитываются остальные. В настройках модуля Настройки продукта → Модули → Валюты дополнительно указывается валюта по умолчанию для новых цен.
Шаг 3. Дополнительные валюты и курсы
Для мультивалютного магазина добавьте остальные валюты тем же способом. Ключевой параметр здесь — пара «Номинал / Курс». Номинал — сколько единиц валюты котируется, курс — их стоимость в базовой валюте.
| Валюта | Номинал | Курс (в RUB) | Смысл |
|---|---|---|---|
| USD | 1 | 90.00 | 1 доллар = 90 руб. |
| EUR | 1 | 98.50 | 1 евро = 98,5 руб. |
| JPY | 100 | 60.00 | 100 иен = 60 руб. |
Курсы хранятся с привязкой к дате: на каждый день можно задать своё значение. Это позволяет считать старые заказы по курсу их оформления. Вносить курсы вручную каждый день неудобно — на практике включают автообновление курсов ЦБ РФ через агент, который тянет данные с сайта Центробанка.
1 вместо 100, цены завышаются или занижаются в разы.Шаг 4. Формат вывода суммы
Каждая валюта имеет собственные правила отображения — они настраиваются на вкладке форматирования в карточке валюты и задаются отдельно для каждого языка интерфейса.
- Формат — шаблон вывода, где
#заменяется на сумму, например# руб.или$#. Так задаётся положение символа (до или после суммы). - Разделитель дробной части — запятая для рубля, точка для доллара.
- Разделитель разрядов — пробел, точка или запятая для группировки тысяч (
1 250 000). - Знаков после запятой — обычно 2; для валют без копеек (JPY) — 0.
- Скрывать нулевые копейки — показывать
1 000 ₽вместо1 000,00 ₽.
В шаблоне сайта суммы выводятся функцией CurrencyFormat($sum, $currency), которая как раз применяет эти правила. Компоненты каталога и корзины вызывают её автоматически.
Шаг 5. Округление и права доступа
Округление настраивается не в самом модуле валют, а в Торговом каталоге: Магазин → Настройки → Настройки модулей → Торговый каталог, блок правил округления. Там задаётся точность и правило (математическое, вверх, вниз) для итоговых цен после пересчёта из другой валюты — чтобы покупатель не видел сумм вроде 1249,9873.
Права на управление валютами регулируются на вкладке «Доступ» в настройках модуля: обычно полный доступ оставляют администраторам и контент-менеджерам, а рядовым сотрудникам закрывают, чтобы случайно не сломать курсы.
Шаг 6. Проверка настроек
После настройки прогоните короткий чек-лист, чтобы не ловить ошибки на боевом каталоге:
- Откройте карточку товара и корзину — символ, разделители и число знаков совпадают с задуманным форматом.
- Переключите валюту в публичной части (если магазин мультивалютный) — пересчёт идёт по актуальному курсу.
- Оформите тестовый заказ — в счёте и письме сумма отображается корректно.
- Проверьте агент автообновления курсов в
Настройки → Настройки продукта → Агенты: он активен и отрабатывает без ошибок.
Отдельно стоит очистить кэш компонентов (Настройки → Highload-кэш / Очистка кэша) — старые цены нередко «залипают» в кэше после смены формата или курса.
Итог
Настройка модуля «Валюты» — это последовательность: установить модуль, задать базовую валюту, добавить остальные с корректным номиналом и курсами, настроить формат вывода и округление, ограничить права и проверить результат в публичной части. Ошибки чаще всего кроются в номинале, кэше и путанице между округлением и форматированием.
Если магазин мультивалютный, тесно связан с 1С или требует автообновления курсов и нестандартного округления по типам цен, аккуратнее доверить настройку интеграторам. Мы в B2Bsite настраиваем денежную часть магазинов на 1С-Битрикс, связываем цены и курсы с 1С и следим, чтобы суммы в каталоге, корзине и счетах всегда сходились.
Частые вопросы
Где в админке находится управление валютами?
В разделе Магазин → Настройки → Валюты. В более старых сборках пункт может быть в разделе Контент → Валюты. Настройки самого модуля — в Настройки продукта → Модули → Валюты.
Можно ли изменить код валюты после создания?
Нет, трёхбуквенный код (например, RUB) задаётся при создании и дальше не меняется. Если ошиблись, валюту нужно удалить и создать заново с правильным кодом.
Какая валюта считается базовой?
Базовой фактически становится валюта с курсом 1, к которой приводятся все остальные. Для российского магазина это обычно RUB. Менять её на работающем проекте крайне нежелательно.
Зачем нужен номинал у валюты?
Номинал — это количество единиц валюты, для которого указан курс. Для доллара и евро он равен 1, а для «мелких» валют вроде японской иены — 100, чтобы курс был удобным числом.
Модуль валют настраивает округление цен?
Нет. Округление задаётся в модуле Торговый каталог (правила округления и точность). В модуле валют настраивается только формат вывода: символ, разделители и число знаков после запятой.
Как обновлять курсы автоматически?
Через агент автообновления курсов ЦБ РФ. Он периодически тянет курсы с сайта Центробанка и записывает их в справочник с привязкой к дате. Ручной ввод курсов остаётся как запасной вариант.
Почему после смены формата цена показывается по-старому?
Чаще всего дело в кэше компонентов каталога и корзины. Очистите кэш в разделе Настройки → Очистка кэша, и новый формат подхватится.
Можно ли задать разный формат вывода для разных языков?
Да, форматирование валюты настраивается отдельно для каждого языка интерфейса, поэтому на разных языковых версиях сайта символ и разделители могут отличаться.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.