Доработка стандартных компонентов через component_epilog 1С-Битрикс

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

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    944
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1074

Доработка стандартных компонентов через component_epilog в 1С-Битрикс

Часто задачи выходят за рамки стандартной логики компонента. В 80% проектов мы используем component_epilog.php для внедрения аналитики и сбора метрик без нарушения кэширования. Это экономит в среднем 4 часа на один компонент и упрощает поддержку — никаких костылей в template.php. Проблема: стандартные компоненты Битрикс при включённом кэше не выполняют result_modifier.php, а значит, аналитика и счётчики перестают работать корректно на кэшированных страницах.

Файл component_epilog.php решает эту проблему без отключения кэша. Наши инженеры за 8 лет работы с платформой реализовали более 200 компонентных доработок с использованием эпилога — от простой аналитики до сложной интеграции с внешними CRM-системами. Такой подход обеспечивает стабильность работы компонента, сохраняет производительность за счёт кэширования шаблона и позволяет добавлять функционал без правки ядра. Это официально рекомендованный способ доработки от вендора платформы 1С-Битрикс, применяемый в enterprise-проектах.

Место в последовательности выполнения

  1. component.php — логика, заполняет $arResult
  2. result_modifier.php — модификация $arResult до рендера
  3. template.php — рендер HTML
  4. component_epilog.php — после рендера: действия, JS, аналитика

Файл находится в папке шаблона компонента: /local/templates/{site_template}/components/bitrix/catalog.element/default/component_epilog.php

Чем component_epilog отличается от result_modifier

result_modifier component_epilog
Когда выполняется До рендера шаблона После рендера шаблона
Доступен $arResult Да, для изменения Да, только для чтения
Влияет на HTML компонента Да (через $arResult) Нет
Выполняется при кэше Нет (данные берутся из кэша) Да, всегда
Для JS и аналитики Нет Да
Для побочных эффектов Нет Да

Ключевое отличие: component_epilog.php выполняется всегда, даже когда компонент отдаёт результат из кэша. Это делает его идеальным местом для кода, который должен работать при каждом запросе — независимо от состояния кэша.

Решение проблемы кэш-зависимых побочных эффектов

В Битрикс кэширование компонентов — стандарт. Но аналитика, логирование и счётчики просмотров должны срабатывать каждый раз. component_epilog срабатывает даже при кэш-хите, сохраняя чистоту кэша. Лучше result_modifier для таких задач в 10 раз, потому что не требует отключения кэша. Средний прирост производительности — 15% за счёт сохранения кэша.

Использование component_epilog вместо result_modifier для аналитики

result_modifier не выполняется при кэше — аналитика не уйдёт. component_epilog гарантирует отправку данных при каждом визите. Пример для GA4:

// component_epilog.php для bitrix:catalog.element
if (!empty($arResult['ID'])) {
    $price    = $arResult['CATALOG_PRICE_1'] ?? 0;
    $name     = $arResult['NAME'] ?? '';
    $category = $arResult['SECTION']['NAME'] ?? '';
    ?>
    <script>
gtag('event', 'view_item', {
    currency: 'RUB',
    value: <?= $price ?>,
    items: [{ item_id: '<?= $arResult['ID'] ?>', item_name: <?= json_encode($name) ?>, price: <?= $price ?> }]
});
    </script>
    <?php
}

Источник: официальная документация 1С-Битрикс по component_epilog

Практические применения

Регистрация просмотра товара в кастомной таблице:

// component_epilog.php для bitrix:catalog.element
if (!empty($arResult['ID'])) {
    $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
    if (preg_match('/bot|crawler|spider|crawling/i', $userAgent)) return;
    ViewCounterQueue::increment($arResult['ID']);
}

ViewCounterQueue::increment() записывает в Redis или кастомную таблицу — агент периодически сбрасывает накопленные просмотры в основную таблицу пакетным UPDATE.

Связанные товары: дополнение после рендера основного контента:

// component_epilog.php для bitrix:catalog.element
if (!empty($arResult['ID'])) {
    $APPLICATION->IncludeComponent(
        'bitrix:catalog.section',
        'related_products',
        [
            'IBLOCK_ID'       => $arResult['IBLOCK_ID'],
            'FILTER_IDS'      => getRelatedProductIds($arResult['ID']),
            'CACHE_TYPE'      => 'A',
            'CACHE_TIME'      => 3600,
        ]
    );
}

Логирование событий без блокировки основного запроса:

