
Привет! Меня зовут Антон Бугерко. Я руковожу проектами по разработке в IT-Solution — платиновом партнере «1C-Битрикс», интеграторе Битрикс24 и крупнейшем разработчике приложений для данной платформы.
В этой статье я расскажу о технологии интеграции Битрикс24 со сторонними сервисами, которая применяется в IT-Solution, а также поделюсь кейсами решения бизнес-задач наших клиентов.
Наиболее частые запросы владельцев порталов Битрикс24 — это интеграции со сторонними службами доставки, транспортными компаниями, ERP, сайтами и прочими сервисами.
Существует два типа лицензий Битрикс24 — облачная и коробочная. Варианты решения задачи интеграции очень схожи для обоих типов.
Первый: Найти готовое решение в Битрикс24 Маркетплейс
Метод надежный, но работает не всегда, так как нужного приложения может просто не быть среди 4000+ решений на маркете. Также стоит учитывать, что тиражные приложения создаются для массового использования и не могут учесть индивидуальные особенности всех отраслей бизнеса.
Второй: Разработать уникальный модуль интеграции или обратиться к подрядчику
Метод подходит только для коробочного Битрикс24 и таит множество подводных камней, о которых я расскажу чуть позже. Владельцы облачных лицензий могут перейти на «коробку» и уже там внедрять уникальный модуль, но это дорого и долго. Особенно эту задачу усложняет то, что с 1 сентября 2023 года прием заявок на бэкап для переноса портала из облака в коробочную версию прекращен.
Третий: Разработать и внедрить локальное приложение
На мой взгляд, это самое правильное решение для облачных и коробочных порталов. При разработке локального приложения появляется возможность реализовать систему, которая будет отвечать всем особенностям внутренней кухни компании, но при этом оказывать минимальное влияние на стабильность портала.
Компания IT-Solution разработала технологию интеграции Битрикс24 со сторонними сервисами — «Интеграционный сервер». За последние 10 лет на ее основе было реализовано свыше 200 проектов. Далее расскажу об основных компонентах системы.
Что включает в себя технология
Интеграционный сервер — инфраструктура, разработанная с использованием фреймворка Django, в которой есть все необходимое для реализации двусторонних интеграций Битрикс24 со сторонними платформами:
1. Приложение на Django + Python, набор библиотек для работы с конкретной задачей и собственные разработки для взаимодействия с Битрикс24.
Среди других фреймворков Django оказался наиболее оптимальным вариантом благодаря подробной документации, поддержке ООП, большому сообществу и постоянному внедрению новых функций. Подробнее о причинах выбора я расскажу ниже.
2. Базы данных на PostgreSQL для работы с данными, токенами приложения и логами.
3. Система получения и автоматического обновления SSL (acme + letsencrypt).
4. Сервисы запуска и перезагрузки приложения, а также системы, необходимые для работы сервера (uWSGI + Supervisor).
5. Сервис работы с системой контроля версий Git, перезагрузки и обновления приложения на сервере до новой версии релиза из административной панели.
6. Настройки регулярных задач через планировщик cron.
7. Система логирования разных уровней и каналов: файлы логов сервера, логи в базе данных приложения, уведомления в Telegram.
Почему был выбран именно Django + python
Основатель «IT-Solution» Евгений Хлобыстин начинал как программист 1С, поэтому высокоуровневый язык был просто ближе и удобнее. Первые решения в компании писали на чистом PHP. Так как фреймворки уровня Laravel еще не появились, начали искать более удобный инструмент.
Как я говорил выше, Django оказался наиболее оптимальным вариантом благодаря документации, ООП и постоянному внедрению новых функций. Дополнительным аргументом стал опыт разработки приложения для VK на стеке Django + uwsgi, которое успешно справлялось с нагрузкой до 3000 пользователей одновременно. После этого кейса отказываться от Django + Python уже не хотелось.
При разработке фронтенда мы столкнулись с трудностями и пробовали уйти от использования чистого JavaScript. Экспериментировали с разными фреймворками, но в итоге остановились на Vue.js, поскольку он реактивный, прост в использовании и совместим с Django + Python.
Эффективность стека подтверждается тем, что многие разработчики тиражных и локальных приложений для Битрикс24 со временем переняли наш опыт и используют эту технологию в своих решениях.
Внутренняя архитектура решения

