Рекомендую перед началом работы ознакомиться с официальной документации Битрикс - 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.
Также для полного понимания работы с модулем настоятельно рекомендую изучить его классы.
Для покупки товара в нашем интернет-магазине выберите понравившийся товар и добавьте его в корзину. Далее перейдите в Корзину и нажмите на «Оформить заказ» или «Быстрый заказ».
Если оформляете быстрый заказ: напишите ФИО, телефон и e-mail. Вам перезвонит менеджер и уточнит условия заказа. По результатам разговора вам придет подтверждение оформления товара на почту или через СМС. Теперь останется только ждать доставки и радоваться новой покупке.
Оформление заказа в стандартном режиме выглядит следующим образом. Заполняете полностью форму по последовательным этапам: адрес, способ доставки, оплаты, данные о себе. Советуем в комментарии к заказу написать информацию, которая поможет курьеру вас найти. Нажмите кнопку «Оформить заказ».
Оплачивайте покупки удобным способом. В интернет-магазине доступно 3 варианта оплаты:
- Наличные при самовывозе или доставке курьером. Специалист свяжется с вами в день доставки, чтобы уточнить время и заранее подготовить сдачу с любой купюры. Вы подписываете товаросопроводительные документы, вносите денежные средства, получаете товар и чек.
- Безналичный расчет при самовывозе или оформлении в интернет-магазине: карты МИР. Чтобы оплатить покупку на сайте, система перенаправит вас на сервер платежной системы. Здесь нужно ввести номер карты, срок действия и имя держателя.
- Электронные системы при онлайн-заказе: ЮMoney. Для совершения покупки система перенаправит вас на страницу платежного сервиса. Здесь необходимо заполнить форму по инструкции.
- Безналичная оплата на наш расчетный счет по выставленному счету.
Экономьте время на получении заказа. В интернет-магазине доступно 4 варианта доставки:
- Электронная поставка - все необходимые сведения о лицензии, праве пользования, кодах, ключах и др. высылаются покупателю на его e-mail.
- Курьерская доставка. Когда товар будет отправлен с нашего склада, Вам придет уведомление. В день доставки с Вами заблаговременно свяжется курьер для уточнения времени и деталей доставки. Доставка производится "до двери". Осмотрите упаковку на целостность и соответствие указанной комплектации.
- Постамат. Когда заказ поступит на точку, на Ваш телефон или e-mail придет уникальный код. Заказ нужно оплатить в терминале постамата. Срок хранения — 3 дня.
- Доставка Почтой России. Когда заказ придет в отделение, на Ваш адрес придет извещение о посылке. Перед оплатой Вы можете оценить состояние коробки: вес, целостность. Вскрывать коробку самостоятельно Вы можете только после оплаты заказа. Один заказ может содержать не больше 10 позиций и его стоимость не должна превышать 100 000 р.
Дополнительная информация.