Каталог решений

Покупка продления купона

Продолжительность:
Общая сумма:
0 руб.
Ваш запрос успешно отправлен!

Я согласен с условиями активации продлений
Продлить
Продолжить покупки

DevBand: ReplaceCrm (Переопределение CRM, СП)

Модуль предназначен для переопределения классов Factory, Container, Router и упрощенной работе с событиями смарт -процессов. А также позволяет добавлять свои операции без подмены сервисов посредством события Bitrix класса Event. Ознакомиться со всеми событиями вы можете тут - https://gitverse.ru/altplus255/devband.replacecrm Рекомендую перед началом работы ознакомиться с официальной документации Битрикс - https://dev.1c-bitrix.ru/api_d7/bitrix/crm/customization/index.php, а также изучить паттерны Фабрики, ServiceLocator. В стандартной реализации (в документации) Битрикс предлагает переопределить классы в init.php и работать со всеми сущностями: "Лиды", "Сделки", "Смарт-процессы" там (в файле php_interface/init.php), что приводит к лишним зависимостям и подключению модуля CRM на уровне init.php, т.е. везде.    Данное решение позволит вам, как разработчикам, разделять классы для разных сущностей в разные модули.  

DevBand: ReplaceCrm (Переопределение CRM, СП)

DevBand: ReplaceCrm (Переопределение CRM, СП)

от Виталий Рычков
Скриншоты
Описание

Технические данные

Опубликовано:
23.04.2025
Версия:
1.0.5
Установлено:
Менее 50 раз
Подходящие редакции:
«Корпоративный портал», «Энтерпрайз», «Интернет-магазин + CRM»
Адаптивность:
Нет
Поддержка Композита:
Нет
Совместимо с Сайты24
Нет
Совместимо с PHP 8.1
Да

Пользовательское соглашение

Описание

Модуль предназначен для переопределения классов Factory, Container, Router и упрощенной работе с событиями смарт -процессов. А также позволяет добавлять свои операции без подмены сервисов посредством события Bitrix класса Event. Ознакомиться со всеми событиями вы можете тут - https://gitverse.ru/altplus255/devband.replacecrm

Рекомендую перед началом работы ознакомиться с официальной документации Битрикс - https://dev.1c-bitrix.ru/api_d7/bitrix/crm/customization/index.php, а также изучить паттерны Фабрики, ServiceLocator.

В стандартной реализации (в документации) Битрикс предлагает переопределить классы в init.php и работать со всеми сущностями: "Лиды", "Сделки", "Смарт-процессы" там (в файле php_interface/init.php), что приводит к лишним зависимостям и подключению модуля CRM на уровне init.php, т.е. везде.  
 
Данное решение позволит вам, как разработчикам, разделять классы для разных сущностей в разные модули.  
Отзывы (0)
Обсуждения (0)
Здесь пока никто ничего не написал. Будьте первым.
Установка
Могу предположить, что Вы уже поработали со стандартной подменой сервисов от Битрикса и поняли, что в результате получается легаси код, который сложно поддерживать и обслуживать.

Ниже будет приведен пример работы подмены сервисов CRM.

Разберем такую ситуацию. У вас есть 2 смарт-процесса: "Начисления" и "Долги". Под каждый смарт-процесс вам необходимо создать отдельный модуль. Ведь это разные сущности и логика у них отличается с точки зрения бизнеса. Да, можно было бы сделать 1 модуль и внутри него реализовать все классы, но я придерживаюсь принципов дядюшки Боба "Чистый код", поэтому работу с разными сущностями разделяю на разные модули.

Итак для 2х сущностей, описанных выше, мы создаем 2 модуля с названиями:
vendor.accruals и vendor.debts, где vendor - символьный код вашей компании.

Все файлы по работе с Factory, Container, Router создавайте внутри папки lib с соблюдением структуры Битрикс. (Например: \Bitrix\Crm\Service\Container по такому неймспейсу располагается контейнер для CRM. Внутри ваших модулей должна быть такая же структура, т.е. \Vendor\Accruals\Crm\Service\Container, по аналогии поступаем со всеми остальными классами, которые мы хотим подменить). Рекомендую так делать по причине прозрачности и очевидности. Зная структуру модуля в ядре, любой разработчик сможет легко подхватить и понять написанный вами код без распутывания узлов.

Продолжим, в каждом модуле создаем файл .settings.php, в который вставляем services, которые хотим подменить, НО с указанием в prefix строки "replace.".

return [  
 'services' => [  
   'value' => [  
     'replace.crm.service.container.192' => new \Vendor\Accruals\Crm\Service\Container ,  
   ]  
 ]  
];  

В примере выше показано описание подмены сервиса контейнер для смарт-процесса с EntityTypeId = 192

По аналогии вы можете также подменить сервис Router и Filter/Factory.

Также для полного понимания работы с модулем настоятельно рекомендую изучить его классы.
Поддержка

Решение добавлено в корзину

Перейдите в корзину и оформите заказ или продолжите покупки
Перейти в корзину
Продолжить покупки