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
.
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.