Кастомні фільтри Бітрікс24: розробка під завдання бізнесу

Уявіть: менеджеру потрібно побачити угоди, де сума оплат за останні 30 днів менша за 50% від суми угоди. Або компанії, у яких є хоча б одна угода на стадії «Переговори» із сумою > 1 000 000. Стандартний фільтр Бітрікс24 не вміє агрегувати дані з пов'язаних сутностей і виконувати підзапити. Ми розроб
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Кастомні фільтри Бітрікс24: розробка під завдання бізнесу
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1461
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    810
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1166

Уявіть: менеджеру потрібно побачити угоди, де сума оплат за останні 30 днів менша за 50% від суми угоди. Або компанії, у яких є хоча б одна угода на стадії «Переговори» із сумою > 1 000 000. Стандартний фільтр Бітрікс24 не вміє агрегувати дані з пов'язаних сутностей і виконувати підзапити. Ми розробляємо кастомні фільтри, які вирішують такі завдання — від фільтрації за агрегатами до інтеграції з 1С. Оцінимо ваш проєкт за 1 день, напишіть нам.

Як влаштований стандартний фільтр у Бітрікс24?

У Бітрікс24 за фільтрацію відповідає JS-компонент BX.Main.Filter. Він рендерить панель, збирає користувацький ввід і передає його в backend-обробник. У коробковій версії фільтр оперує ORM-класами: \Bitrix\Crm\DealTable, \Bitrix\Crm\ContactTable. Кожне поле маппіться на колонку ORM-сутності. У хмарній версії фільтрація відбувається через REST API — параметр filter у методах crm.deal.list, crm.item.list. Підтримуються оператори: =, !, <, >, <=, >=, %, масив значень (IN). Не підтримуються: групування умов AND/OR на рівні фільтра, агрегатні функції, підзапити.

Чому стандартного фільтра недостатньо?

Бізнес-процеси вимагають відбору за метриками: «прострочені більше 7 днів», «клієнти без активності за місяць», «угоди з дебіторською заборгованістю в 1С». Без кастомного фільтра менеджери вручну вивантажують дані в Excel або витрачають години на batch-запити. Кастомний фільтр автоматизує цю роботу і скорочує час пошуку до секунд.

Архітектура кастомного фільтра

Кастомний фільтр — це REST-застосунок із трьох шарів:

  1. UI фільтра — ваш інтерфейс в iframe (placement LEFT_MENU або CRM_*_LIST_TOOLBAR). Користувач задає параметри: період, поріг суми, тип сутності.

  2. Backend-обробник — ваш сервер, який приймає параметри, виконує складну вибірку та повертає список ID відповідних елементів.

  3. Відображення результатів — відфільтровані дані показуються в кастомному списку або передаються назад у стандартний список через попередньо встановлений фільтр.

Порівняння підходів до фільтрації

Критерій Стандартний фільтр Кастомний фільтр
Агрегація за пов'язаними сутностями Ні Так (на бекенді)
Підзапити Ні Так (SQL або REST-ланцюжок)
Кешування Тільки на рівні бази Redis / серверний з TTL
Інтеграція з зовнішніми системами Ні Через REST API або прямий SQL
Продуктивність на 10 000 записів ~100 сек (batch) <1 сек (з кешем)

Кастомний фільтр кращий за стандартний у 50 разів за швидкістю виконання при великих обсягах.

Глибоке занурення: фільтрація за агрегатами

Завдання: відібрати угоди, за якими сума оплат за останні 30 днів менша за 50% від суми угоди.

Крок 1. Збір даних. Backend запитує активні угоди через crm.deal.list з фільтром STAGE_SEMANTIC_ID=P. Для кожної — товарні позиції та історію оплат через crm.timeline.list або кастомне поле з сумою оплат.

Крок 2. Агрегація на бекенді. Обчислення на вашому сервері:

