Доробка стандартних компонентів через 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
    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, звичайний запит).
  • Документація з підтримки.

Процес оцінки та роботи

  1. Збір даних — вивчаємо ваш поточний компонент та бізнес-вимоги.
  2. Аудит — аналізуємо точки розширення, кешування, AJAX-сценарії.
  3. Проектування — пропонуємо архітектуру epilog-файлу.
  4. Оцінка — надаємо вартість та терміни після аналізу.
  5. Розробка — пишемо код, інтегруємо з вашими системами.
  6. Тестування — перевіряємо на всіх режимах (кеш, AJAX, без кешу).
  7. Запуск — розгортаємо на production, передаємо документацію.

Орієнтири за термінами

Терміни залежать від складності: від 3 робочих днів для типової задачі до 2 тижнів для комплексної інтеграції. Точні терміни визначаються після аналізу. Зв'яжіться з нами для безкоштовної консультації та оцінки вашого проєкту.

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

Купили «Малий бізнес», запустили магазин, трафік виріс — і сайт впав. Композитний кеш тільки в «Бізнес», веб-кластер теж. Апгрейд — доплата різниці плюс робота по налаштуванню нових модулів. Правильний підбір та налаштування редакції 1С-Бітрікс одразу економлять значну частину бюджету на ліцензію та виключають витрати на позаплановий апгрейд. За роки роботи з Бітріксом ми провели багато апгрейдів і бачили всі типові помилки: від покупки «Старту» під великий каталог до використання «Бізнесу» для лендінгу з низькою відвідуваністю. Наш принцип — підібрати редакцію під реальні завдання та налаштувати її так, щоб не переплачувати за непотрібні модулі, але й не впиратися в стелю при першому стрибку трафіку.

Редакції 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 разів порівняно з динамічною генерацією. Для магазину з великим трафіком без композиту сервер починає «потіти»: середній час відповіді зростає, база даних перевантажується, сторінки чекауту падають по таймауту. Композит вирішує проблему кардинально — HTML віддається nginx'ом без запуску PHP. Докладніше про технологію — в офіційній документації. Важливо правильно налаштувати 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+ уніків/день — тільки «Бізнес» з композитом і кластером

По бюджету:

  • Різниця між редакціями — варіюється (наприклад, Старт vs Бізнес — значно)
  • Апгрейд у будь-який момент — доплата різниці у вартості ліцензій
  • Наш принцип: беріть мінімально достатню. Але якщо знаєте, що через півроку знадобиться композит — беріть «Бізнес» одразу, тому що апгрейд — це ще й робота по налаштуванню

Чому апгрейд редакції вигідний при правильному виборі?

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С-Бітрікс прямо зараз.