TGViewer
Bitrix24 Apps & BITRIX24-PHP-SDK Bitrix24 Apps & BITRIX24-PHP-SDK @bitrix24phpsdk · 153 subscribers
Post #71 627
Фильтрация в B24-PHP-SDK для v3 — делаем или нет?

Привет, это пост для обсуждения надо ли добавлять поддержку фильтрации в сервисы, которые получают сделки, задачи, контакты и т.д.
Ишью с критериями и описанием возможностей фильтрации — https://github.com/bitrix24/b24phpsdk/issues/338

Я хочу собрать обратную связь от комьюнити PHP-разработчиков.

Есть два варианта:

Как обычно
Принимаем массив, а если разработчик накосячил, то он сам виноват, что не может запомнить код служебного поля в сделке 😀

$deals->getList(
[
["status", "=", "NEW"],
["id", "in", [3,4,5]]
]
);


Делаем билдеры и заморачиваемся

Накидал требований, которые описывают мои ожидания от фильтра, если вы уже повидали некоторое дерьмо, то расскажите, пожалуйста, о своем опыте.

1. Фильтрация идет по полям конкретной сущности

$deals->getList(
new DealFilter()
->title('OpenAI')
->price(100500)
);


2. Поддержка пользовательских полей: на конкретном портале могут добавить 100500 полей разных типов в сущность, например в сделку.

$task->getList(
new TaskFilter()
->title('ASAP')
->withUserField('UF_CRM_1234567890','danger')
);


3. поддержка операторов: greater than, in, not equal etc.

$deals->getList(
new DealFilter()
->title()->eq('ASAP')
->id()->in([1,2,3]
);


4. Поддержка вложенных блоков or

$deals->getList(
new DealFilter()
->status()->eq('NEW')
->or(function (DealFilter $f) {
$f->id()->in([1, 2]);
$f->stageId()->eq('WON');
$f->userField('UF_CRM_1700000000')->eq('yes');
})
);


5. Поддержка raw-массива для олдов

$deals->getList(
new DealFilter()
->withRaw(
[
["status", "=", "NEW"],
["id", "in", [3,4,5]]
]
)
);


5. Все эти фильтры надо генерить из метаданных OA3 спецификации и при появлении изменений — ребилдить.

Что вас бесит в таких штуках?
Где вам понравилась реализация подобных фильтров?
GitHub [Feature in SDK]: add filtering support · Issue #338 · bitrix24/b24phpsdk Filtering In REST 3.0, data filtering is based on logical expressions that can be combined. All methods that support the filter parameter operate according to this scheme. Vendor documentation http...
More from @bitrix24phpsdk
  1. Apr 20, 2026Первый, кто поставит звезду на репозиторий https://github.com/bitrix24/b24phpsdk и пришлет…
  2. Apr 20, 2026🧭 Разбираем современный PHP вместе с Podlodka PHP Crew PHP-стек может устаревать незаметн…
  3. Apr 13, 2026bitrix24-php-lib v0.5.0 🚀 Набор сущностей для разработки приложений Added - Journal bound…
  4. Mar 4, 20260.4.0 🚀 Added - ContactPersons support (main feature of 0.4.0) - Added ApplicationInstall…
  5. Mar 1, 20263.0.0 🚀 Added API v3 support: Tasks & EventLog 🎉 - Added support for Bitrix24 API v3 - A…
  6. Feb 25, 20261.10.1 🚀 Fixed Extend Scope and PortalLicenseFamily enums with new options https://github…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →