Главная страница / Блог / Единый прайс-лист для услуг в 1С-Битрикс через отдельный инфоблок
1С-Битрикс

Единый прайс-лист для услуг в 1С-Битрикс через отдельный инфоблок

3 июля 2026 5 минут чтения 605 просмотров

Если сайт содержит десятки или сотни услуг, рано или поздно возникает проблема с обновлением цен. Стоимость одной и той же услуги может выводиться в списке услуг, на детальной странице, на главной странице, в блоке рекомендаций и других местах. В результате изменение одной цены превращается в поиск всех страниц, где она используется.

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

Структура инфоблоков

Структура инфоблоков

Для реализации понадобится всего два инфоблока:

  • Услуги — основной инфоблок сайта.
  • Прайс-лист — отдельный инфоблок, в котором будут храниться все цены.

В инфоблоке Прайс-лист создаем множественное свойство PRICE. Каждое значение свойства — отдельная стоимость услуги. В описании каждого значения можно хранить пояснение, например: «Первичный прием», «Повторный прием», «Онлайн-консультация» и т.д.

В инфоблоке Услуги создаем свойство типа «Привязка к элементу», которое будет ссылаться на инфоблок «Прайс-лист». Назовем его PRICE_ITEM.

Теперь при редактировании услуги менеджеру достаточно выбрать нужный элемент из списка. Не нужно помнить ID элементов или вводить их вручную, а вероятность ошибки практически сводится к нулю.

Инфоблок "Услуги"

Удаление зуба
        │
        ▼
PRICE_ITEM
        │
        ▼
Инфоблок "Прайс-лист"

• 3 500 руб. — Простое удаление
• 5 000 руб. — Сложное удаление
• 8 000 руб. — Удаление зуба мудрости

В результате одна запись прайс-листа может использоваться сразу в нескольких услугах или даже на нескольких сайтах при использовании многосайтовости.

Вывод минимальной цены в списке услуг

На странице списка услуг обычно достаточно показать минимальную стоимость. Получаем элемент прайс-листа по привязке и выводим минимальное значение из свойства PRICE.

<?php

if (!empty($arItem["DISPLAY_PROPERTIES"]["PRICE_ITEM"]["VALUE"])) {

    $arFilter = [
        "IBLOCK_ID" => ID_ИНФОБЛОКА_ПРАЙСА,
        "ID" => $arItem["DISPLAY_PROPERTIES"]["PRICE_ITEM"]["VALUE"]
    ];

    $arSelect = ["ID"];

    $rsResult = CIBlockElement::GetList([], $arFilter, false, false, $arSelect);

    if ($ob = $rsResult->GetNextElement()) {

        $props = $ob->GetProperties();

        echo number_format(
            min($props["PRICE"]["VALUE"]),
            0,
            '',
            ' '
        ) . ' руб.';

    }

}

?>

Такой вариант отлично подходит для карточек услуг, каталога, главной страницы и любых других списков.

Вывод полного прайс-листа на детальной странице

На детальной странице обычно требуется показать все варианты стоимости вместе с их описанием.

<?php

if (!empty($arResult["DISPLAY_PROPERTIES"]["PRICE_ITEM"]["VALUE"])) {

    $arFilter = [
        "IBLOCK_ID" => ID_ИНФОБЛОКА_ПРАЙСА,
        "ID" => $arResult["DISPLAY_PROPERTIES"]["PRICE_ITEM"]["VALUE"]
    ];

    $arSelect = ["ID"];

    $rsResult = CIBlockElement::GetList([], $arFilter, false, false, $arSelect);

    if ($ob = $rsResult->GetNextElement()) {

        $props = $ob->GetProperties();

        foreach ($props["PRICE"]["VALUE"] as $key => $price) {
?>

<div class="price-row">

    <div class="price">
        <?=$price?> руб.
    </div>

    <div class="description">
        <?=$props["PRICE"]["DESCRIPTION"][$key]?>
    </div>

</div>

<?php
        }

    }

}

?>

Преимущества такого подхода

  • все цены хранятся в одном месте;
  • любое изменение автоматически отображается на всем сайте;
  • исключаются расхождения между страницами;
  • можно хранить несколько цен для одной услуги;
  • удобно импортировать прайс из Excel, CRM или 1С;
  • один прайс можно использовать сразу для нескольких услуг;
  • менеджерам не нужно искать и изменять стоимость на десятках страниц.

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

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

Комментарии

Будем рады вашему мнению и вопросам по статье.