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

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
Наверх