Примеры использования технологии
На основе технологии было реализовано множество интеграций облачного и коробочного Битрикс24 со сторонними сервисами. Вот несколько кейсов для демонстрации возможностей решения.
Интеграция Битрикс24 с транспортной компанией
Заказчик обратился в IT-Solution за разработкой решения для интеграции, которая позволит создавать заявки на доставку и отслеживать их статусы в Битрикс24, не заходя на сайт транспортной компании. Также потребовался специфический функционал: расчет ориентировочной стоимости и сроков доставки до ближайших к адресу клиента пунктов выдачи.
Решение первой задачи было реализовано достаточно стандартно. Для запуска процесса формирования заявки нужно открыть соответствующий пункт меню карточки Сделки в CRM. При открытии раздела запускается окно локального приложения на базе интеграционного сервера.
Большинство данных в заявке заполняются автоматически на основании информации в Сделке. Вручную указываются только адрес склада, дата отправки и адрес терминала отгрузки или получателя. Далее система отправляет заявку на сервер, где она обрабатывается и по API передается в сервис транспортной компании.

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

Указанные данные выгружаются на сервер, который обрабатывает их, производит необходимые запросы к API «ПЭК» на получение координат, цен и сроков доставки, исходя из габаритов товаров в Сделке. После того как данные получены, сервер производит расчеты, а их результаты выводятся на карту и в таблицу.


Во время тестирования калькулятора мы столкнулись с казусом. Для расчета кратчайшего расстояния от адреса клиента до терминалов использовалась формула декартова расстояния d = √((x₂ - x₁)² + (y₂ - y₁)²). Вследствие этого система считала расстояние фактически сквозь Землю.
Поняв причину и в очередной раз убедившись, что Земля — эллипсоид, мы воспользовались формулой гаверсинусов:
Где:
d — расстояние между точками (в километрах, если R — радиус Земли в километрах).
R — средний радиус Земли (около 6371 км).
lat1, lon1 — широта и долгота первой точки в радианах.
lat2, lon2 — широта и долгота второй точки в радианах.
Формула в виде метода модели:
def get_distance(self, latitude: float, longitude: float) -> float:
lat1 = math.radians(latitude)
lon1 = math.radians(longitude)
lat2 = math.radians(self.latitude)
lon2 = math.radians(self.longitude)
return 2 * self.R * math.asin(math.sqrt(math.sin((lat2 - lat1) / 2) ** 2 + math.cos(lat1) * math.cos(lat2) * math.sin((lon2 - lon1) / 2) ** 2))
Также отмечу, что по умолчанию Django работает синхронно. Это не очень удобно, когда нужно быстро обработать много запросов к API. Чтобы ускорить работу приложения, можно использовать асинхронные библиотеки, такие как asyncio + aiohttp или httpx, но в данном случае мы обошлись ThreadPoolExecutor.
Интеграция Битрикс24 с несколькими сервисами
В компании заказчика сотрудники регулярно направляются в командировки по всей России для встречи с клиентами. Задача заключалась в создании отчета, в котором будут содержаться все данные по расходам и маршрутам передвижения сотрудников в командировках.
Основные источники данных для отчета:
Данные по отелям и аэропортам выгружены из собственной базы данных, где сохраняется история согласования командировок, билеты и листы бронирования.
Расположение объектов клиентов, к которым направлялись сотрудники, выгружено из карточек компаний Битрикс24.
Данные о поездках на такси выгружены из корпоративного аккаунта в Яндекс Go по API Яндекса.

Для наглядности приведу пример получения данных из Яндекс GO и их последующего отображения на интерактивной карте.
Список сотрудников в корпоративном аккаунте Яндекс GO передается в локальное приложение.
На стороне приложения пользователь выбирает нужных сотрудников с помощью фильтров, после чего выполняется запрос к API Яндекса на получение списка поездок.
Полученные данные о поездках обрабатываются и передаются в локальное приложение для отображения на карте.
Для соединения точек маршрутов между собой используется ymaps.Polyline.
В случае с другими источниками данных для выгрузки применяются аналогичные методы, но с определёнными нюансами. Например, для получения координат из адреса используется геокодер от Яндекса.

