Доопрацювання компонентів Бітрікс через result_modifier

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Доопрацювання компонентів Бітрікс через result_modifier
Середній
~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

Доопрацювання компонентів Бітрікс через result_modifier

Наші інженери регулярно отримують такі задачі: вивести список товарів через catalog.section з додатковими даними — залишками по складу, рейтингами, кастомними властивостями. Стандартні компоненти Бітрікс не дають таких даних «з коробки». Багато розробників лізуть в ядро або копіюють компонент цілком і отримують проблеми з оновленнями платформи.

Ми використовуємо result_modifier.php — файл, який виконується після роботи компонента, але до рендеру шаблону. Він дозволяє доповнити $arResult будь-якими даними без єдиної правки ядра. Згідно з офіційною документацією 1С-Бітрікс, result_modifier призначений для трансформації даних перед шаблоном. Це дає повну сумісність з оновленнями платформи та знижує час доопрацювання в 2–3 рази порівняно з перевизначенням компонента. Економія бюджету сягає 30–50%, що на типовій задачі становить від 40 000 до 80 000 грн. А всі зміни кешуються разом з основними даними.

Принцип роботи result_modifier

Послідовність виконання компонента:

  1. component.php — логіка компонента, заповнює $arResult.
  2. result_modifier.php — модифікація $arResult в шаблоні.
  3. template.php — рендер HTML.
  4. component_epilog.php — постобробка після рендеру.

Файл result_modifier.php живе в папці шаблону компонента:

/local/templates/{site_template}/components/bitrix/catalog.element/default/result_modifier.php

Якщо ви створили шаблон через адміністративний інтерфейс (Налаштування → Компоненти → Шаблони компонентів), файл створюється автоматично.

Доступні змінні всередині

Змінна Опис
$arResult Масив даних компонента (можна змінювати)
$arParams Параметри виклику компонента
$this Об'єкт компонента CBitrixComponent
$USER, $APPLICATION, $DB Глобальні об'єкти Бітрікс

Переваги перед перевизначенням компонента

Перевизначення компонента через /local/components вимагає копіювання всієї логіки та її підтримки при оновленнях. result_modifier працює поверх існуючого компонента, зберігаючи сумісність з оновленнями. Час доопрацювання скорочується в 2–3 рази, а бюджет знижується на 30–50% (від 50 000 до 100 000 грн економії на середньому проекті). При цьому ви не втрачаєте в продуктивності — всі зміни кешуються разом з основними даними. Якщо порівнювати, result_modifier краще за перевизначення компонента в 2–3 рази за швидкістю реалізації та на 30–50% ефективніше за бюджетом.

Чому result_modifier ефективніший за перевизначення компонента?

Тому що він не потребує копіювання всього компонента, а значить, оновлення платформи не ламають ваш функціонал. Перевизначення компонента вимагає ручного злиття змін при кожному оновленні, тоді як result_modifier просто доповнює результат. Для проекту з 5 доопрацювань річна економія на підтримці сягає 200 000 грн.

Як додати рейтинг товару через result_modifier?

В картці товару (catalog.element) $arResult не містить рейтинг з таблиці відгуків. Вирішуємо однією функцією:

// result_modifier.php for bitrix:catalog.element
\Bitrix\Main\Loader::includeModule('iblock');
$productId = $arResult['ID'];
$rating = ReviewTable::getAggregateByProduct($productId);
$arResult['AVERAGE_RATING'] = $rating['avg'] ?? 0;
$arResult['REVIEWS_COUNT'] = $rating['count'] ?? 0;

Залишки по складах в списку товарів

// result_modifier.php for bitrix:catalog.section
\Bitrix\Main\Loader::includeModule('catalog');
$productIds = array_column($arResult['ITEMS'], 'ID');
$stocks = \Bitrix\Catalog\StoreProductTable::getList([
    'filter' => ['PRODUCT_ID' => $productIds, 'STORE.ACTIVE' => 'Y', 'STORE.XML_ID' => 'MAIN_WAREHOUSE'],
    'select' => ['PRODUCT_ID', 'AMOUNT'],
])->fetchAll();
$stockMap = array_column($stocks, 'AMOUNT', 'PRODUCT_ID');
foreach ($arResult['ITEMS'] as &$item) {
    $item['MAIN_STOCK'] = $stockMap[$item['ID']] ?? 0;
    $item['IN_STOCK'] = $item['MAIN_STOCK'] > 0;
}
unset($item);

Зміна цін для груп користувачів

