Что умеет решение
В стандартной реализации Битрикса повторяющиеся блоки данных часто формируются через несколько множественных свойств: одно для названия, другое для значения, третье для изображения. Порядок элементов зависит от совпадения индексов, поэтому удаление одной строки редактором может привести к рассинхронизации данных. Модуль Top Man Digital устраняет эту проблему, используя единое свойство для хранения строк, где каждая строка представляет собой набор именованных полей.
Структура строки определяется один раз в настройках свойства через код, название, тип, обязательность и сортировку. Количество полей в одной строке не ограничено; функциональность подтверждена на конфигурациях с 30 полями в строке.
Поддерживается 15 типов полей: строка, текст, HTML с визуальным редактором, число, флажок, список (выпадающий или в виде переключателей), ссылка, дата (с временем или без), цвет, файл, изображение, элемент инфоблока, раздел инфоблока, пользователь, а также проброс любых сторонних типов свойств.
Модуль обеспечивает прямую интеграцию сторонних типов полей. Если на сайте установлен дополнительный модуль, добавляющий специфические типы (например, справочники HighLoadBlock, «Деньги», «Привязка к элементу с автозаполнением» или расширенные дата-время), виджеты этих типов доступны для использования внутри строк. Модуль обращается к сторонним типам напрямую без эмуляции.
Редактор составных свойств встроен непосредственно в форму элемента. Новые строки добавляются динамически без перезагрузки страницы, их можно перетаскивать мышью или сворачивать в одну строку заголовка. В свернутом виде заголовок отображает значение поля, назначенного в качестве заголовка строки.
Файлы привязаны к конкретным строкам. При удалении строки файл удаляется, при копировании элемента файл дублируется, а не становится общим ресурсом. Файлы, взятые из медиабиблиотеки, сохраняют связь с ней, но отвязываются от исходного контекста.
Поддерживается поиск по содержимому строк. Для каждого поля настраивается участие в поисковом индексе. Стандартный поиск Битрикс способен находить элементы по тексту, находящемуся внутри строк составных свойств.
Чтение данных в шаблонах осуществляется через метод Rows::get($elementId, 'PROP_CODE', $iblockId), возвращающий объекты строк. Метод $row->get('TITLE') возвращает экранированное значение, $row->label('UNIT') — подпись варианта списка, $row->file('PHOTO') — массив файла, $row->user('MANAGER') — данные пользователя. Загрузка файлов и данных пользователей выполняется лениво, что исключает лишние запросы при выводе только заголовков.
Запись данных осуществляется методом Rows::save(), который обновляет только строки составного свойства, не затрагивая остальные свойства элемента.
Модуль Top Man Digital: составные свойства инфоблока
Производительность запросов
Количество запросов к базе данных остаётся равным трём независимо от количества строк. Тестирование на элементе с 200 строками и на списке из 20 элементов показало, что слой модуля добавляет к работе ядра не более трёх запросов благодаря пакетному чтению строк с использованием префетчинга.
Фоновая очистка
Агент удаляет строки удалённых элементов и свойств, связи без строк и осиротевшие файлы. По умолчанию режим работы ограничен генерацией отчёта; функция удаления активируется через настройку.
Интерфейс и отчётность
Страница модуля содержит список составных свойств сайта, количество строк и файлов, отчёт работы агента очистки, а также предупреждение о лимите max_input_vars для текущего сервера.
Настройки и доступ
Поддерживаются русский и английский языки интерфейса. Управление правами доступа осуществляется штатными группами Битрикса. В административной панели предусмотрен отдельный раздел меню.
Внедрение «Top Man Digital: составные свойства инфоблока» можно поручить General iT — от установки до настройки и проверки совместимости с сайтом.