Разработка интеграции Битрикс24 с Яндекс.Трекер: полный гайд

Разработка интеграции Битрикс24 с Яндекс.Трекер Типичная ситуация: разработчики живут в Яндекс.Трекере, менеджеры ведут клиентские сделки в Битрикс24. Задача создана в Трекере — менеджер не видит её актуальный статус. Статус изменился в Битрикс24 — разработчик узнаёт об этом через третьи руки. Ру
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка интеграции Битрикс24 с Яндекс.Трекер: полный гайд
Средний
~1-2 недели

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1394
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    981
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    717
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    853
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    755
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1112

Разработка интеграции Битрикс24 с Яндекс.Трекер

Типичная ситуация: разработчики живут в Яндекс.Трекере, менеджеры ведут клиентские сделки в Битрикс24. Задача создана в Трекере — менеджер не видит её актуальный статус. Статус изменился в Битрикс24 — разработчик узнаёт об этом через третьи руки. Ручной перенос отнимает часы в день и чреват ошибками. Рассмотрим типовую IT-компанию: команда разработки использует Яндекс.Трекер для управления задачами, а отдел продаж работает в Битрикс24. При согласовании задач возникает разрыв — статусы не синхронизированы, информация устаревает за час. Наша интеграция устраняет этот разрыв автоматически, снижая вероятность ошибок и ускоряя выполнение задач. Мы уже реализовали такие решения для клиентов из разных отраслей, включая компании с сотнями сотрудников. Предлагаем интеграцию под ключ — от проектирования до поддержки после запуска.

Какие проблемы решает интеграция?

Ручной перенос задач. Сотрудники тратят 30–60 минут ежедневно на копирование заголовков и статусов между системами. Наш скрипт автоматизирует это полностью.

Потеря актуальности. Информация устаревает за час — менеджер видит «В работе», а задача уже закрыта. Синхронизация в реальном времени устраняет задержку.

Конфликт статусов. В Битрикс24 статусная модель одна, в Трекере — другая. Нужен чёткий маппинг, иначе при синхронизации возникает неразбериха.

Как мы это делаем: стек и архитектура

Яндекс.Трекер API: ключевые методы

Трекер предоставляет REST API с OAuth 2.0-аутентификацией. Токен организации передаётся в заголовке каждого запроса. Базовый URL: https://api.tracker.yandex.net/v3/. Основные эндпоинты:

Метод Эндпоинт Назначение
POST /issues/ Создать задачу
PATCH /issues/{issueKey} Обновить задачу
GET /issues/{issueKey} Получить задачу
POST /issues/{issueKey}/transitions/{id}/_execute Сменить статус
GET /issues/{issueKey}/comments Комментарии к задаче
POST /issues/{issueKey}/comments Добавить комментарий

Для webhook'ов используются триггеры — настраиваются в интерфейсе Трекера на уровне очереди.

Архитектура интеграции

Интеграция двусторонняя, поэтому нужно избегать петель. Решение — флаг «обновление из интеграции» (lock-механизм).

Таблица маппинга задач:

class TrackerBitrix24TaskTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'b_local_tracker_task_map'; } public static function getMap(): array { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new IntegerField('BITRIX_TASK_ID'), // ID задачи в Битрикс24 new StringField('TRACKER_ISSUE_KEY'), // Например, "DEV-123" new StringField('SYNC_DIRECTION'), // B24_TO_TRACKER | TRACKER_TO_B24 | BIDIRECTIONAL new DatetimeField('LAST_SYNC_AT'), new StringField('SYNC_LOCK'), // NULL или UUID текущей операции ]; } } 

Синхронизация Битрикс24 → Яндекс.Трекер

Используем событие OnTaskUpdate модуля tasks:

// /local/modules/local.trackerintegration/lib/handlers/taskhandler.php namespace Local\TrackerIntegration\Handlers; class TaskHandler { public static function onTaskUpdate(int $taskId, array $arFields): void { $map = TrackerBitrix24TaskTable::getByBitrixId($taskId); if (!$map || $map['SYNC_LOCK'] !== null) { return; // Нет маппинга или уже синхронизируем } // Ставим лок TrackerBitrix24TaskTable::update($map['ID'], ['SYNC_LOCK' => uniqid()]); try { $client = new TrackerApiClient(); $payload = []; if (isset($arFields['TITLE'])) { $payload['summary'] = $arFields['TITLE']; } if (isset($arFields['DESCRIPTION'])) { $payload['description'] = $arFields['DESCRIPTION']; } if (isset($arFields['STATUS'])) { // Маппинг статусов Битрикс24 → Трекер $trackerStatus = StatusMapper::b24ToTracker($arFields['STATUS']); $client->executeTransition($map['TRACKER_ISSUE_KEY'], $trackerStatus); } if (!empty($payload)) { $client->updateIssue($map['TRACKER_ISSUE_KEY'], $payload); } TrackerBitrix24TaskTable::update($map['ID'], [ 'SYNC_LOCK' => null, 'LAST_SYNC_AT' => new \Bitrix\Main\Type\DateTime(), ]); } catch (\Exception $e) { TrackerBitrix24TaskTable::update($map['ID'], ['SYNC_LOCK' => null]); \Bitrix\Main\Diag\Debug::addToLog('TrackerSync error: ' . $e->getMessage()); } } } 

Регистрация обработчика:

\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'tasks', 'OnTaskUpdate', [\Local\TrackerIntegration\Handlers\TaskHandler::class, 'onTaskUpdate'] ); 

Webhook из Яндекс.Трекера → Битрикс24

Обработчик webhook'а — контроллер, доступный по публичному URL. В Трекере настраивается триггер: «При изменении статуса → POST на https://company.bitrix24.ru/local/tracker/webhook/».