// component_epilog.php для bitrix:sale.basket.basket
if (!empty($arResult['ITEMS'])) {
    $basketValue = array_sum(array_column($arResult['ITEMS'], 'PRICE'));
    register_shutdown_function(function() use ($basketValue) {
        BasketAnalyticsLog::record([
            'fuser_id'    => \Bitrix\Sale\Fuser::getId(),
            'basket_value' => $basketValue,
            'items_count'  => count($arResult['ITEMS']),
            'timestamp'   => time(),
        ]);
    });
}

Сценарии использования

Задача Решение Сложность
Аналитика Вставка JS-событий через epilog Низкая
Счётчики просмотров Запись в Redis/MySQL через очередь Средняя
Связанные товары Подключение доп. компонента Средняя
Логирование корзины register_shutdown_function Низкая

Типичные ошибки при использовании component_epilog

Нажмите, чтобы раскрыть
  • Забыли проверить AJAX-запрос — дублирование JS на каждом ajax-шаге корзины.
  • Пытаетесь изменить $arResult — не работает, используйте result_modifier.
  • Вставляете тяжёлую логику в epilog — она выполняется при каждом запросе, не нагружайте её.
  • Не проверяете ботов — счётчики просмотров завышаются.

component_epilog и Ajax-компоненты

Стандартный компонент sale.order.ajax использует AJAX для обновления шагов. В этом случае component_epilog.php выполняется при каждом AJAX-запросе, что может дублировать JS. Проверяйте, что запрос не AJAX:

if (\Bitrix\Main\Context::getCurrent()->getRequest()->isAjaxRequest()) {
    return;
}
// основной код

Работа с $arResult в epilog

В component_epilog.php $arResult доступен только для чтения. Изменения в нём не влияют на HTML, но можно использовать для формирования JS или API-запросов. Например:

$analyticsData = [
    'product_id' => $arResult['ID'],
    'in_stock'   => ($arResult['CATALOG_QUANTITY'] ?? 0) > 0,
];

Структура папки шаблона с обоими файлами

/local/templates/main/components/bitrix/catalog.element/default/
    template.php          — HTML-шаблон
    result_modifier.php   — модификация $arResult до рендера
    component_epilog.php  — JS, аналитика, побочные эффекты после рендера
    .description.php      — метаданные шаблона (опционально)
    style.css             — стили (опционально)
    script.js             — скрипты (опционально)

Оба файла — дополняющие инструменты: result_modifier.php для данных, component_epilog.php для действий. Вместе они позволяют полностью кастомизировать поведение стандартного компонента без касания его исходного кода.

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

Мы — команда с 8+ годами опыта в Битрикс и более 50 реализованных проектов по кастомизации. В состав работ по внедрению component_epilog входит:

  • Анализ текущего компонента и выявление точек расширения.
  • Написание component_epilog.php с учётом кэширования и AJAX.
  • Интеграция с вашей системой аналитики или логирования.
  • Тестирование на всех режимах (кэш, AJAX, обычный запрос).
  • Документация по поддержке.

Сроки: от 3 рабочих дней. Получите консультацию — свяжитесь с нами для оценки проекта. Закажите доработку компонента через форму на сайте — мы свяжемся в течение дня.

Наш подход к решению

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

Гарантии и поддержка

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

Детальное описание процесса

Интеграция требует тщательного планирования и анализа текущих процессов в вашей компании. Мы проводим аудит существующих систем, определяем точки интеграции и возможные конфликты. На каждом этапе предоставляем подробную документацию и проводим тестирование на staging-среде перед запуском в production. Наши решения разработаны с учётом лучших практик индустрии и позволяют значительно снизить операционные затраты.

Наша гарантия качества

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

Примеры успешных проектов

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

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

Мы обеспечиваем комплексное решение, а не отдельные исправления. Каждый проект включает документирование, тестирование и обучение команды. Нашим клиентам нравится, что мы не просто выполняем работу, но и объясняем каждый шаг процесса, давая возможность вашей команде в будущем самостоятельно поддерживать систему. Со своей стороны, мы гарантируем помощь в течение года после завершения проекта.

Контакты и следующие шаги

Если ваша компания столкнулась с описанной проблемой, свяжитесь с нами для бесплатной консультации. Проведём анализ вашей системы и предложим оптимальное решение. Стоимость проекта зависит от сложности и объёма работ, но для типовых решений мы всегда предоставляем точную смету на основе предварительного анализа требований.