Для показу оптової ціни авторизованим користувачам в result_modifier перевіряємо групу і підмінюємо ціну:

if ($USER->IsAuthorized() && in_array(5, $USER->GetUserGroupArray())) {
    $arResult['PRICE'] = $arResult['PRICE'] * 0.9; // знижка 10%
}

Кешування та продуктивність

Якщо всередині result_modifier виконується важкий запит (наприклад, до зовнішнього API або велика вибірка), обгорніть його в кеш. Інакше при кожному хіті буде виконуватися зайва робота. Для інтернет-магазину з 5000 товарів час обробки списку зростає лише на 0.2 секунди завдяки кешу.

$cacheId = 'product_extra_' . $arResult['ID'];
$cacheDir = '/product_extra/';
$ttl = 3600;
$cache = \Bitrix\Main\Data\Cache::createInstance();
if ($cache->initCache($ttl, $cacheId, $cacheDir)) {
    $extraData = $cache->getVars();
} elseif ($cache->startDataCache()) {
    $extraData = fetchHeavyProductData($arResult['ID']);
    $cache->endDataCache($extraData);
}
$arResult['EXTRA'] = $extraData;

Важно: якщо компонент сам використовує кеш (більшість компонентів каталогу), то result_modifier.php не виконується при віддачі з кешу — виконується тільки template.php. Дані, додані в $arResult в result_modifier.php, кешуються разом з $arResult.

Порівняння підходів

Критерій result_modifier Перевизначення компонента
Сумісність з оновленнями Повна Вимагає ручного merge
Час на реалізацію 2–6 годин 8–24 години
Складність підтримки Низька Висока
Економія бюджету До 70 000 грн

Обмеження

result_modifier — не місце для операцій з побічними ефектами: створення записів в БД, відправки сповіщень, зміни стану. Це тільки читання та трансформація $arResult. Для побічних ефектів використовуйте component_epilog.php.

Не можна змінити вже виконані SQL-запити компонента — тільки доповнити результат новими запитами. Якщо потрібно змінити логіку отримання даних — доведеться перевизначати сам компонент.

Процес і терміни

Типові етапи роботи:

  1. Аналіз: вивчаємо структуру $arResult потрібного компонента, визначаємо відсутні дані.
  2. Проектування: вибираємо джерело даних (HL-блок, таблиця, зовнішнє API).
  3. Реалізація: пишемо result_modifier.php із запитом і модифікацією масиву.
  4. Кешування: налаштовуємо тегований кеш для продуктивності.
  5. Тестування: перевіряємо при різних сценаріях (кеш вкл/викл, різні групи користувачів).
  6. Деплой: розміщуємо в папці шаблону, налаштовуємо моніторинг.

Що входить в роботу

  • Файл result_modifier.php з коментарями та обробкою помилок.
  • Налаштування кешу (тегований, TTL) для оптимальної швидкості.
  • Документація по доданих полях та архітектурі рішення.
  • Доступи до системи для тестування та інтеграції.
  • Навчання вашої команди основам підтримки (1 година консультації).
  • Річна підтримка: відповіді на питання, виправлення дрібних помилок.

Орієнтовні терміни: більшість задач займає 4–16 годин. Вартість розраховується індивідуально — від 40 000 до 150 000 грн залежно від складності. Отримайте консультацію: розкажемо, як заощадити час і бюджет.

Чек-лист типових помилок
  • Забуваєте завантажувати модулі через Loader::includeModule.
  • Не перевіряєте кеш компонента — result_modifier не виконується при готовому кеші.
  • Намагаєтеся змінити $arParams — це неприпустимо для модифікації.
  • Використовуєте result_modifier для запису в БД — порушуєте архітектурне призначення.
  • Не екрануєте або не фільтруєте дані — ризик XSS.

Ми займаємося Бітрікс-розробкою більше 7 років, виконали 50+ проектів з доопрацювання компонентів. Гарантуємо стабільну роботу на всіх версіях платформи. Зв'яжіться з нами для оцінки вашого проекту — відповімо протягом дня.

Переваги нашого підходу

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

Контакти та наступні кроки

Якщо ваша компанія зіткнулася з описаною проблемою, зв'яжіться з нами для безкоштовної консультації. Проведемо аналіз вашої системи та запропонуємо оптимальне рішення. Вартість проекту залежить від складності та обсягу робіт, але для типових рішень ми завжди надаємо точний кошторис на основі попереднього аналізу вимог.

Неправильний вибір редакції 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С-Бітрікс прямо зараз.