// /local/tracker/webhook/index.php $rawBody = file_get_contents('php://input'); $event = json_decode($rawBody, true); // Проверяем secret-заголовок (задаётся в настройках триггера Трекера) $secret = $_SERVER['HTTP_X_TRACKER_SECRET'] ?? ''; if ($secret !== TRACKER_WEBHOOK_SECRET) { http_response_code(403); exit; } $issueKey = $event['issue']['key'] ?? null; $newStatus = $event['updatedAttributes']['status']['to']['key'] ?? null; if (!$issueKey || !$newStatus) { http_response_code(200); exit; } $map = TrackerBitrix24TaskTable::getByTrackerKey($issueKey); if (!$map || $map['SYNC_LOCK'] !== null) { http_response_code(200); exit; } TrackerBitrix24TaskTable::update($map['ID'], ['SYNC_LOCK' => uniqid()]); $b24Status = StatusMapper::trackerToB24($newStatus); $task = new \CTasks(); $task->Update($map['BITRIX_TASK_ID'], ['STATUS' => $b24Status], false); TrackerBitrix24TaskTable::update($map['ID'], ['SYNC_LOCK' => null, 'LAST_SYNC_AT' => new \Bitrix\Main\Type\DateTime()]); http_response_code(200); echo json_encode(['ok' => true]); 

Маппинг статусов

Статусы в двух системах не совпадают — нужна таблица соответствий:

Битрикс24 (STATUS) Яндекс.Трекер (key)
1 (Новая) open
2 (Принята) inProgress
3 (В работе) inProgress
4 (Ждёт контроля) needInfo
5 (Завершена) closed
7 (Отложена) onHold

Маппинг хранится в конфигурационном файле или в b_option.

Как избежать зацикливания при двусторонней синхронизации?

При двусторонней синхронизации критичен lock-механизм, предотвращающий бесконечные петли. Когда обработчик OnTaskUpdate получает событие, он проверяет поле SYNC_LOCK в таблице маппинга. Если SYNC_LOCK не равен null, значит, изменение уже обрабатывается другой стороной — обработчик завершается без выполнения. Такой подход работает быстрее и надёжнее, чем проверка по временным меткам, поскольку исключает состояния гонки при параллельных запросах. Согласно официальной документации Битрикс24, событие OnTaskUpdate запускается при любом изменении задачи, поэтому без lock-механизма синхронизация быстро зациклится. Наша реализация гарантирует, что каждое обновление обрабатывается ровно один раз.

Создание задачи в Трекере из сделки Битрикс24

Дополнительный сценарий — при создании сделки определённого типа автоматически создавать задачу в Трекере. Реализуется через бизнес-процесс или через обработчик события onCrmDealAdd:

public static function onCrmDealAdd(int $dealId, array $arFields): void { if ($arFields['TYPE_ID'] !== 'DEVELOPMENT') { return; } $client = new TrackerApiClient(); $issue = $client->createIssue([ 'queue' => 'DEV', 'summary' => 'CRM Deal #' . $dealId . ': ' . $arFields['TITLE'], 'type' => 'task', 'assignee' => UserMapper::b24ToTracker($arFields['ASSIGNED_BY_ID']), 'tags' => ['crm', 'auto-created'], ]); // Сохранить маппинг TrackerBitrix24TaskTable::add([ 'BITRIX_TASK_ID' => 0, // Нет задачи, только сделка 'TRACKER_ISSUE_KEY' => $issue['key'], 'SYNC_DIRECTION' => 'BIDIRECTIONAL', ]); // Записать ключ задачи в поле сделки \CCrmDeal::Update($dealId, ['UF_TRACKER_ISSUE_KEY' => $issue['key']], false); } 

Процесс работы

  1. Аналитика — изучаем текущие бизнес-процессы, определяем сущности для синхронизации.
  2. Проектирование — разрабатываем архитектуру, таблицу маппинга, lock-механизм.
  3. Реализация — пишем код на PHP 8.1+, используем ORM Битрикс24 и REST API Трекера.
  4. Тестирование — проверяем синхронизацию на тестовых задачах, симулируем конфликты.
  5. Деплой — разворачиваем на боевой среде, настраиваем мониторинг.
  6. Поддержка — после запуска предоставляем гарантийную поддержку и документацию.

Сроки ориентировочно

Вариант Состав Срок
Односторонняя синхронизация Битрикс24 → Трекер или наоборот от 4 до 6 дней
Двусторонняя синхронизация Задачи, статусы, комментарии от 8 до 12 дней
Полная интеграция + Автосоздание из сделок, маппинг пользователей от 12 до 16 дней

Стоимость рассчитывается индивидуально — зависит от сложности и объёма работ. Чтобы получить точную оценку, свяжитесь с нами.

Почему выбирают нашу интеграцию?

Интеграция через REST API и webhook работает стабильно, не нагружает сервер. Мы используем кэширование тегированное и агенты для фоновых задач. Опыт наших инженеров — более 8 лет в разработке на Битрикс24. Автоматическая синхронизация выполняется за секунды, тогда как ручной перенос занимает до 30–60 минут в день — наша интеграция ускоряет работу в 50 раз. Мы гарантируем корректную работу после запуска и предоставляем документированные решения.

Что входит в работу

  • Документация по настройке и эксплуатации.
  • Доступы к репозиторию с кодом.
  • Обучение сотрудников (1 час онлайн).
  • Поддержка в течение 30 дней после запуска.
  • Возможность доработок под новые сценарии.

Закажите интеграцию — наши инженеры проанализируют ваши процессы и предложат оптимальное решение. Получите консультацию прямо сейчас, описав свою задачу.