Есть идея по этому модулю?
Опишите доработку или сценарий — обсудим вместе с другими клиентами.
DevBand: ReplaceCrm (Переопределение CRM, СП)
Менее 50 раз установок
Ставится из 1С-Битрикс Marketplace за пару минут — вкладка «Установка».
Технические данные
Число установок:
Менее 50 раз
Версия:
1.0.5
Адаптивность:
Нет
Поддержка композита:
Нет
Дата публикации:
23.04.2025
Совместимые редакции
- Программа для ЭВМ "1С-Битрикс24". Лицензия Стандартный (12 мес.)
- Программа для ЭВМ "1С-Битрикс24". Лицензия Интернет-магазин + CRM (12 мес.)
Описание
Модуль предназначен для переопределения классов 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, т.е. везде.
Данное решение позволит вам, как разработчикам, разделять классы для разных сущностей в разные модули.
Могу предположить, что Вы уже поработали со стандартной подменой сервисов от Битрикса и поняли, что в результате получается легаси код, который сложно поддерживать и обслуживать.
Ниже будет приведен пример работы подмены сервисов 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.
Также для полного понимания работы с модулем настоятельно рекомендую изучить его классы.
Ниже будет приведен пример работы подмены сервисов 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.
Также для полного понимания работы с модулем настоятельно рекомендую изучить его классы.
Установите этот модуль прямо сейчас!
Для этого укажите адрес сайта:
пример: https://www.site.ru