Таким образом, мы получили инструмент, который позволяет отслеживать маршруты сотрудников во время командировок в рамках одного окна.
Система инвентаризации по QR-коду
Организация предоставляет оборудование в аренду. Ранее для учета техники, которая была передана клиентам, компания ограничивалась заключением договоров. В документах указывались даты выдачи техники, инвентарные номера, а также контактные данные лиц, которые несут ответственность за технику. С ростом количества заказов этих договоров стало так много, что отследить текущее местоположение техники было крайне сложно.
Изначально заказчик пробовал решать эту проблему самостоятельно с помощью обычной инвентаризации. Но для этого использовали тонны макулатуры, которую менеджеры возили от склада до клиента, а затем сдавали в архив.
Мы начали свою работу с того, что разработали простое приложение для генерации большого количества элементов смарт-процесса.
Смарт-процессы — инструмент, позволяющий создать новые элементы CRM и настраивать их под уникальные задачи. Для каждого процесса можно настроить карточку со своим набором полей, отдельные воронки, стадии в канбане, права доступа, связь с задачами, календарем и другими элементами.

Каждый сгенерированный элемент — это карточка устройства в смарт-процессе «Оборудование». В них вносится информация по технике, а также автоматически генерируется специальная ссылка на страницу оборудования в Битрикс24 для формирования QR-кода.

Почему я назвал ссылку «специальной»? Дело в том, что в нее зашит ID элемента смарт-процесса, чтобы по нему можно было определить, какое оборудование необходимо найти в системе. Проблема: если добавить просто ID, будет возможность перебором найти информацию о другом оборудовании. Так как QR-код будет использоваться не только сотрудниками, но и клиентами, это было недопустимо. Поэтому с помощью django.core.signing.Signer формируется защищенная от подбора ссылка с информацией, скрытой криптографической подписью.
secret = Signer().sign(inventory_id)
url = f'{self.BASE_URL}/inventory/{secret}'
После заполнения карточек работники склада генерируют QR-коды ссылок, распечатывают их и наклеивают на соответствующее оборудование.

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

Почему мы используем такой метод и на облаке, и на коробке Битрикс24?
Несмотря на то, что описанный выше метод интеграции изначально разрабатывался для облачной версии Битрикс24, в 99% случаев мы используем его и в случае с коробочными порталами.
Дело в том, что «1С-Битрикс» регулярно повышает версию PHP для обеспечения безопасности и высокой производительности своих продуктов. Последствия — после обновления коробки самописные модули могут перестать работать, так как обновленный PHP, например, не поддерживает какой-нибудь запрос. В свою очередь, на решения, построенные на базе отдельного сервера, это никак не повлияет.
Итог
Выделю три основных преимущества данной технологии интеграции.
Универсальность
Интеграцию можно реализовать на любых тарифах и типах лицензий Битрикс24 (за исключением облачного тарифа «Бесплатный»). Единственное условие — наличие подписки «Битрикс24 Маркетплейс».
Автономность
Благодаря автообновлению SSL-сертификатов и встроенным сервисам управления приложением интеграция способна работать автономно в течение нескольких лет. После внедрения наша команда подключается к порталу клиента преимущественно для реализации новых функций. Редкие сбои, как правило, связаны с проблемами на удаленном сервере либо с изменениями на портале, которые клиент внес самостоятельно.
Многозадачность
Один сервер может поддерживать несколько интеграций, что существенно снижает стоимость и ускоряет разработку при подключении дополнительных сервисов к Битрикс24 в будущем.
Комментарии (2)
pavia
04.08.2025 07:14Vue.js, совместим с Django + Python, пишите вы, ну каким он образом совместим то? Полная безграмотность, как и вся статья.
atatarn
Ещё бы облачный Б24 перестал использовать секрет webhook'а прямо в URL path, было бы совсем хорошо.
Простите за нудёж.