відсоток_оплати = сума_оплат_30днів / сума_угоди * 100 якщо відсоток_оплати < 50 → включити в результат 

Крок 3. Кешування. Результат кешується (Redis, TTL 15–30 хвилин). Повторне відкриття фільтра не викликає перерахунок.

Крок 4. Відображення. Список ID відфільтрованих угод передається в UI або формується попередньо встановлений фільтр ID у стандартному списку:

BX24.openPath('/crm/deal/list/?apply_filter=Y&ID[]=' + filteredIds.join('&ID[]=')); 

Фільтрація за пов'язаними сутностями

Сценарій: знайти компанії, у яких є хоча б одна угода на стадії «Переговори» із сумою > 1 000 000. У стандартному фільтрі компаній немає полів угод. Рішення: 1) запит crm.deal.list з фільтром по стадії та сумі → отримуємо COMPANY_ID; 2) унікальні ID → масив для фільтра компаній; 3) запит crm.company.list з filter: {ID: uniqueCompanyIds}. На бекенді це один SQL-запит з JOIN, через REST — ланцюжок із 2–3 запитів.

Кастомні пресети фільтрів

Пресети зберігають часто використовувані умови: «Прострочені > 7 днів», «VIP-клієнти без активності», «Угоди без завдань». У REST API немає методу для програмного створення пресетів стандартного фільтра, тому реалізуємо кастомний UI з кнопками:

var presets = { overdue_7: {'>DATE_CLOSE': formatDate(-7), 'STAGE_SEMANTIC_ID': 'P'}, vip_inactive: {'UF_CRM_VIP': 1, '<DATE_MODIFY': formatDate(-30)}, no_tasks: {} // серверна логіка }; function applyPreset(name) { loadFilteredData(presets[name]); } 

Пресет «Угоди без завдань» вимагає batch-запиту tasks.task.list з фільтром UF_CRM_TASK для кожної угоди — вирішується серверною агрегацією.

Продуктивність та ліміти

REST API обмежує: 2 запити в секунду, 50 команд у batch. Для фільтра на 10 000 угод:

Підхід Запитів Час
Послідовні запити по 50 200 ~100 сек
Batch по 50 команд 4 batch-запити ~8 сек
Серверний кеш + інкрементальне оновлення 1–2 запити <1 сек
Деталі серверного кешуСерверний кеш із періодичною синхронізацією через вебхуки (`onCrmDealUpdate`) або за розкладом — єдиний робочий підхід для production. Дані оновлюються інкрементально: при зміні угоди вебхук інвалідує кеш, і наступний запит перераховує лише змінені записи. Це знижує навантаження на API та прискорює фільтрацію.

Коробкова версія: фільтри через ORM

У коробковій Б24 кастомний фільтр реалізується на рівні PHP — розширення стандартного фільтра новими полями через подію onBuildFilterFields. Обробник onBuildFilterQuery модифікує SQL-запит. Це продуктивніше REST, але вимагає доступу до сервера.

Що входить у роботу

  • Аналітика: вивчення бізнес-логіки та вимог до фільтрації.
  • Проєктування: архітектура UI/backend, схема кешування.
  • Розробка: серверна логіка, інтеграція з REST API / ORM, реалізація пресетів.
  • Тестування: навантажувальне тестування на ваших даних, перевірка точності відбору.
  • Документація: опис фільтрів, інструкція для адміністраторів.
  • Підтримка: 1 місяць після здачі — доопрацювання та консультації.

Терміни — від 5 до 20 днів залежно від складності. У нас 10+ років досвіду в Бітрікс24 та сертифіковані спеціалісти — гарантуємо якість та дотримання термінів. Без кастомного фільтра ви втрачаєте значний час на ручній обробці — розробка окупається протягом кількох місяців. Це дозволяє будувати складні звіти Бітрікс24, недоступні стандартними засобами. Зв'яжіться з нами для оцінки вашого проєкту. Отримайте консультацію.