Кейсы
История и защита отдельных полей CRM
Модуль для коробочного Bitrix24: выбранные CRM-поля записываются в штатную историю, а пользователи заданных групп и отделов не могут вручную менять их в карточке.
Контроль отдельных полей
Штатные права CRM хорошо ограничивают работу с сущностью целиком, но иногда нужно оставить сотруднику возможность редактировать сделку и при этом закрыть для него одно или несколько полей. Отдельно хотелось видеть историю изменений только тех полей, которые действительно важны.
Для этого я сделал модуль. В его настройках для каждого поля независимо задаются запись изменений в историю и запрет ручного редактирования для выбранных групп или отделов.
Настройка правила
Внутри сущности отображаются её поля, код поля, переключатель истории и два списка ограничений: группы пользователей и отделы. По названию или коду можно быстро найти нужное поле.
На примере ниже для поля «Тип сделки» включена запись в историю и выбран отдел, которому запрещено ручное редактирование.
Поле остаётся только для просмотра
Ограничение не переводит всю сделку в режим «только просмотр». Пользователь продолжает редактировать доступные ему данные, но защищённое поле не входит в режим редактирования даже при включении редактирования всей карточки.
Запрет относится именно к ручному изменению через интерфейс CRM. Роботы, бизнес-процессы, REST-интеграции и серверные обработчики могут продолжать менять поле — модуль не вмешивается в существующую автоматизацию.
Изменения в штатной истории
Если для поля включено отслеживание, после изменения модуль добавляет событие в стандартную вкладку «История». Отдельный журнал открывать не нужно: запись находится рядом с остальными событиями CRM.
В событии сохраняются название поля, старое и новое значения, автор изменения и время. На скриншоте зафиксировано изменение пользовательского поля «Запланированная встреча».
Что получилось
В результате права на карточку CRM остаются штатными, а поверх них появляется более точное правило для отдельных полей. Можно закрыть ручное редактирование чувствительных данных для конкретного отдела или группы и одновременно включить аудит изменений только там, где он нужен.
Модуль работает без изменения ядра: настройки находятся в административной части, ограничение применяется в CRM-интерфейсе, а события записываются в стандартную историю сущности.