Кастомизация готового решения из маркетплейса 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Кастомизация готового решения из маркетплейса 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1167
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    563
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    743
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Кастомизация готового решения из маркетплейса 1С-Битрикс

Готовое решение из маркетплейса закрывает 70–80% потребностей. Остальные 20–30% — специфика бизнеса: другая логика расчёта стоимости доставки, нестандартные поля в форме заказа, кастомный внешний вид под фирменный стиль, интеграция с внутренней системой учёта. Задача кастомизации — добавить эту специфику, не сломав обновляемость готового решения.

Главная проблема: обновляемость vs кастомизация

Прямое изменение файлов в /bitrix/modules/vendor.modulename/ — самый быстрый способ добиться результата и самый деструктивный. При следующем обновлении модуля через маркетплейс все изменения перезаписываются. Через полгода разработчик модуля выпускает важное обновление безопасности, клиент обновляет — и кастомизация исчезает.

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

Кастомизация шаблонов компонентов

Большинство готовых решений выводит данные через стандартные компоненты Битрикс24. Визуальный слой — это шаблон компонента, который хранится отдельно от логики.

Копирование шаблона для кастомизации:

Оригинал: /bitrix/components/vendor/component.name/templates/.default/
Кастом:   /local/templates/SITE_TEMPLATE/components/vendor/component.name/CUSTOM_TEMPLATE/

Или в шаблоне сайта:

/local/templates/my_template/components/vendor/component.name/.default/

При обновлении модуля /local/ не трогается — кастомный шаблон остаётся. Битрикс при рендеринге сначала ищет шаблон в /local/, потом в /bitrix/.

Это работает для template.php, style.css, script.js шаблонов компонентов. Логика компонента (component.php, class.php) остаётся оригинальной.

Кастомизация логики через события

Для изменения бизнес-логики без правки файлов модуля используется система событий Битрикс. Событийная архитектура позволяет подписаться на действие и модифицировать данные до или после него.

Пример: готовый модуль доставки рассчитывает стоимость через событие OnDeliveryGetCost. Кастомный обработчик в /local/php_interface/init.php:

AddEventHandler('sale', 'OnDeliveryGetCost', function(&$arDelivery, &$arOrder, &$arOrderPrice) {
    // Модифицируем стоимость доставки под нашу логику
    if ($arOrder['REGION'] === 'CUSTOM_REGION') {
        $arDelivery['PRICE'] = 0;
    }
    return EventResult::SUCCESS;
});

Популярные события для кастомизации:

  • OnBeforeOrderAdd / OnAfterOrderAdd — до и после создания заказа
  • OnBeforeIBlockElementAdd / OnAfterIBlockElementUpdate — работа с элементами инфоблока
  • OnBeforeUserLoginByHash — кастомная авторизация
  • OnAfterUserAuthorize — действия после авторизации

Список доступных событий модуля смотрите в его документации или через grep -r "AddEventHandler\|RegisterModuleDependences" /bitrix/modules/vendor.modulename/.

Кастомизация через наследование классов

Многие современные модули используют ООП и позволяют переопределить классы. Если модуль объявляет класс VendorPaymentHandler extends \Bitrix\Sale\PaySystem\ServiceHandler, вы создаёте собственный класс в /local/:

// /local/lib/CustomPaymentHandler.php
namespace Custom;

class CustomPaymentHandler extends \Vendor\Module\PaymentHandler
{
    public function pay(array $payment): bool
    {
        // Добавляем свою логику до/после стандартной
        $this->logPaymentAttempt($payment);
        return parent::pay($payment);
    }
}

И регистрируете его вместо оригинального через настройки модуля или через соответствующий event handler.

Кастомизация конфигурации через параметры

Часть поведения готовых решений управляется через настройки в b_option (таблица параметров Битрикс). Параметры читаются через COption::GetOptionString('module.name', 'param_name'). Изменить их можно через административный интерфейс модуля или напрямую:

COption::SetOptionString('vendor.modulename', 'custom_param', 'value');

Это самый безопасный способ кастомизации — данные в БД, не затрагивают файлы. Но доступны только те параметры, которые модуль предусмотрел.

Кастомизация через D7-компоненты и маски

В D7-архитектуре (модули, использующие Bitrix\Main) для расширения поведения используются:

  • ORM-расширения — добавление полей к существующим таблицам через UserTypeTable или через addCustomSelectFields в запросах
  • Маски файлов (.settings.php) — переопределение настроек модуля на уровне сайта
  • DI-контейнер (Bitrix\Main\DI\ServiceLocator) — подмена сервисов модуля своими реализациями

Что нельзя кастомизировать без правки ядра

Некоторые вещи в готовых решениях не поддаются кастомизации «правильным» способом:

  • SQL-запросы внутри методов класса, которые нельзя переопределить
  • Жёстко зашитые URL редиректов
  • Статические методы без событий

В таких случаях остаётся либо договориться с вендором об официальных hook'ах, либо принять, что эта часть будет перезаписана при обновлении и описать процедуру восстановления кастомизации.

Сроки кастомизации

Объём изменений Срок
Визуальные правки шаблона (цвета, шрифты, расположение блоков) 1–3 дня
Добавление кастомных полей и их обработка через события 2–5 дней
Изменение бизнес-логики (доставка, скидки, статусы) 3–10 дней
Интеграция готового модуля с внешней системой через кастомные события 1–3 недели
Глубокая переработка функциональности готового решения 3–6 недель