Документация

Свой форматтер значений

Форматтер отвечает за то, как значение поля выглядит в журнале. Без него значения показываются как есть: идентификатор вместо названия, код вместо подписи.

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

Что делает форматтер

  • Называет сущность — как она подписана в списке и фильтре журнала.
  • Показывает запись — что стоит в колонке вместо первичного ключа: номер заказа, название товара, имя пользователя.
  • Разворачивает значения полей — идентификатор в название, код списка в подпись.

Как подключить

Форматтеры собираются событием модуля: обработчик возвращает соответствие «класс сущности → класс форматтера». Так же зарегистрированы и штатные три — своей регистрацией они ничем не отличаются от вашей.

php · init.php
use Bitrix\Main\EventManager;
use Bitrix\Main\EventResult;

EventManager::getInstance()->addEventHandler(
    'devbx.entitylog',
    'onGetEntityFormatter',
    static function () {
        return new EventResult(EventResult::SUCCESS, [
            '\\Vendor\\Module\\ItemTable' => \Vendor\Module\Log\ItemFormatter::class,
        ]);
    },
);

Ключ — класс сущности, значение — класс форматтера. Форматтер обязан наследовать базовый класс модуля: несуществующий класс и класс не от базового модуль отвергает с понятным сообщением, а не пропускает молча.

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

Когда форматтер не нужен

Если сущность простая и её поля — числа, строки и даты, журнал читается и без форматтера. Писать его ради того, чтобы «было», не стоит: это код, который придётся сопровождать вместе с модулем.