Как создать свой собственный вид события в Таймлайне карточки Битрикс24?

Добрый день всем! <br/> <br/> У меня возникла необходимость реализовать собственное отображение события в таймлайне. Я создал новое активити в бизнес-процессе (похоже на комментарий) и хочу отобразить текст этого события в таймлайне, при этом чтобы оно фильтровалось не как комментарий. <br/> <br/> Увы, я не смог найти подходящей документации. То, что мне удалось найти, не дает четкой информации: <a href="https://dev.1c-bitrix.ru/api_d7/bitrix/crm/timeline/index.php" rel="nofollow">https://dev.1c-bitrix.ru/api_d7/bitrix/crm/timelin...</a> <br/> <br/> Я создаю записи в таблице b_crm_timeline с помощью активити и обработчика. У меня есть возможность задать свои значения для TYPE_CATEGORY_ID и TYPE_ID. Однако, когда я установил TYPE_ID, отличный от комментария, поле остается пустым. Это очевидно, так как мне нужно определить свой способ отрисовки. <br/> Но, к сожалению, я не нашел информации о том, как задать собственный вид для нового типа и как добавить его в фильтр. <br/> <br/> Буду признателен за любую полезную информацию.
  • 31 марта 2025 г. 15:15
Ответы на вопрос 1
Чтобы создать свой собственный вид события в таймлайне карточки Битрикс24, нужно выполнить несколько шагов, включая использование API и обработчиков. Вот общий план действий:

1. **Добавление записи в таблицу `b_crm_timeline`:** 
   Вы правильно заметили, что вам нужно вставить данные в таблицу `b_crm_timeline`. Убедитесь, что вы задаете правильные значения для `TYPE_CATEGORY_ID` и `TYPE_ID`. Для вашего нового типа события необходимо использовать уникальное значение для `TYPE_ID`, отличное от существующих.

2. **Создание пользовательского обработчика:** 
   Вам нужно реализовать обработчик для вашего нового типа события. Важно, чтобы этот обработчик знал, как отображать ваши данные. Вы можете зарегистрировать обработчик через событие `OnCrmTimelineEntityAdd`.

   Пример кода для регистрации обработчика:
   ```php
   use Bitrix\Main\Loader;
   use Bitrix\Main\EventManager;

   class MyCustomTimelineHandler
   {
       public static function onTimelineAdd($event)
       {
           // обработка события здесь
       }
   }

   EventManager::getInstance()->addEventHandler(
       'crm',
       'OnCrmTimelineEntityAdd',
       ['MyCustomTimelineHandler', 'onTimelineAdd']
   );
   ```

3. **Определение способа отображения:** 
   Вам нужно будет создать JavaScript-скрипт, который будет отвечать за отображение вашего типа события в таймлайне. Обычно это делается на стороне клиента с использованием API Битрикс24. Убедитесь, что вы создали подходящий шаблон для отображения вашего типа события.

   Например:
   ```javascript
   BX.Crm.TimelineManager.instance.addCustomTypeHandler('MY_CUSTOM_TYPE_ID', {
       render: function (item) {
           // Код для отрисовки элемента таймлайна
           return '<div class="my-custom-timeline-item">' + item.data.TEXT + '</div>';
       }
   });
   ```

4. **Добавление фильтрации:** 
   Чтобы фильтры работали с вашим новым типом события, нужно будет добавить его в список доступных фильтров. Это может потребовать настройки в UI Битрикс24, чтобы ваше новое событие отображалось.

5. **Тестирование:** 
   После завершения всех шагов выполните тестирование, чтобы убедиться, что ваше новое событие правильно отображается в таймлайне, фильтруется и функционирует согласно вашим требованиям.

6. **Документация и поддержка:** 
   Поскольку документация может меняться и обновляться, рекомендуется периодически проверять официальную документацию на наличие новых функций и примеров. Если возникают трудности, вы также можете обратиться в службу поддержки Битрикс24.

Это общие шаги, которые помогут вам в создании пользовательского события в таймлайне Битрикс24. Настройка может потребовать детальной работы с кодом и конфигурацией, поэтому будьте готовы изучать документацию и экспериментировать.
Похожие вопросы