Что умеет решение
На нестандартных проектах часто возникают данные, которые не подходят для инфоблоков или 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 может выполнить установку, настройку и проверку работы в вашем проекте.