Что умеет решение
На нестандартных проектах часто возникают данные, которые не подходят для инфоблоков или Highload-блоков: заявки с посадочных страниц, справочники дилеров, реестры сертификатов, журналы обмена с 1С, таблицы договорных цен. Разработчик создает таблицу за час, но настройка административного раздела — списка, фильтров, форм, валидации, прав доступа и выгрузки — занимает несколько дней. Этот процесс приходится повторять на каждом проекте.
Модуль автоматически формирует рабочий административный раздел на основе описания сущности. Описание выполняется в графическом интерфейсе, отдельные файлы страниц не создаются, а написание SQL-кода не требуется.
ТРИ ИСТОЧНИКА ДАННЫХ
— Собственная таблица. Модуль создает её по описанию и самостоятельно изменяет структуру при добавлении или редактировании полей. Перед применением изменений система показывает список предстоящих изменений. Операции, ведущие к потере данных, выполняются только после явного подтверждения пользователя.
Модуль позволяет создавать административные разделы на основе Highload-блоков и произвольных ORM-классов.
Для Highload-блоков интерфейс формируется поверх существующей структуры. Доступны фильтрация, массовое удаление и выгрузка данных. Структура самого блока не изменяется, а создание, редактирование и удаление записей выполняются через новый раздел. Множественные поля и списки хранятся средствами ядра, что гарантирует корректное отображение значений в компонентах сайта. Привязка блока, настройка полей, их считывание и управление правами групп доступны исключительно администратору сайта. Права доступа к строкам блока не передаются автоматически при выдаче прав на использование конструктора.
Для произвольных ORM-классов, наследующих Bitrix\Main\ORM\Data\DataManager из любого модуля проекта, автоматически генерируется административный интерфейс. Привязка таких источников данных также доступна только администратору сайта. Доступ к чужим таблицам вне контекста владеющего ими модуля не предоставляется. Служебные таблицы портала, включая учетные записи, группы, права доступа, настройки и агенты, не могут использоваться в качестве источников. По умолчанию доступ к данным открыт только на чтение. Возможность записи включается отдельным флагом и требует осознанного решения. Записи классов ядра Битрикса остаются доступными только для просмотра.
Раздел собирается визуально с помощью мыши.
Конструктор админ-разделов позволяет настраивать сущности, поля, вкладки форм, колонки списков, поля фильтров, пункты меню и их расположение через административный интерфейс. Доступно пятнадцать типов полей: строка, многострочный текст, HTML с очисткой разметки, целое число, число с точкой, да/нет, дата, дата со временем, список значений, файл, картинка, пользователь, элемент инфоблока, ссылка на другую сущность конструктора и цвет. Списки поддерживают фильтрацию по выбранным полям, сортировку, постраничную навигацию и групповое удаление. Формы включают вкладки, обязательные поля, значения по умолчанию и проверку вводимых данных.
Управление правами осуществляется до уровня отдельного поля. Доступ к справочнику определяется группами пользователей, при этом для каждого поля устанавливаются отдельные права на чтение и запись. Поле, закрытое на чтение, не отображается в списке, форме, фильтре, выгрузке, журнале изменений, заголовке карточки или в связях. Например, менеджер может видеть справочник поставщиков, но не видит колонку с закупочной ценой. Ссылка на запись закрытого справочника отображается только его номером без названия. Вкладка связанного справочника доступна только пользователям с соответствующими правами. Имена пользователей отображаются только тем, у кого есть разрешение на просмотр пользователей, а элементы инфоблока — только из разрешенных источников.
Доступ к данным инфоблока, указанного в настройках поля, осуществляется с учётом прав пользователя. Проверка прав выполняется непосредственно перед выполнением действия, а не только на этапе отрисовки интерфейса.
ЖУРНАЛ ИЗМЕНЕНИЙ
Для каждой записи отображается информация о том, кто, когда и какие изменения внёс, с детализацией разницы «было / стало» по каждому полю. Журнал ведётся отдельно для каждого справочника. Срок хранения данных настраивается в параметрах модуля, а удаление старых записей выполняет фоновый агент.
ВЫГРУЗКА ПО ТЕКУЩЕМУ ФИЛЬТРУ
Кнопка «Выгрузить» формирует файл в формате XLS (SpreadsheetML) или CSV на основе текущего фильтра. В выгрузку включаются данные со всех страниц списка в пределах лимита export_limit, заданного в настройках модуля. Строки сортируются по возрастанию первичного ключа, а не по текущей сортировке на экране. В отчёт попадают только те поля, которые включены в список и доступны пользователю для чтения.
ПЕРЕНОС СХЕМЫ МЕЖДУ ПРОЕКТАМИ
Описание справочников экспортируется в файл JSON и импортируется на другом сайте. Переносятся только метаданные: сущности, поля, настройки и права доступа по кодам групп. Фактические данные в базе остаются на исходном месте. При импорте можно выбрать пропуск существующих справочников или их обновление. Интерфейс не поддерживает создание копий с новыми кодами. Если импорт требует удаления данных, он не выполняется: справочник сохраняется в исходном виде, а список операций выводится для подтверждения в конструкторе.
ТОЧКИ РАСШИРЕНИЯ ДЛЯ РАЗРАБОТЧИКА
Модуль предоставляет шесть событий с кодом сущности в параметрах: OnAdminkitBeforeSave (возврат ошибки отменяет сохранение), OnAdminkitAfterSave, OnAdminkitBeforeDelete, OnAdminkitAfterDelete, OnAdminkitBuildListQuery (корректировка выборки списка) и OnAdminkitRenderField (кастомная отрисовка ячейки). Обработчики событий пишутся в проекте стандартным способом, изменение файлов самого решения не требуется.
ЧЕГО МОДУЛЬ НЕ ДЕЛАЕТ
Модуль не создаёт PHP-файлы в проекте: административный раздел полностью обслуживается двумя страницами самого решения. Это гарантирует, что обновление модуля не конфликтует с пользовательскими изменениями на сайте. Система не затрагивает ядро и не подменяет стандартные страницы администрирования. Она не обращается к внешним сервисам, не требует лицензионных ключей, подписок или подключения сторонних скриптов. Выполнение запросов, сформированных на основе введённого текста, исключено: имена таблиц и колонок проходят валидацию по белому списку, а операции чтения и записи данных осуществляются исключительно через ORM ядра. Поля типов «файл» и «картинка» не принимают SVG, HTML и другие исполняемые браузером файлы независимо от настроек. При удалении решения таблицы созданных справочников по умолчанию сохраняются; их удаление доступно только через отдельный флажок после просмотра списка таблиц и количества строк в каждой.
Конструктор админ-разделов не использует инфоблоки как источник данных из-за их собственной системы свойств, прав и редакторов. Интерфейс реализован на базе штатных административных списков и форм Битрикса; компонент ui.grid не применяется. В текущей версии отсутствуют импорт данных из CSV и XLS, а также экспорт справочников через REST API. Поддерживаются только связи типа «один ко многим»: поле-ссылка и вкладка связанных записей. Решение не имеет публичной части и предназначено исключительно для административного раздела.
ТРЕБОВАНИЯ
— 1С-Битрикс: Управление сайтом, главный модуль версии 20.0.0 и выше;
— модуль «Highload-блоки» — опционален, требуется только для источника «highload-блок»;
— модуль «Информационные блоки» — опционален, требуется только для поля «элемент инфоблока»;
— PHP 8.2 и новее; проверка версии PHP и главного модуля выполняется установщиком;
— база данных MySQL или PostgreSQL. Приёмка решения проведена на MySQL 8 и PHP 8.2, проверка изменения структуры справочников выполнена на MySQL 8 и PostgreSQL 16.
Для модуля «Конструктор админ-разделов» General iT может выполнить установку, настройку и проверку работы в вашем проекте.