Сделал, как в документации: 1. Создал /local/php_interface/include/crm_services.php 2. Дополнил /local/php_interface/init.php
Весь код из примеров. Код пользовательского поля, который есть в примере - "UF_CRM_150_STRING", заменил на свой - "UF_CRM_3_1647442710" Согласно описанию "Добавление атрибута \CCrmFieldInfoAttr::Immutable не позволяет изменять это поле через интерфейс пользователем." - но не работает. Также не работают и остальные константы класса CCrmFieldInfoAttr.
Т.е. при открытии карточки элемента смарт-процесса - состояние поле не меняется. Пробовал под разными пользователя, в том числе и под админом - результата 0.
Прочитайте статью внимательно от начала и до конца, чтобы понять, как оно работает.
Потом в php-консоли дерните метод Factory::getFieldsInfo() и проверьте, что у вашего поля появился добавленный атрибут. Если его там нет, вы что-то не то сделали. Напомню, что последовательность должна быть следующей 1. Заменить контейнер. Причем это должно быть сделано до первого обращения к нему (т.е. на каждом хите) 2. Сделать свою реализацию Factory 3. В контейнере переопределить getFactory, где подложить свою реализацию