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

PrototypeItemDataManager

Описание и методы

Абстрактный класс для абстрактных прототипов таблетов элементов. Содержит в себе API модификации значений пользовательских полей перед их сохранением в базу данных.


Цепочка наследования

Является наследником класса Bitrix\Main\ORM\Data\DataManager.

Методы

Метод Описание С версии
public static function getType(): ?array Возвращает массив-описание типа, для которого был скомпилирован конечный класс таблета.
public static function getMap(): array По умолчанию у элементов есть только идентификатор. Но наследники могут добавить свои системные поля, как сделано в модуле RPA.
public static function checkFields(ORM\Data\Result $result, $primary, array $data) Переопределенный класс родителя, чтобы не было обращения к API пользовательских полей для их поиска.
public static function getItemUserFieldEntityId(): ?string Возвращает строковый идентификатор сущности пользовательских полей для конкретного таблета.
public static function isOwnField(string $fieldName): bool Возвращает true, если у сущности есть системное поле с кодом $fieldName.
public static function getOwnFieldNames(): array Возвращает массив с названиями полей, которые являются системными

Преобразование данных

Методы-обработчики событий выполняют преобразование данных для их корректного сохранения в базе

Здесь значения полей подготавливаются к сохранению в БД:

  • public static function onBeforeAdd(Event $event): ORM\EventResult
  • public static function onBeforeUpdate(Event $event): ORM\EventResult

Здесь сохраняются множественные значения полей в отдельные таблицы:

  • public static function onAfterAdd(Event $event): ORM\EventResult
  • public static function onAfterUpdate(Event $event): ORM\EventResult

После удаления элемента удаляются данные из связанных таблиц - из таблиц для хранения множественных значений, из b_file

  • public static function onAfterDelete(Event $event): ORM\EventResult

Обработка событий от старого API пользовательских полей

У API пользовательских полей есть методы, позволяющие напрямую менять значения. Эти методы обращались напрямую к собственным таблицам и записывали туда новые значения.

Теперь так делать нельзя, т.к. этих таблиц нет. Чтобы при работе через старое API не было ошибок, были добавлены новые события, которые перехватываются UserFieldHelper и обращаются к методам этого класса:

  • public static function getUserFieldValues(int $id, array $userFields): ?array - возвращает массив значений пользовательских полей с кодами $userFields для элемента с идентификатором $id. Возвращает null, если такого элемента нет;
  • public static function updateUserFieldValues(int $id, array $fields): Main\Result - обновляет значения пользовательских полей элемента с идентификатором $id. В массиве $fields лежат коды полей и значения для них;
  • public static function deleteUserFieldValues(int $id): Main\Result - очищает значения всех пользовательских полей элемента $id.


© «Битрикс», 2001-2024, «1С-Битрикс», 2024