Bitrix24 Apps & BITRIX24-PHP-SDK – Telegram
Bitrix24 Apps & BITRIX24-PHP-SDK
148 subscribers
9 photos
8 videos
46 links
Разработка приложений для Bitrix24 на базе BITRIX24-PHP-SDK
Download Telegram
Media is too big
VIEW IN TELEGRAM
BITRIX24-PHP-SDK-EXAMPLES-07

tl;dr;
— добавили Sentry

📺 https://youtu.be/QA367CPC_gU
👍2🔥1
Media is too big
VIEW IN TELEGRAM
BITRIX24-PHP-EXAMPLES-08

tl;dr;
— работа с batch-запросами
— CLI приложения на symfony console
— обработка сигналов POSIX

📺 https://youtu.be/Lg-FITVElNc
2👍1
🚀 1.5.0 – 2025.08.01

Added
- service Services\Entity\Section\Service\Section with support methods,
see [crm.entity.section.* methods](https://github.com/bitrix24/b24phpsdk/issues/200):
- service Services\Entity\Item\Property\Service\Property with support methods:
- service Services\Department\Service\Department with support methods,
see [department.* methods](https://github.com/bitrix24/b24phpsdk/issues/204):
- service CRM\Requisites\Service\RequisiteUserfield with support methods,
see [add crm.requisite.userfield.* methods](https://github.com/bitrix24/b24phpsdk/issues/188):
- service CRM\Requisites\Service\RequisiteBankdetail with support methods:
- service CRM\Requisites\Service\RequisiteLink with support methods:
- service CRM\Requisites\Service\RequisitePresetField with support methods:
- service Services\CRM\Status\Service\Status with support methods,
see [crm.status.* methods](https://github.com/bitrix24/b24phpsdk/issues/194):
- service Services\CRM\Status\Service\StatusEntity
- service Services\CRM\Timeline\Service\Comment with support methods,
see [crm.timeline.comment.* methods](https://github.com/bitrix24/b24phpsdk/issues/196):
- Added support for events:
- OnCrmTimelineCommentAdd
- OnCrmTimelineCommentDelete
- OnCrmTimelineCommentUpdate
- service Services\CRM\Timeline\Service\Bindings
- service Services\CRM\Item\Productrow\Service\Productrow with support methods,
see [crm.item.productrow.* methods](https://github.com/bitrix24/b24phpsdk/issues/198)

Fixed
- Fixed typehints in Contact batch for method add, [see details](https://github.com/bitrix24/b24phpsdk/issues/202)

Changed
- Fixed constructor arguments in tests ApplicationInstallations [see details](https://github.com/bitrix24/b24phpsdk/issues/191)
- Bump giggsey/libphonenumber-for-php version to ^8|^9

Statistics
Bitrix24 API-methods count: 1166
Supported in bitrix24-php-sdk methods count: 362
Coverage percentage: 31.05%

https://github.com/bitrix24/b24phpsdk/releases/tag/1.5.0
Привет, текущее положение дел по шаблонам приложений

1. Самый нижний слой — SDK
https://github.com/bitrix24/b24phpsdk — плановые релизы раз в месяц по расширению функционала библиотеки.

2. Слой хранения данных — фреймворк-агностик (не зависящий) от фреймворка
https://github.com/mesilov/bitrix24-php-lib/
Тут созданы две сущности отвечающие контрактам из b24phpsdk:
Bitrix24Accounts — храним токены и вот это все связанное с их жизненным циклом
ApplicationInstallations — храним факты установок \ удаления приложения и его жизненного цикла

Т.е. это тот самый минимум, который надо для запуска:
- локального приложения
- тиражного приложения

На этой неделе закончим причесывать до первого релиза 0.x
Т.к. тут уже вариативность существенно больше, то пилим с двумя другими разработчиками, MIT вот это все.

Если прям придерживаться symfony \ laravel way, то там надо делать Symfony‑bundle и Laravel‑adapter, там есть выбор, чтобы это было в одном репе или несколькро репов.
Сейчас, если разработчик на Symfony \ laravel захочет использовать bitrix24-php-lib, то ему придется руками все что надо сконфигурировать у себя (пока нет бандла \ адаптера). Есть такие?

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

3. Шаблоны репозиториев на Symfony \ Laravel
Основная точка приложения усилий, сейчас собираю шаблон симфони, чтобы проверить сценарии которые реализует bitrix24-php-lib и то насколько безболезненно можно все в кучу собрать.
https://github.com/mesilov/bitrix24-application-symfony-template — работы тут
Как только отлажу на симфони сценарии (установка, удаление, очереди и т.д), то можно будет сделать бандл \ и адаптер для Laravel.
Такие вот дела.
🔥4👍2
Что по инфраструктуре?

Приложение работает поверх инфраструктуры, нфраструктурной единицей у нас будет докер-контейнер.
Вопрос в том, что будем выбирать в качестве аппликейшн\веб-сервера. Какие у нас варианты:

Встроенный в PHP dev-сервер
Все запускаем на встроенном в PHP дев-сервере, а production конфигурация это не наша головная боль. Крутитесь как хотите.
У всех пользователей начинает болеть голова, а как это вот все запускать и обслуживать.

nginx + phpfpm
Есть миллион рецептов, проверено годами, собрали @ запустили, для production контура каждый самостоятельно решает ряд вопросов: выпуск сертификатов, логи, телеметрия и т.д.
ru и западное комьюнити в целом понимают, что это такое и как настраивать. На уровне шаблонов приложений даем базовую конфигурацию и дальше сами конфигурируйте как хотите.
Отложенная проблема: развитие nginx начиная с 2022 года стагнирует. Приложения для Битрикс24 не упрутся в «архитектурные» ограничения nginx, но вот экосистема не предоставляет удобных решений «из коробки», настраивайте все сами, как лично вам удобно будет ©.

angie
Это форк nginx от русскоязычной части core-команды nginx, развивается более динамично, русскоязычное комьюнити. Если у вас есть «черный пояс по nginx», то это хорошая замена, которая отвечает на значительную часть требований к современному приложению. Если говорим про западное комьюнити, то выбор angie вызовет некоторые вопросики.
Ну и никуда не девается история с long-running режимом работы php, к которому старательно пытается подойти php-комьюнити.
Более детально с tech-drama можно ознакомиться глянув эти доклады:
https://www.youtube.com/watch?v=Qx9BB7w4mt4 — php и angie
https://www.youtube.com/watch?v=QeI5GMP4ukM&t=15s — деды под пиво бухтят и рассказывают закулисную часть истории

frankenphp
Если вы последний год сидели в пещере и пропустили все новости, то у PHP появился свой application-server.
https://thephp.foundation/blog/2025/05/15/frankenphp/
Из минусов: нужно выучить новый «птичьий язык» конфигурации веб-сервера caddy.
Из плюсов:
— аппликейшн-сервер развивают люди, которые знают с какой стороны PHP запрягать — Kévin Dunglas, creator of API Platform and Symfony Core Team member.
— готовые сценарии для наших любимых фреймворков (Symfony, Laravel, БУС)
— комьюнити адаптирует фреймворки\сценарии и всю обвязку под текущий стек, а под условный nginx вы должны будете портировать конфиги сами.

Поэтому, выбираем в качестве application-server frankenphp 🤔 и на нем отлаживаем «production-ready» конфигурацию приложения, заодно посмотрим, как это выглядит в реальности, а не на бодрых докладах инфлюенсеров с ютьюба, у которых все само работает.
🤯1
🚀 1.7.0

Added
- Services\Sale\Delivery\Service\Delivery, see sale.delivery.*
- Services\Sale\DeliveryRequest\Service\DeliveryRequest sale.delivery.request.*
- Services\Sale\DeliveryExtraService\Service\DeliveryExtraService with support methods see sale.delivery.extra.service.*
- Services\Sale\DeliveryHandler\Service\DeliveryHandler see sale.delivery.handler.*
- Services\Disk\Service\Disk see disk service methods
- Services\Disk\Storage\Service\Storage see disk.storage.*
- Services\Disk\Folder\Service\Folder see disk.folder.*
- Services\Disk\File\Service\File see disk.file.*
- Services\CRM\Documentgenerator\Numerator see crm.documentgenerator.numerator.*
- Services\Paysystem\Handler\Service\Handler see pay_system.handler.*
- Services\Paysystem\Service\Paysystem see sale.paysystem.*
- Services\Paysystem\Settings\Service\Settings see sale.paysystem.settings.*
- Services\Sale\Shipment\Service\Shipment see sale.shipment.*
- Services\Sale\ShipmentProperty\Service\ShipmentProperty see sale.shipmentproperty.*
- Services\Sale\ShipmentPropertyValue\Service\ShipmentPropertyValue see sale.shipmentpropertyvalue.*
- Services\Sale\ShipmentItem\Service\ShipmentItem see sale.shipmentitem.*
- Services\Sale\Payment\Service\Payment see sale.payment.*
- Services\Sale\CashboxHandler\Service\CashboxHandler see sale.cashbox.handler.*
- Services\Sale\Cashbox\Service\Cashbox see sale.cashbox.*
- Services\Calendar\Service\Calendar see calendar.*
- Added support for events:
- OnCalendarSectionAdd
- OnCalendarSectionUpdate
- OnCalendarSectionDelete
- Services\Calendar\Event\Service\Event see calendar.event.*
- Services\Calendar\Resource\Service\Resource see calendar.resource.*
- Services\Sale\PaymentItemBasket\Service\PaymentItemBasket see sale.paymentitembasket.*
- Services\Sale\PaymentItemShipment\Service\PaymentItemShipment see sale.paymentitemshipment.*
- Services\Sale\PropertyRelation\Service\PropertyRelation sale.propertyRelation.*

Fixed
- Fixed Incorrect data loading in Core\Batch::getTraversableList() with desc sorting by ID

Statistics

Bitrix24 API-methods count: 1162
Supported in bitrix24-php-sdk methods count: 632
Coverage percentage: 54.39% 🚀

See details in https://github.com/bitrix24/b24phpsdk/releases
🔥4
🚀 1.8.0

Added
- Added service Services\CRM\Type\Service\Type
- For AbstractCrmItem added method getSmartProcessItem to get smart process item
- Added support for events
- Added separated methods RemoteEventsFactory::create and RemoteEventsFactory::validate for create and validate incoming
events
- Added comprehensive unit tests for RemoteEventsFactory::create and RemoteEventsFactory::validate methods
- Updated ContactPersonInterface implementation
- Added comprehensive unit tests for UTMs
- Added comprehensive unit tests for UserAgentInfo
- Added support for dynamic OAuth server selection based on regional endpoints
- Added comprehensive unit tests for Endpoints

Changed
- Breaking changes in ContactPersonInterface method signatures:
- changeEmail(?string $email) - removed second parameter ?bool $isEmailVerified. Migration path: call markEmailAsVerified() separately after changeEmail() if email needs to be verified
- changeMobilePhone(?PhoneNumber $phoneNumber) - removed second parameter ?bool $isMobilePhoneVerified. Migration path: call markMobilePhoneAsVerified() separately after changeMobilePhone() if phone needs to be verified
- Replaced getUserAgent(), getUserAgentReferer(), getUserAgentIp() methods with single getUserAgentInfo(): UserAgentInfo method that returns complete user agent information object. Migration path: use $info->userAgent, $info->referrer, $info->ip properties instead
- Updated RemoteEventsFactory::validate() method signature from validate(EventInterface $event, string $applicationToken) to
validate(Bitrix24AccountInterface $bitrix24Account, EventInterface $event).
- Docker configuration updated to PHP 8.4
- Development environment now uses PHP 8.4.14 (docker/php-cli/Dockerfile):
- PHP 8.4 compatibility improvements:
- OAuth server selection made dynamic:

Fixed
- Fixed wrong offset in ItemsResult
- Fixed wrong exception for method crm.item.get, now it ItemNotFoundException
- Fixed added type project in enum PortalLicenseFamily
- Fixed errors in ContactPersonRepositoryInterfaceTest
- Breaking change: Fixed method signature Credentials::createFromOAuth() - third parameter changed from string $domainUrl to Endpoints $endpoints
object
- Migration: Replace Credentials::createFromOAuth($authToken, $appProfile, 'https://example.com') with Credentials::createFromOAuth($authToken, $appProfile, new Endpoints('https://example.com', 'https://oauth.bitrix.info/'))
- Updated all unit and integration tests to use new signature
- Fixed bug in Endpoints class constructor
- Fixed unit tests in CredentialsTest.php to properly instantiate Endpoints objects
- Fixed unit tests in CoreTest.php integration test to use Endpoints object

Deprecated
- Method RemoteEventsFactory::createEvent marked as deprecated, use RemoteEventsFactory::create and RemoteEventsFactory::validate instead

Statistics
Bitrix24 API-methods count: 1162
Supported in bitrix24-php-sdk methods count: 639
Coverage percentage: 54.99% 🚀
Supported in bitrix24-php-sdk methods with batch wrapper count: 91

https://github.com/bitrix24/b24phpsdk/releases/tag/1.8.0
🔥1
Привет, вышел новый релиз 0.3.0 bitrix24-php-lib, это библиотека которая отвечает за работу с ключевыми подсистемами вашего тиражного или локального приложения:
— Bitrix24 accounts храним авторизационные токены
— Installation facts храним факты установок и удаления приложений
— ApplicationSettings 🆕🚀 настройки уровня приложения, департамента, пользователя, храним в привязке к installation facts
— ContactPersons work in progress кто ставил приложение и как с ним связаться для оказания саппорта
— Bitrix24Partners work in progress, кто из партнеров поставил приложение, да, те самые Partners Friendly, спасибо Ивану Санникову @zametki_na_polyah за идею
— Application Journal work in progress, журнал приложения, содержащий бизнесовые события, ваш саппорт скажет вам спасибо.

Как вы понимаете, основная задача — отдать максимум «типового» функционала в стартер приложения

https://github.com/mesilov/bitrix24-php-lib
4🔥7
Запрыгиваем в последний вагон! Как выиграть два бесплатных билета смотрим внизу 👇

Когда проекты растут, а требований становится больше, скорость разработки начинает упираться не в язык или фреймворки, а в процессы, инструменты и организацию работы.

С 1 по 5 декабря идет Podlodka PHP Crew о том, как ускорить PHP-разработку без стресса и перегрузов.

Все темы прикладные, с упором на ускорение команд и уменьшение рутины:

📄 Контракты пишем — код генерим Александр Забанов (Вебпрактик): contract-first подход, который снижает количество ошибок и делает интеграции предсказуемыми.

⚙️ Background-агенты в разработке — Пётр Мязин («Пятиминутка PHP») покажет, как построить процесс вокруг ИИ-инструментов.

🧩 Тесты для ускорения Александр Макаров (Twindo): о роли тестирования в скорости разработки и как распределить ответственность между разработчиками, QA и LLM.

🚦 Светофоры для разработчиков — Ярослав Тарасов (Skyeng) расскажет, как ускорить обратную связь от коммита до продакшена.

🔥 Баланс фич и техдолга — Дмитрий Кириллов поделится холиварным кейсом «100% фичи, 0% техдолг».

🤖 От промпта к продакшену — Павел Бучнев (Spiral Scout, 🔥) объяснит, почему пора мыслить контекстами, а не только промптами.

Программа и билеты: https://podlodka.io/phpcrew


Что делать?
- подписаться на канал https://news.1rj.ru/str/bitrix24phpsdk
- написать комментарий к этому сообщению
- розыгрыш промокодов сегодня в 10:00 по Москве
Please open Telegram to view this post
VIEW IN TELEGRAM
Сейчас на стадии обсуждения вопрос про поддержку новой версии API в текущем SDK, пока вижу так, список ломающих изменений закину в ишулю, если у вас есть дополнительные предложения, то сейчас самое время их озвучить тут или на github

https://github.com/bitrix24/b24phpsdk/issues/317
1.9.0 🚀

Added
- Added ApplicationSettings contracts for managing application configuration settings with support for multiple scopes (global, user-specific, department-specific).
- Added VersionedScope container class for managing multiple Scope instances with version support.
- Added MCP (Model Context Protocol) server configuration for Bitrix24 API documentation.
- Added .claude/mcp_settings.json with Bitrix24 MCP server setup.
- Added specialized exceptions for OAuth token refresh errors.

Changed
- Updated darsyn/ip dependency constraint to support version 6.x alongside versions 4.x and 5.x

Fixed
- Fixed MOVED_TIME field in DealItemResult and LeadItemResult to return CarbonImmutable instead of int
- Fixed invalid type casting hints in FlowItemResult
- Improved error handling during OAuth token refresh in ApiClient::getNewAuthToken()
- Fixed testFindByEmailWithVerifiedEmail test in ContactPersonRepositoryInterfaceTest to properly mark email as verified
- Fixed testDelete test in ContactPersonRepositoryInterfaceTest to call flush() after delete

Statistics
Bitrix24 API-methods count: 1165
Supported in bitrix24-php-sdk methods count: 640
Coverage percentage: 54.94% 🚀


https://github.com/bitrix24/b24phpsdk/releases/tag/1.9.0
👍2
Фильтрация в 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()
->noscript('OpenAI')
->price(100500)
);


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

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


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

$deals->getList(
new DealFilter()
->noscript()->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 спецификации и при появлении изменений — ребилдить.

Что вас бесит в таких штуках?
Где вам понравилась реализация подобных фильтров?
Please open Telegram to view this post
VIEW IN TELEGRAM
https://ai.symfony.com/ — первый релиз одной из подсистем, куда они направляли усилия в 2025 году. Если планируете трогать на новогодних праздниках, то отпишите пожалуйста свои впечатления
🔥2