Набор скриптов для окрашивания интерфейса CRM в коробочной версии Битрикс24:
- Канбан: сделки, лиды, смарт-процессы
- Списки (Grid): сделки, лиды, контакты, компании, смарт-процессы
- Поддержка нескольких языков/вариантов названий полей в канбане
- Устойчивость к динамической перерисовке (AJAX/SPA) и drag-and-drop
Проект рассчитан только на коробочную версию Битрикс24 и подключается без модификации ядра.
Скрипт grid-colorize.js:
- ищет значения в строках по
td[data-column-id="..."](ID полей), - сопоставляет найденное значение с цветом из
colorMap, - окрашивает всю строку (ячейки + внутренние обёртки),
- автоматически реагирует на изменения DOM (фильтры, пагинация, подгрузка).
Скрипт kanban-colorize.js:
- в каждой карточке ищет поле по заголовку (title) в блоке “Поля карточки”,
- поддерживает несколько вариантов заголовка (
fieldTitles) для разных языков, - сопоставляет значение с цветом из
valueMap, - перекрашивает карточки при перерисовках и drag-and-drop.
Важно: пути в коде (
/local/js/...) указываются относительно корня Битрикс24, а не корня репозитория.
Пример структуры в репозитории:
php_interface/init.php
local/js/mycrm/
├── kanban-colorize.js
└── grid-colorize.js
images/
├── Company list.png
├── Contacts List.png
├── Kanban Deals.png
├── SP kanban.png
└── SP list.png
Откройте файл:
/bitrix/php_interface/init.php(основной вариант), или/local/php_interface/init.php(если он реально подключается вашим проектом).
Далее добавьте туда код из файла этого репозитория:
php_interface/init.php
Если у вас используется
local/php_interface/init.php, убедитесь, что он подключается из/bitrix/php_interface/init.phpчерезrequire, иначе код выполняться не будет.
Скопируйте папку local/js/mycrm/ из репозитория в корень Битрикса, чтобы получилось:
/bitrix/
├── php_interface/
│ └── init.php
└── local/
└── js/
└── mycrm/
├── kanban-colorize.js
└── grid-colorize.js
Для адаптации достаточно изменить переменные в init.php.
Словарь: значение (как отображается в интерфейсе) → цвет.
$colorMap = [
'критическое' => '#f6bebe',
'высокое' => '#fcffb3',
'повышенное' => '#a1bfff',
// Пример для другого языка
'极高' => '#f6bebe',
'高度关注' => '#fcffb3',
'已提升' => '#a1bfff',
];Это data-column-id колонок, где лежит значение для окраски.
$gridFieldIds = [
'UF_CRM_XXXXXXX',
'UF_CRM_YYYYYYY',
];Это массив вариантов названия поля, которое отображается в карточке канбана.
$kanbanFieldTitles = [
'Степень внимания',
'Attention level',
'关注级别',
'关注级别 - Степень внимания',
];Важно: Окраска карточки использует тот же
$colorMap(на значение, а не наfieldTitle).
Совместимость:
kanban-colorize.jsподдерживает новый форматfieldTitles(массив) и старыйfieldTitle(строка). Рекомендуется использовать толькоfieldTitles.
Логика определения страниц находится в
init.php. Смарт-процессы поддерживаются через маршруты/page/*.
/crm/deal/list— сделки/crm/lead/list— лиды/crm/company/list— компании/crm/contact/list— контакты/shop/documents/contractors/list— контрагенты- Смарт-процессы:
/page/*(list / grid)
/crm/deal/kanban— сделки/crm/lead/kanban— лиды- Смарт-процессы:
/page/*(если в вашем портале канбан смарт-процессов доступен в этом разделе)
Если раскраска не работает:
В init.php поменяйте debug на true:
$config = [
'fieldIds' => $gridFieldIds,
'colorMap' => $colorMap,
'debug' => true, // включить логи
];$config = [
'fieldTitles' => $kanbanFieldTitles,
'valueMap' => $colorMap,
'debug' => true, // включить логи
];Откройте консоль браузера (F12) и проверьте, что:
window.MyCrmColorizeConfigсуществует на страницах списковwindow.MyCrmKanbanColorizeConfigсуществует на страницах канбана- JS-файлы не отдаются 404 (Network → JS)
- на странице канбана есть элементы
.crm-kanban-item - в карточке канбана поле действительно отображается (иначе в DOM его не будет)
window.MyCrmKanbanColorizeConfig
document.querySelectorAll('.crm-kanban-item').length- Скрипты не требуют REST и не меняют ядро.
- Окраска строится строго на данных, которые уже отображаются в канбане/списке.
- Для канбана убедитесь, что нужное поле добавлено в отображение карточки (настройки канбана).




