Немного теории
Помимо Инфоблоков и Highload-блоков собственные сущности можно создавать самым низкоуровневым методом — определив собственную таблицу в БД и объявив класс для работы с ней. В таком случае у разработчика будет полный контроль над типами данных колонок и SQL-запросами.
В фреймворке есть готовый механизм, который рекомендуется использовать при работе с собственными таблицами: ORM-класс. Объявляя по классу для каждой таблицы БД по правилам ORM (потребуется определить только 2 метода: getTableName и getMap), разработчик получает готовый набор методов для CRUD-операций.
Используя ORM, разработчик получит структурированный класс с возможностью:
- Валидировать данные
- Создавать обработчики событий
- Работать с единичными записями как с объектами \Bitrix\Main\ORM\Objectify\EntityObject
- Работать с перечнем записей как с объектами \Bitrix\Main\ORM\Objectify\Collection
- «Ходить» по связям в SELECT-запросах
- Использовать объект \Entity\Query для конструирования сложных запросов
- Использовать единый готовый синтаксис для фильтрации в SELECT-запросах
- Использовать стандартную постраничную навигацию фреймворка
- ORM-класс может быть сгенерирован автоматически силами фреймворка
Выбирая путь своей сущности на кастомной таблице, разработчику важно понимать и то, какие возможности фреймворка будут недоступны без написания собственного кода:
- Отсутствует веб-интерфейс для управления данными из административного раздела
- Отсутствует система прав доступа в API
- Отсутствует встроенная возможность группировки данных по разделам, как в Инфоблоках
- Отсутствуют готовые скрипты импорта и экспорта данных из файлов
- Модуль поиска ничего не знает про кастомную таблицу
- Нет готовых компонентов для вывода списка, детальной карточки, фильтра по записям таблицы.
Все эти возможности можно добавить, но придется реализовать их самостоятельно. Рекомендуем ознакомиться с отдельным курсом по созданию своей сущности в Битрикс24.
REST API
Часто собственная таблица с ORM-классом используется для хранения данных REST API веб-сервиса. В «1С-Битрикс: Управление сайтом» есть механизм для создания REST-сервера:
- Отдельный модуль rest.
- Контроллер в собственном модуле.
Подробнее об этих механизмах смотрите в документации и блоге.
Практика
В этом видео разберем пример создания сущности на основе собственной таблицы в базе данных. Наша новая сущность - это уведомления для пользователей сайта.
Своя сущность на HL-блоках
21 мин
Полезные ссылки и материалы