Но сама сущность «Счёт» в CRM позволяет очень хорошо упорядочить процессы и получить дополнительную аналитику. А бизнес-процессы по счетам бывают очень нужны. Сегодня расскажем, как решается этот вопрос. Сразу оговоримся, что решение для коробочной версии.

Архитектурно решение следующее:
1. Создание счёта приводит к появлению элемента в списке «Счета». Да-да, простом списке, для которого можно запускать бизнес-процессы. В этот элемент мы записываем все поля, которые имеют значение для нашего бизнес-процесса. Можно было бы совсем все поля переносить, но такой задачи не стоит обычно.
2. Изменение счёта в CRM приводит к обновлению элемента списка.
3. У элемента списка создано отдельное поле «Статус», в котором содержится статус счёта.
4. При добавлении и изменении элемента списка запускается «разводящий» бизнес-процесс, который опираясь на статус решает, какой микро-процесс ему запустить. Своеобразный аналог роботам.
На что нужно обратить внимание:
1. Для обработки изменений счёта используются три события: OnBeforeCrmInvoiceUpdate, OnBeforeCrmInvoiceAdd, OnAfterCrmInvoiceSetStatus. Первые два отслеживают изменение счёта, третий – статуса.
2. В автоматически запускаемых бизнес-процессах нужно предусмотреть служебные переменные, которые будут отслеживать, чтобы процесс не запускался несколько раз. Например, если статус счёта остался прежним, а дата оплаты изменилась, нет смысла ещё раз запускать процесс для статуса.
В принципе, это всё. Счета создаются/редактируются в CRM. Информация из них передаётся в сущность, которая умеет работать с процессами, запускаются процессы, автоматизируется деятельность.