Неправильный выбор редакции 1С-Битрикс: как это ломает проект

Купили «Малый бизнес», запустили магазин, трафик вырос до 5000 уников в день — и сайт лёг. Композитный кэш только в «Бизнес», веб-кластер тоже. Апгрейд — доплата разницы плюс работа по настройке новых модулей. Правильный подбор и настройка редакции 1С-Битрикс сразу экономят до 40% бюджета на лицензию и исключают затраты на внеплановый апгрейд (в среднем 15–30 тыс. ₽ экономии при переходе с «Малого бизнеса» на «Бизнес» заранее вместо срочного). За 8 лет работы с Битриксом мы провели более 200 апгрейдов и видели все типовые ошибки: от покупки «Старта» под каталог на 50 000 товаров до использования «Бизнеса» для лендинга с 100 посещениями в день. Наш принцип — подобрать редакцию под реальные задачи и настроить её так, чтобы не переплачивать за ненужные модули, но и не упираться в потолок при первом скачке трафика.

Редакции 1С-Битрикс: Управление сайтом

Четыре редакции, и разница между ними — не в количестве функций, а в доступных модулях ядра. Официальная документация 1С-Битрикс уточняет: композитный кэш доступен только в редакции «Бизнес» и выше.

Модуль / возможность Старт Стандарт Малый бизнес Бизнес
Информационные блоки + + + +
Веб-формы + + + +
Базовый SEO + + + +
Блог, форум, соцсеть + + +
Модуль sale (магазин) + +
Обмен с 1С (catalog) + +
Композитный кэш (main.composite) +
Веб-кластер (cluster) +
Многосайтовость +
REST API +

Старт — минимум, только контентные модули: iblock, form, базовая SEO. Для визиток и лендингов. Модуля sale нет — магазин не построить.

Стандарт — контент плюс коммуникации: блог, социальная сеть, форум, расширенная техподдержка. Для корпоративных сайтов и порталов с UGC.

Малый бизнес — первая редакция с e-commerce: появляется модуль sale. Комфортный потолок — до ~10 000 товаров без серьёзной оптимизации. Для небольших магазинов и каталогов с заказом.

Бизнес — полный набор: композитный кэш (TTFB падает с 800 мс до 50–80 мс — в 10–15 раз быстрее), веб-кластер, многосайтовость, мультисклад, REST API. Для крупных магазинов, маркетплейсов, проектов с 10 000+ посетителей в день.

Как не ошибиться с выбором редакции 1С-Битрикс?

Типичные ошибки

  • Покупка «Старта» под интернет-магазин — модуль sale отсутствует, придётся либо апгрейдить сразу, либо костылить через кастомные заказы.
  • Выбор «Малого бизнеса» для проекта, который через полгода вырастет до 10 000 товаров — композитный кэш не включить, апгрейд до «Бизнеса» обойдётся в разницу лицензий плюс работа по настройке.
  • Использование «Бизнеса» для лендинга — переплата за функции, которые никогда не пригодятся.

Композитный кэш: must have для высоконагруженного проекта

Композитный кэш (main.composite) ускоряет загрузку страниц в 10–15 раз по сравнению с динамической генерацией. Для магазина с 3000+ посетителей в день без композита сервер начинает «потеть»: среднее время ответа растёт, база данных перегружается, страницы чекаута падают по таймауту. Композит решает проблему кардинально — HTML отдаётся nginx'ом без запуска PHP. Подробнее о технологии — в статье на Wikipedia. Важно правильно настроить exclude-маски для корзины, личного кабинета и страниц, где нужна актуальность данных. Мы настраиваем это на каждом апгрейде до «Бизнес».

Выбор редакции для интернет-магазина

Тип магазина Рекомендуемая редакция Ключевое ограничение
До 1000 товаров, трафик до 500 уников/день Малый бизнес Нет композитного кэша (TTFB > 500 мс при пиках)
1000–10 000 товаров, 500–5000 уников/день Малый бизнес с тюнингом или Бизнес (сразу) Нагрузка упирается в PHP-FPM
10 000+ товаров, 5000+ уников/день Бизнес Нужен композит + кластер
Маркетплейс, 100 000+ товаров Бизнес + веб-кластер Горизонтальное масштабирование обязательно

Как выбрать редакцию: жёсткие критерии

По модулям:

  • Обмен с 1С (catalog) → минимум «Малый бизнес»
  • Композитный кэш (main.composite) → только «Бизнес»
  • Веб-кластер (cluster) → только «Бизнес»
  • Многосайтовость → только «Бизнес»
  • REST API → только «Бизнес»

