Документация для разработчиков
Темная тема

Валюты

Описание и список функций

BX.Currency – библиотека для форматирования цен с учетом текущего языка на js.

Идет в составе модуля валют (currency).

Для подключения библиотеки используется следующий код:

if (\Bitrix\Main\Loader::includeModule('currency'))
{
	CJSCore::Init(['currency']);
}

ФункцияОписаниеС версии
BX.Currency.cleanСтирает форматы всех валют.
BX.Currency.clearCurrencyУдаляет формат (если он есть).
BX.Currency.currencyFormatФорматирует цену.
BX.Currency.getCurrencyFormatВозвращает формат валюты.
BX.Currency.loadCurrencyFormatАсинхронная загрузка формата.19.0.100
BX.Currency.setCurrenciesЗадаёт форматы нескольких валют сразу.
BX.Currency.setCurrencyFormatЗадаёт формат конкретной валюты.

Форматирование цены

<script type="text/javascript">
var price = 141.56,
	currency = 'USD';

item.innerHTML = BX.Currency.currencyFormat(price, currency, true); // вставка отформатированной цены с применением шаблона вывода

item2.innerHTML = BX.Currency.currencyFormat(price, currency, false); // вставка отформатированной величины цены без использования шаблона

</script>
/*
Результат
item содержит строку $141.56
item2 содержит строку 141.56 (без символа валюты и всего остального, находящегося в шаблоне)
*/

Перед вызовом форматирования необходимо либо явно задать форматы требуемых валют:

<?
$currencies = []; // загружаем все валюты, какие есть
$currencyIterator = \Bitrix\Currency\CurrencyTable::getList([
	'select' => ['CURRENCY']
]);
while ($currency = $currencyIterator->fetch())
{
	$currencyFormat = \CCurrencyLang::GetFormatDescription($currency['CURRENCY']);
	$currencies[] = [
		'CURRENCY' => $currency['CURRENCY'],
		'FORMAT' => [
			'FORMAT_STRING' => $currencyFormat['FORMAT_STRING'],
			'DEC_POINT' => $currencyFormat['DEC_POINT'],
			'THOUSANDS_SEP' => $currencyFormat['THOUSANDS_SEP'],
			'DECIMALS' => $currencyFormat['DECIMALS'],
			'THOUSANDS_VARIANT' => $currencyFormat['THOUSANDS_VARIANT'],
			'HIDE_ZERO' => $currencyFormat['HIDE_ZERO']
		]
	];
}
?>
<script type="text/javascript">
BX.Currency.setCurrencies(<?=CUtil::PhpToJSObject($currencies, false, true, true);?>);
</script>

либо асинхронно загрузить их (currency 19.0.100 и выше ):

<script type="text/javascript">
BX.Currency.loadCurrencyFormat('USD').then(function() 
{
	item.innerHTML = BX.Currency.currencyFormat(123, 'USD', true);
});
</script>

При использовании второго способа вы должны сами контролировать процесс загрузки и не использовать метод форматирования до успешной подгрузки данных.

Описание формата (поля объекта) почти полностью соответствует данным, возвращаемым методом CCurrencyLang::GetFormatDescription (нет ключа THOUSANDS_VARIANT).



Пользовательские комментарии

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

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2020, «1С-Битрикс», 2020
Наверх