В моменте, когда вам требуется разработка новой «бизнес-сущности», перед вами встает выбор — каким способом реализовать эту сущность?
Bitrix Framework предоставляет как минимум четыре способа сделать это:
- Инфоблок
- Highload-блок
- Смарт-процесс
- Своя таблица
Для данной задачи нам подойдет создание своей сущности «с нуля». Таким образом получится, с одной стороны, получить полный контроль над новой сущностью, выделить для нее максимально корректное и полное API, а с другой стороны — рассмотреть процесс [создания] со всех сторон.
Полезно
Создание своих сущностей на Инфоблоках и Highload-блоках - рассмотрены в курсе "Создание
своих сущностей в Bitrix Framework".
Тема создания свои сущностей на смарт-процессах, в рамках типового функционала Битрикс24, доступного как в коробке, так и в облаке, в том числе больше возможности по кастомной автоматизации без программирования в формате no-code мы подробно рассматриваем в курсе Автоматизация цифровых рабочих мест.
Процесс создания своей сущности можно представить в следующем порядке:
1) Планирование архитектуры БД
Здесь вы решаете, какая сущность вам нужна, из чего она состоит, как можно представить ее в рамках таблицы в БД.
После этого требуется создать класс-наследник \Bitrix\Main\ORM\Data\DataManager
, который будет представлять вашу таблицу. В нем потребуется реализовать методы getTableName
и getMap
, которые будут возвращать название таблицы и описание ее столбцов соответственно.
2) Реализация низкоуровневой кодовой обвязки
Чтобы иметь как можно больше контроля над своей сущностью, вы хотите представить ее не массивом, но отдельным объектом с типизированными полями — так называемым data-классом.
Дополнительно вам потребуется класс-репозиторий, который будет служить оберткой над ORM Битрикса, в котором вы будете описывать стандартные CRUD-операции, но уже с объектами вашей сущности.
3) Реализация высокоуровневой бизнес-логики
Представьте все операции, которые конечный пользователь выделяет как операции с новой сущностью. Каждую из них можно представить как отдельный метод класса, находящегося на данном уровне абстракции — уровне бизнес-логики.
Для сложных, больших сущностей с множеством связей это может быть целое пространство имен с несколькими классами, но в большинстве случаев все можно уместить в один сервис-класс.
4) Визуальное отображение
Почти наверняка заказчик хочет видеть представление бизнес-сущности внутри своего Битрикс24: список записей, возможность просмотра конкретной, создания новой, редактирования существующей.
Все это можно реализовать при помощи своих компонентов, которые будут внутри использовать стандартные компоненты Битрикса. Общий концепт будет следующим: ваш компонент (списка или детальной страницы) использует API вашего сервисного слоя абстракции, чтобы получить, подготовить либо обработать данные, а после передает их в свой шаблон, где, для отображения уже готовых элементов контроля, подключается стандартный компонент Битрикса:
- Для отображения списка элементов — компонент
bitrix:main.ui.grid
. При необходимости фильтрации расширяется подключением компонентаitrix:main.ui.filter
. -
Для отображения детальной страницы — компонент ui.form. Он покрывает такие запросы как создание нового элемента, просмотр или редактирование существующего.
Если требуется отображать детальную страницу в слайдере, то на помощь придет компонент
bitrix:ui.sidepanel.wrapper
.
5) Интеграция
Достаточно частое желание заказчика — получить возможность работать с новой сущностью не только из Битрикс24, но и снаружи, из других систем. Нередко именно сторонняя система будет являться инициатором для получения или изменения данных в Битрикс24.
Такую задачу прекрасно решает REST, нужно всего лишь научить его работать с новой бизнес-сущностью:
- Добавить обработчик события
rest:OnRestServiceBuildDescription
. - Описать его поведение. Самыми распространенными реализациями являются CRUD-операции над сущностью.
- Предоставить доступ к данному REST-методу, например, при помощи вебхука.