Класс CurrencyLangTable отвечает за работу с таблицей, в которой хранятся языкозависимые параметры валют в системе 1С-Битрикс. Он предоставляет функционал для получения, добавления, изменения и удаления записей (данных о формате валюты на разных языках). Является наследником класса Bitrix\Main\ORM\Data\DataManager
(в версиях Bitrix до 18.0.2 - от Bitrix\Main\Entity\DataManager
).

Основные задачи и возможности
- Хранение языкозависимых параметров валюты: названия, формат, полные названия и другие параметры.
- Получение данных: метод
getList()
для выборки с фильтрами, сортировкой;getById()
для выборки по первичному ключу. - Добавление, изменение, удаление записей: методы
add()
,update()
,delete()
. - Валидация и обработчики: при необходимости можно подключать свои валидаторы и обработчики событий.
Структура таблицы (основные поля)
Точный набор полей может отличаться в разных версиях 1С-Битрикс, но основные обычно таковы:
- CURRENCY (string) — код валюты (например, USD, EUR). Часть первичного ключа.
- LID (string) — код языка (например, ru, en). Часть первичного ключа.
- FORMAT_STRING (string) — строка формата для отображения суммы (например,
# USD
). - FULL_NAME (string) — полное наименование валюты на данном языке.
- DEC_POINT (string) — десятичный разделитель.
- THOUSANDS_SEP (string) — разделитель тысяч.
- DECIMALS (integer) — количество знаков после запятой.
- THOUSANDS_VARIANT (string) — способ отображения разделителя тысяч (N, D, C и т.д.).
- HIDE_ZERO (string) — скрывать ли незначащие нули (Y или N).
Примеры использования
1. Получение всех записей для конкретной валюты
use Bitrix\Currency\Internals\CurrencyLangTable;
$result = CurrencyLangTable::getList([
'select' => ['*'],
'filter' => ['=CURRENCY' => 'USD']
]);
while ($currencyLang = $result->fetch())
{
echo 'Язык: ' . $currencyLang['LID'] . PHP_EOL;
echo 'Формат: ' . $currencyLang['FORMAT_STRING'] . PHP_EOL;
echo 'Полное название: ' . $currencyLang['FULL_NAME'] . PHP_EOL;
echo '---------------------' . PHP_EOL;
}
2. Добавление новой записи
use Bitrix\Currency\Internals\CurrencyLangTable;
use Bitrix\Main\Application;
$addResult = CurrencyLangTable::add([
'CURRENCY' => 'EUR',
'LID' => 'en',
'FORMAT_STRING' => '# Euro #',
'FULL_NAME' => 'Euro',
'DEC_POINT' => '.',
'THOUSANDS_SEP' => ',',
'DECIMALS' => 2,
'THOUSANDS_VARIANT' => 'C',
'HIDE_ZERO' => 'N',
]);
if ($addResult->isSuccess())
{
$id = $addResult->getId();
echo 'Новая запись успешно добавлена. ID записи: ' . $id;
}
else
{
$errors = $addResult->getErrorMessages();
echo 'Ошибка при добавлении: ' . implode('; ', $errors);
}
3. Обновление существующей записи
use Bitrix\Currency\Internals\CurrencyLangTable;
$updateResult = CurrencyLangTable::update(
[
'CURRENCY' => 'EUR',
'LID' => 'en'
],
[
'FORMAT_STRING' => '€#',
'FULL_NAME' => 'Euro Currency'
]
);
if ($updateResult->isSuccess())
{
echo 'Запись успешно обновлена.';
}
else
{
$errors = $updateResult->getErrorMessages();
echo 'Ошибка при обновлении: ' . implode('; ', $errors);
}
4. Удаление записи
use Bitrix\Currency\Internals\CurrencyLangTable;
$deleteResult = CurrencyLangTable::delete([
'CURRENCY' => 'EUR',
'LID' => 'en'
]);
if ($deleteResult->isSuccess())
{
echo 'Запись успешно удалена.';
}
else
{
$errors = $deleteResult->getErrorMessages();
echo 'Ошибка при удалении: ' . implode('; ', $errors);
}
Советы по использованию
- Кеширование. При массовых запросах к таблице используйте кеширование или встроенные методы API модуля.
- Обязательные поля. Убедитесь, что указываете необходимые поля (например, CURRENCY, LID, FORMAT_STRING).
- Особенности работы в разных версиях Битрикс. До 18.0.2 —
Bitrix\Main\Entity\DataManager
, начиная с 18.0.2 —Bitrix\Main\ORM\Data\DataManager
. - Валидация. При необходимости подключайте дополнительные проверки через события или наследование класса.