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

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

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    943
  • 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

Мы часто встречаем проекты, где разработчики копируют стандартные компоненты Битрикс. Это приводит к проблемам при обновлениях. Представьте: ваш интернет-магазин проработал год. Вы скопировали catalog.section, добавили кастомные поля и рейтинг. Выходит мажорное обновление — вы тратите два дня на слияние изменений. Через полгода снова обновление — и снова головная боль. Каждая копия компонента превращается в технический долг, который тормозит развитие и увеличивает стоимость поддержки.

По нашей статистике, 80% проектов с копиями компонентов требуют тотального рефакторинга при переходе на новую мажорную версию. Замена копий на родные механизмы расширения окупается уже через 4-6 месяцев: время на обновления сокращается в 5 раз, исчезают баги совместимости.

Мы — команда с 8-летним опытом разработки на Битрикс. Завершили 40+ проектов по рефакторингу и модернизации. Помогаем компаниям избавиться от копий компонентов без потери функциональности. Свяжитесь с нами для консультации — оценим ваш проект.

Какие механизмы расширения предоставляет Битрикс?

Битрикс предлагает четыре способа расширить логику стандартного компонента без его копирования: result_modifier.php, события, классы-расширения и компонент-обёртка.

result_modifier.php — быстрое дополнение данных

Файл result_modifier.php в папке шаблона выполняется после основной логики компонента, но до вывода шаблона. Вы получаете ссылку на $arResult и можете добавлять или изменять данные. Например, подгрузить рейтинги товаров из внешнего сервиса:

<?php
// /local/templates/my_site/components/bitrix/catalog.section/.default/result_modifier.php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

$ids = array_column($arResult['ITEMS'], 'ID');
if ($ids) {
    $ratings = MyRatingService::getAverageForItems($ids);
    foreach ($arResult['ITEMS'] as &$item) {
        $item['MY_RATING'] = $ratings[$item['ID']] ?? 0;
    }
}

Этот метод прост, но не позволяет изменить SQL-запрос компонента. Для вмешательства в запрос нужны события.

События компонента — вмешательство на уровне запросов

Большинство стандартных компонентов генерируют события. Например, OnBeforeIBlockElementGetList позволяет модифицировать фильтр выборки. Вот как скрыть товары без цены:

// /local/php_interface/init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'iblock',
    'OnBeforeIBlockElementGetList',
    function (\Bitrix\Main\Event $event) {
        $filter = $event->getParameter('filter');
        $filter['!CATALOG_PRICE_1'] = false;
        $event->setParameter('filter', $filter);
        return $event;
    }
);

События дают гибкость без копирования компонента. Однако сложную бизнес-логику лучше выносить в класс-расширение.

Класс-расширение — максимальная гибкость

Создаёте класс-наследник в /local/components/bitrix/имя_компонента/class.php. Битрикс автоматически подхватит его вместо оригинального. Шаблоны при этом остаются из /bitrix/. Пример — добавляем признак "новинка" для товаров, созданных менее 30 дней назад:

<?php
// /local/components/bitrix/catalog.section/class.php
\Bitrix\Main\Loader::includeModule('iblock');
\Bitrix\Main\Loader::includeModule('catalog');

class MyCatalogSectionComponent extends \Bitrix\Iblock\Component\ElementList
{
    protected function getFilter(): array
    {
        $filter = parent::getFilter();
        $filter['!PREVIEW_PICTURE'] = false; // скрыть товары без изображения
        return $filter;
    }
    
    protected function prepareElementData(array $element): array
    {
        $element = parent::prepareElementData($element);
        $element['IS_NEW'] = (time() - strtotime($element['DATE_CREATE'])) < 86400 * 30;
        return $element;
    }
}

Этот подход сохраняет обновляемость: при выходе новой версии Битрикс ваш класс наследует улучшения родительского компонента. Сравните: ручное слияние копии занимает от 2 до 8 часов, а при использовании класса-расширения — 0 часов. Класс-расширение позволяет наследовать поведение стандартного компонента, сохраняя возможность обновления ядра (из документации Битрикс).

Компонент-обёртка — полная замена логики

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

Сводная таблица механизмов

Задача Рекомендуемый механизм
Добавить вычисляемое поле к результату result_modifier.php
Изменить SQL-фильтр Событие OnBefore*
Расширить бизнес-логику Класс-расширение в /local/
Полная замена с сохранением шаблонов Класс-расширение + переопределение методов
Переиспользовать компонент с другими параметрами Компонент-обёртка

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

Ответ прост: используйте класс-расширение или события. Они сохраняют совместимость с ядром и не требуют ручного слияния при обновлении. Результат — снижение времени на обновление на 80% и экономия на поддержке до 40%.

Как выбрать подходящий механизм?

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

Как мы реализуем расширение компонентов без копирования?

Наш подход — использовать родные механизмы Битрикс, сохраняя обновляемость. Процесс включает пять этапов:

  1. Аудит кодовой базы — находим все копии компонентов, оцениваем объём и сложность.
  2. Проектирование — выбираем оптимальный механизм для каждого случая.
  3. Реализация — пишем классы-расширения, обработчики событий, модификаторы.
  4. Тестирование — проверяем совместимость с шаблонами и кастомными доработками.
  5. Поддержка — предоставляем документацию, обучаем вашу команду и даём гарантию на 12 месяцев.

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

  • Полный отказ от копий компонентов (рефакторинг).
  • Оптимизация запросов и кэширования.
  • Тестирование на всех канонических сценариях.
  • Обучение вашей команды работе с расширениями.
  • Гарантия обратной совместимости.

Пример из практики: для интернет-магазина с каталогом из 50 000 товаров мы заменили 12 копий компонентов на классы-расширения. Время обновления ядра сократилось с 3 дней до 4 часов. Экономия на поддержке — 40% в год.

Сроки и стоимость

Тип работ Ориентировочные сроки
Расширение одного компонента (result_modifier) 2–4 часа
Расширение через класс-наследник 1–3 дня
Рефакторинг всех копий компонентов 3–8 дней (зависит от количества)

Точная стоимость рассчитывается индивидуально после аудита. Готовы избавиться от копий компонентов? Закажите аудит — наши инженеры оценят проект и предложат оптимальное решение.

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