Duplicate id Битрикс24 в табах

создаётся кастомный таб в карточке компании. В табе размещается грид с фильтром.

При использовании любого фильтра или пресета появляется ошибка типа:

"Duplicate id (company_12_timeline_history_search_container) for the BX.Main.Popup instance."

После перезагрузки страницы (F5) и повторного захода в таб карточки видим отфильтрованные данные с учетом выбранных ранее фильтров.

Так же при переключении на другие вкладки карточки компании (даже если отменить подключение вышеуказанной кастомной вкладки) в консоли появляются сообщения вида:

Possible BX.Event.EventEmitter memory leak detected. 30 "grid::updated" listeners added. Use emitter.setMaxListeners() to increase limit.

Если данный компонент вставить в пустую страницу - все будет работать как надо и без ошибок.

Может кто-то уже сталкивался с подобной проблемой! Подскажите пожалуйста как ее можно решить?


Ответы (1 шт):

Автор решения: Алексей Кравцов

Аналогичная проблема решилась следующими действиями. Во-первых нужно заменить url для вызова данных в новый таб после обновления параметров настроек/фильтра. Для этого нужно поставить обработчик события в js файле:

BX.addCustomEvent('Grid::beforeRequest', (grid, eventArgs) => {
    let url = eventArgs.url;
    if(eventArgs.gridId == "our_greed_id") {  
        // проверяем наш ли gridID, чтобы не изменить логику работы
        // для других гридов<br>
        url = 'путь/до/скрипта/с/данными/таба/  ';
    }
    eventArgs.url = url;
})

Во-вторых у компонента bitrix:main.ui.grid у параметра AJAX_MODE устанавливаем значение "N".

→ Ссылка