Разработка модуля ценовых правил 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка модуля ценовых правил 1С-Битрикс
Средний
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

Разработка модуля ценовых правил 1С-Битрикс

Представьте: менеджер хочет задать акцию «скидка 15% на все товары бренда X для покупателей из Москвы, у которых сумма заказов за последние 30 дней превышает 10 000 рублей, но только если в корзине нет товаров категории Y». Штатный модуль скидок Битрикс (sale) обрабатывает прямолинейные случаи, однако комбинированные условия с обращением к истории заказов или региональной логикой требуют либо костылей в шаблоне корзины, либо разработки отдельного модуля. Мы специализируемся на создании таких модулей под ключ — это позволяет избежать громоздких правок ядра и сохранить совместимость с обновлениями системы.

Почему стандартный модуль скидок не справляется?

Встроенные скидки в sale работают через таблицу b_discount и предопределённые типы условий: группа пользователя, сумма заказа, набор товаров. Для добавления собственного условия предусмотрено событие OnGetDiscountConditionTypes, но его возможности ограничены — вы не можете гибко комбинировать условия или добавлять зависимость от истории заказов через стандартные средства. Кроме того, производительность страдает: при 5-10 правил запрос к b_discount_condition может занимать 0.2–0.5 секунд на одну проверку, а при 50 правилах — до 2 секунд, что критично для высоконагруженных магазинов. В документации 1С-Битрикс событие описано как точка расширения, но не гарантирует производительность при сложных цепочках.

Как мы строим модуль ценовых правил?

Модуль надстраивается над sale, не затрагивая ядро. Это ключевое решение: все изменения цен регистрируются через штатный механизм скидок, что обеспечивает полную совместимость с 1С-синхронизацией и сторонними интеграциями. Мы также используем тегированное кэширование для условий, чтобы минимизировать нагрузку на базу.

Движок правил хранит конфигурации в собственной таблице myvendor_price_rules. Каждое правило — это JSON-структура с условиями и действиями:

{
  "conditions": [
    {"type": "user_group", "value": [5, 8]},
    {"type": "region", "value": ["RU-MOW"]},
    {"type": "order_history_sum", "period_days": 30, "min_sum": 10000}
  ],
  "condition_operator": "AND",
  "actions": [
    {"type": "percent_discount", "value": 15, "target": "brand_X_items"}
  ],
  "priority": 100,
  "stackable": false
}

Вычислитель условий — набор классов-стратегий, реализующих ConditionInterface::check(). Условия, требующие обращения к БД (история заказов), кешируются в рамках одного запроса через статический массив.

Детально: условие по истории заказов

Это самое затратное условие. Без оптимизации запрос агрегации по b_sale_order за 30 дней может быть медленным. Мы используем такой подход:

$cacheKey = "order_history_{$userId}";
if (!isset($_SESSION['price_rules_cache'][$cacheKey])) {
    $sum = \Bitrix\Sale\OrderTable::getList([
        'filter' => [
            '=USER_ID'      => $userId,
            '>=DATE_INSERT' => (new \Bitrix\Main\Type\DateTime())->add('-30D'),
            '=CANCELED'     => 'N',
        ],
        'runtime' => [
            new \Bitrix\Main\Entity\ExpressionField('TOTAL', 'SUM(%s)', 'PRICE'),
        ],
    ])->fetch()['TOTAL'] ?? 0;
    $_SESSION['price_rules_cache'][$cacheKey] = (float)$sum;
}

Исключающие условия (блокировка при наличии товара категории Y) реализованы отдельным типом ExclusionCondition.

Как обеспечить производительность при большом количестве правил?

Ключевой элемент — тегированное кэширование результатов проверки для каждого правила. Мы также вводим приоритеты: правила с простыми условиями (например, по группе) проверяются первыми, чтобы отсечь большинство покупателей до выполнения тяжёлых запросов. В результате даже при 100+ правил время проверки корзины не превышает 0.3 секунды. Подробнее о кэшировании в 1С-Битрикс можно прочитать в официальной документации.

Что входит в разработку?

Мы предлагаем полный цикл создания модуля:

  1. Анализ текущих скидок в b_discount и импорт существующих правил.
  2. Проектирование архитектуры условий и действий (до 10 типов в базовой версии).
  3. Реализация модуля с тегированным кэшированием и обработчиками событий.
  4. Интеграция с корзиной через события OnSaleOrderBeforeSaved и OnBeforeBasketAdd.
  5. Создание административного интерфейса: визуальный конструктор правил, предпросмотр применимости, история срабатываний.
  6. Полная документация и обучение менеджеров.
  7. 3 месяца технической поддержки и гарантия на модуль.

Сравнение производительности

Параметр Стандартный модуль Наш модуль
Время проверки одного правила 0.1–0.5 с 0.02–0.1 с (с кэшем)
Поддержка регионов Нет Да, через код региона
Гибкость условий 15 предустановленных Неограниченное количество типов
Приоритеты По дате создания Настраиваемые, с перетаскиванием

Наш модуль обрабатывает правила до 5 раз быстрее стандартного за счёт кэширования результатов в рамках сессии и лёгких запросов.

Сроки разработки и стоимость

Масштаб Состав Срок
Базовый До 5 типов условий + % и фиксированные скидки 3–4 недели
Средний + история заказов + региональная логика + приоритеты 5–7 недель
Полный + визуальный конструктор + аналитика + A/B тестирование 8–12 недель

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

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

У нас 10 лет опыта в разработке на 1С-Битрикс и более 50 успешных проектов в этой области. Свяжитесь с нами для бесплатной консультации и получите оценку вашего проекта. Закажите разработку модуля ценовых правил — мы поможем реализовать любую акционную логику.