Модуль создан для проектов, где контент не укладывается в «одно поле = одно значение».
Модуль добавляет гибкое комбинированное свойство: вы настраиваете набор подполей под бизнес-задачу и управляете ими в одной удобной форме — без лишних инфоблоков, сложных костылей и потери контроля над структурой.
Подходит для сайтов услуг, каталогов, корпоративных порталов, лендингов и проектов с насыщенным контентом, где важно быстро запускать новые форматы страниц и при этом сохранять чистую архитектуру данных.
Что даёт модульОдин из главных сценариев, под который проектировался модуль — страницы, собранные из смысловых блоков:
Каждый такой блок можно оформить как отдельное комбинированное свойство.
Внутри блока — свой набор подполей: заголовок, описание, изображение, список, ссылка, дата, привязки и т.д.
Результат для проекта:
Удобно для карточек филиалов, офисов, точек продаж, шоурумов.
Рекомендуемая структура:
Что это даёт: единый формат контактных данных, быстрое редактирование менеджером и готовая основа для вывода контактных блоков в нужном дизайне.
Сценарий 2: СобытияПодходит для анонсов мероприятий, вебинаров, презентаций, обучающих программ.
Рекомендуемая структура:
Что это даёт: аккуратная событийная карточка с чёткой структурой, удобная фильтрация и единый стандарт для всех событий на сайте.
Сценарий 3: Коммерческие предложенияИдеально для тарифных сеток, пакетов услуг, ценовых блоков и промо-предложений.
Рекомендуемая структура:
Что это даёт: прозрачное управление тарифами без отдельного сложного каталога, быстрое обновление цен/состава и удобный вывод в карточках и лендингах.
Примеры кода для разработчиковГотовые сниппеты для быстрой интеграции в шаблоны Битрикс
VALUE приходит как массив подполей.
VALUE приходит как массив строк, где каждая строка — отдельный блок-строка (массив подполей).
<?php
$rows = $arResult['PROPERTIES']['TARIFFS']['VALUE'] ?? [];
if (!is_array($rows) || empty($rows)) {
return;
}
?>
<div class="tariffs">
<?php foreach ($rows as $row): ?>
<?php if (!is_array($row)) { continue; } ?>
<?php
$name = (string)($row['TARIFF_NAME'] ?? '');
$price = $row['PRICE'] ?? '';
$services = (string)($row['SERVICES'] ?? '');
$badge = (string)($row['BADGE'] ?? '');
?>
<div class="tariff-card">
<?php if ($name !== ''): ?><h3><?= htmlspecialcharsbx($name) ?></h3><?php endif; ?>
<?php if ($price !== '' && $price !== null): ?><div><?= htmlspecialcharsbx((string)$price) ?> ₽</div><?php endif; ?>
<?php if ($services !== ''): ?><div><?= nl2br(htmlspecialcharsbx($services)) ?></div><?php endif; ?>
<?php if ($badge !== ''): ?><span><?= htmlspecialcharsbx($badge) ?></span><?php endif; ?>
</div>
<?php endforeach; ?>
</div>
Пример 3. Файловое подполеВ подполе хранится file_id (число).
<?php
$fileId = (int)($row['FILE'] ?? 0);
if ($fileId > 0) {
$file = CFile::GetFileArray($fileId);
if (is_array($file) && !empty($file['SRC'])) {
$name = $file['ORIGINAL_NAME'] ?: $file['FILE_NAME'];
echo '<a href="' . htmlspecialcharsbx($file['SRC']) . '" target="_blank" rel="noopener">'
. htmlspecialcharsbx($name)
. '</a>';
}
}
Пример 4. UF раздела (section_cprop)<?php
$event = $arResult['UF_EVENT_META'] ?? [];
if (!is_array($event) || empty($event)) {
return;
}
?>
<div class="event-meta">
<div>Начало: <?= htmlspecialcharsbx((string)($event['DATE_FROM'] ?? '')) ?></div>
<div>Окончание: <?= htmlspecialcharsbx((string)($event['DATE_TO'] ?? '')) ?></div>
<div>Место: <?= htmlspecialcharsbx((string)($event['PLACE'] ?? '')) ?></div>
<div>Организатор ID: <?= (int)($event['ORGANIZER'] ?? 0) ?></div>
</div>
Рекомендации по использованиюУстановите модуль через Маркетплейс Битрикс.
При создании свойства инфоблока выберите тип «Универсальное комбинированное свойство»
Для разделов — создайте UF с типом «Комбинированное свойство (для разделов)»