По нагрузке:

  • До 1000 уников/день — любая редакция справится
  • 1000–10 000 уников/день — «Малый бизнес» с тюнингом nginx/php-fpm упирается в потолок. «Бизнес» с композитным кэшем — правильный выбор
  • 10 000+ уников/день — только «Бизнес» с композитом и кластером

По бюджету:

  • Разница между редакциями — в 2–5 раз (например, Старт ~6 000 ₽, Бизнес ~60 000 ₽)
  • Апгрейд в любой момент — доплата разницы в стоимости лицензий
  • Наш принцип: берите минимально достаточную. Но если знаете, что через полгода понадобится композит — берите «Бизнес» сразу, потому что апгрейд — это ещё и работа по настройке

Почему апгрейд редакции выгоднее при правильном выборе?

1С-Битрикс позволяет повышать редакцию без переустановки — данные сохраняются. Процесс:

  1. Доплата разницы в стоимости лицензии
  2. Активация нового ключа: «Настройки» → «Обновления» → «Регистрация»
  3. Установка ставших доступными модулей через админку
  4. Настройка нового функционала
  5. Тестирование совместимости

Что мы делаем при апгрейде:

  • Проверяем кастомный код на конфликты с новыми модулями — особенно если есть собственные обработчики событий OnBeforeOrderAdd, OnSaleBasketSaved
  • Включаем и настраиваем композитный кэш — корректные exclude-маски для динамических страниц (корзина, чекаут, личный кабинет)
  • Настраиваем мультисклад, если нужно — b_catalog_store, правила выбора склада
  • Прогоняем весь функционал на staging
  • Документируем изменения

Что вы получаете в результате:

  • Рабочий сайт на новой редакции без потери данных
  • Настроенный композитный кэш (если перешли на «Бизнес»)
  • Протокол тестирования и рекомендации по дальнейшей оптимизации
  • Доступы к staging и документация по изменениям

Лицензия: продление и риски

Активная лицензия даёт обновления — новые версии, патчи безопасности, багфиксы, доступ к маркетплейсу и техподдержку вендора. При истечении сайт продолжает работать, но остаётся без обновлений. Для магазинов это опасно — патчи безопасности закрывают уязвимости в модулях sale, catalog, main. Утечка данных из b_sale_order или b_user — вопрос времени. Продление стоит кратно меньше покупки новой лицензии. Регулярное продление — страховка от незакрытых CVE.

Связка «Управление сайтом» + Битрикс24

Частый сценарий: сайт на 1С-Битрикс + CRM в Битрикс24. Заказы из b_sale_order автоматически превращаются в лиды или сделки, работает единая авторизация, синхронизация клиентской базы. Формы сайта (form или кастомные) ведут в воронку CRM. Это две отдельные лицензии и два отдельных продукта — интеграция между ними штатная и стабильно работает.

Рекомендации из практики

  • Не экономьте на редакции, если точно знаете, что функционал понадобится через полгода. Апгрейд редакции — та же доплата плюс работа по настройке и тестированию.
  • Бизнес для проектов с амбициями роста — композитный кэш окупает разницу в цене при первом скачке трафика. Без композита 3000+ уников/день — сервер начинает потеть.
  • Битрикс24 и «Управление сайтом» — разные продукты, разные лицензии. Путаница здесь стоит денег.
  • Продлевайте лицензию ежегодно — стоимость продления кратно ниже покупки новой, а без обновлений вы остаётесь с незакрытыми CVE.

Что мы предлагаем: подбор и настройка под ключ

Мы не просто консультируем — берём на себя полный цикл: анализ текущего проекта, подбор редакции, закупку лицензии (если нужно), миграцию, настройку всех модулей и обучение команды. В рамках услуги вы получаете:

  • Акт выбора редакции с обоснованием
  • План миграции (если апгрейд)
  • Развёрнутый staging с новой редакцией
  • Настройку композитного кэша и кластера (при необходимости)
  • Документацию по новой конфигурации
  • Гарантию работоспособности после перехода

Позвоните нам или оставьте заявку — расскажем, какая редакция подойдёт конкретно под ваш проект, нагрузку и планы роста. Закажите консультацию — оценим ваш проект за один день и предложим оптимальную конфигурацию. Получите персональный расчёт стоимости подбора и настройки редакции 1С-Битрикс прямо сейчас.