Создание сайтов на 1С Битрикс стало еще просто, используйте готовые шаблоны! Подключайте современные модули, делая ваш сайт еще эффективнее!
Например, парсер сайтов

Универсальное комбинированное свойство инфоблока

1 000 i
Заказать
Оформление заказа
х
В наличии

Модуль создан для проектов, где контент не укладывается в «одно поле = одно значение».
Модуль добавляет гибкое комбинированное свойство: вы настраиваете набор подполей под бизнес-задачу и управляете ими в одной удобной форме — без лишних инфоблоков, сложных костылей и потери контроля над структурой.

Подходит для сайтов услуг, каталогов, корпоративных порталов, лендингов и проектов с насыщенным контентом, где важно быстро запускать новые форматы страниц и при этом сохранять чистую архитектуру данных.

Что даёт модуль
  • объединяет связанные данные в одно логическое поле (хранение в JSON);
  • позволяет собирать собственные структуры из подполей разных типов;
  • ускоряет работу контент-менеджера за счёт понятной формы в админке;
  • снижает стоимость доработок: структура меняется в настройках свойства, а не через создание новых сущностей;
  • сохраняет гибкость вёрстки: данные готовы для произвольного вывода в шаблонах.
Поддерживаемые типы подполей
  • строка;
  • число;
  • файл;
  • текст (в том числе многострочный / HTML-редактор);
  • дата;
  • привязка к элементу;
  • привязка к разделу;
  • список;
  • цвет;
  • Яндекс.Карта.
Ключевой сценарий: блочная структура страниц

Один из главных сценариев, под который проектировался модуль — страницы, собранные из смысловых блоков:

  • «Кому подойдет»
  • «Этапы работы»
  • «Стоимость»
  • «Примеры работ»
  • «Частые вопросы»
  • «Преимущества»
  • «Характеристики»

Каждый такой блок можно оформить как отдельное комбинированное свойство.
Внутри блока — свой набор подполей: заголовок, описание, изображение, список, ссылка, дата, привязки и т.д.

Результат для проекта:

  • нет необходимости плодить десятки типовых инфоблоков;
  • структура страницы адаптируется под конкретный раздел/продукт;
  • контент остаётся управляемым и предсказуемым для редакторов;
  • фронтенд-команда получает чистые структурированные данные для любой вёрстки.
Сценарий 1: Контакты

Удобно для карточек филиалов, офисов, точек продаж, шоурумов.

Рекомендуемая структура:

  • Адрес — текст;
  • Карта — Яндекс.Карта (только для элемента);
  • Телефон — текст;
  • Email — текст.

Что это даёт: единый формат контактных данных, быстрое редактирование менеджером и готовая основа для вывода контактных блоков в нужном дизайне.

Сценарий 2: События

Подходит для анонсов мероприятий, вебинаров, презентаций, обучающих программ.

Рекомендуемая структура:

  • Дата начала — дата;
  • Дата окончания — дата;
  • Место проведения — текст;
  • Организатор — привязка к элементу.

Что это даёт: аккуратная событийная карточка с чёткой структурой, удобная фильтрация и единый стандарт для всех событий на сайте.

Сценарий 3: Коммерческие предложения

Идеально для тарифных сеток, пакетов услуг, ценовых блоков и промо-предложений.

Рекомендуемая структура:

  • Название тарифа — строка;
  • Цена — число;
  • Состав услуг — многострочный текст или список;
  • Метка «Хит/Рекомендуем» — список.

Что это даёт: прозрачное управление тарифами без отдельного сложного каталога, быстрое обновление цен/состава и удобный вывод в карточках и лендингах.

Примеры кода для разработчиков

Готовые сниппеты для быстрой интеграции в шаблоны Битрикс


Пример 1. Элемент инфоблока, свойство одиночное (MULTIPLE = N)

VALUE приходит как массив подполей.


<?php
$contacts = $arResult['PROPERTIES']['CONTACTS_BLOCK']['VALUE'] ?? [];
if (!is_array($contacts) || empty($contacts)) {
   return;
}


$address = (string)($contacts['ADDRESS'] ?? '');
$phone   = (string)($contacts['PHONE'] ?? '');
$email   = (string)($contacts['EMAIL'] ?? '');
?>
<div class="contacts-block">
   <?php if ($address !== ''): ?>
       <div>Адрес: <?= htmlspecialcharsbx($address) ?></div>
   <?php endif; ?>


   <?php if ($phone !== ''): ?>
       <div>Телефон: <a href="tel:<?= htmlspecialcharsbx($phone) ?>"><?= htmlspecialcharsbx($phone) ?></a></div>
   <?php endif; ?>


   <?php if ($email !== ''): ?>
       <div>Email: <a href="mailto:<?= htmlspecialcharsbx($email) ?>"><?= htmlspecialcharsbx($email) ?></a></div>
   <?php endif; ?>
</div>



Пример 2. Элемент инфоблока, свойство множественное (MULTIPLE = Y)

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>

Рекомендации по использованию
  • используйте стабильные коды подполей (TITLE, PRICE, DATE_FROM) и не меняйте их без необходимости;
  • для публичного шаблона всегда экранируйте вывод через htmlspecialcharsbx;
  • для сложных блоков выносите разбор JSON в result_modifier.php, а в template.php оставляйте только вывод;
  • для повторяющихся секций используйте множественные свойства и единый шаблон рендера.

Почему это выгодно бизнесу
  • быстрее запуск новых страниц и направлений;
  • меньше затрат на разработку и сопровождение;
  • единый подход к контенту в разных разделах сайта;
  • меньше ошибок редакторов;
  • проще масштабировать проект при росте ассортимента и услуг.
Почему это удобно разработчику
  • структурированные данные в одном свойстве;
  • простая интеграция в шаблоны компонентов;
  • меньше «зоопарка» инфоблоков и технического долга;
  • гибкая эволюция проекта без тяжёлых миграций.

  1. Установите модуль через Маркетплейс Битрикс.

  2. При создании свойства инфоблока выберите тип «Универсальное комбинированное свойство»

    Для разделов — создайте UF с типом «Комбинированное свойство (для разделов)»

Для работы свойства привязка "привязка к яндекс карте" необходимо ввести API ключ яндекс карт в настройках модуля "Управление структурой".
Ключ можно получить здесь https://developer.tech.yandex.ru
Техническая поддержка: e-mail xlogic.studio@yandex.ru
Сайт: xlogic.ru
Время работы: пн–пт с 10:00 до 19:00 (МСК, UTC+3).
Время реакции на заявку: в течение 1 рабочего дня

x