Описание класса CurrencyLangTable для работы с таблицей языкозависимых параметров валют

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

Класс CurrencyLangTable

Основные задачи и возможности

  1. Хранение языкозависимых параметров валюты: названия, формат, полные названия и другие параметры.
  2. Получение данных: метод getList() для выборки с фильтрами, сортировкой; getById() для выборки по первичному ключу.
  3. Добавление, изменение, удаление записей: методы add(), update(), delete().
  4. Валидация и обработчики: при необходимости можно подключать свои валидаторы и обработчики событий.

Структура таблицы (основные поля)

Точный набор полей может отличаться в разных версиях 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);
}

Советы по использованию

  1. Кеширование. При массовых запросах к таблице используйте кеширование или встроенные методы API модуля.
  2. Обязательные поля. Убедитесь, что указываете необходимые поля (например, CURRENCY, LID, FORMAT_STRING).
  3. Особенности работы в разных версиях Битрикс. До 18.0.2 — Bitrix\Main\Entity\DataManager, начиная с 18.0.2 — Bitrix\Main\ORM\Data\DataManager.
  4. Валидация. При необходимости подключайте дополнительные проверки через события или наследование класса.
Теги:  D7, справочник

Интернет-магазин от 120 000 руб., срок от 4 недель

Платформа для продажи товаров или услуг. Включает интерактивные формы обратной связи в каждой карточке товара, а также множество статичных и динамичных разделов.

Корпоративный сайт от 60 000 руб., срок от 3 недель

Готовый информационный ресурс, включающий лицензию на 1С-Битрикс «Стандарт», технологию «Композитный сайт».

Лендинг от 25 000 руб., срок от 2 недель

Компактный сайт, идеально подходящий для старта. На одной странице можно представить ключевые преимущества вашей компании и разместить форму для обратной связи.