Немного теории

Урок 1 из 9

10 мин

В моменте, когда вам требуется разработка новой «бизнес-сущности», перед вами встает выбор — каким способом реализовать эту сущность?

Bitrix Framework предоставляет как минимум четыре способа сделать это:

  1. Инфоблок
  2. Highload-блок
  3. Смарт-процесс
  4. Своя таблица

Для данной задачи нам подойдет создание своей сущности «с нуля». Таким образом получится, с одной стороны, получить полный контроль над новой сущностью, выделить для нее максимально корректное и полное 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-методу, например, при помощи вебхука.