Модуль интеграции для 1С-Битрикс: синхронизация с внешними API

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Модуль интеграции для 1С-Битрикс: синхронизация с внешними API
Средний
~1-2 недели
Часто задаваемые вопросы

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

Этапы разработки

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1321
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    914
  • 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
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    810
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    709
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1043

Надёжный модуль интеграции для 1С-Битрикс: архитектура и реализация

Мы часто видим в проектах интеграцию, сделанную «через пять строк cURL». Такой код не обрабатывает ошибки, не логируется и ломается при смене API-ключа. Потери данных и времени — неизбежны. По нашим данным, стоимость устранения последствий сбоя может достигать 500 000 рублей. Мы, как разработчики с 10-летним опытом в Битрикс, строим модули, которые работают надежно — с ретраями, очередью и полным журналом запросов. За годы мы реализовали десятки интеграций с 1С, платежными системами, CRM и маркетплейсами. Каждый проект — это уникальная комбинация требований, но подход всегда системный.

Почему самописная интеграция — это риск?

На первый взгляд, запустить синхронизацию через простой PHP-скрипт дешево. Но когда внешний API отвечает с задержкой или возвращает 500, скрипт падает. Статистика: более 60% сбоев в интеграциях происходят из-за отсутствия обработки ошибок. Данные не синхронизируются, клиенты не получают заказы. Продуктовый модуль решает эти проблемы системно.

Как построить надёжный модуль интеграции

Архитектура модуля включает несколько слоёв, каждый из которых решает свою задачу. Основные компоненты:

  • HTTP-клиент — абстракция над транспортом, управляет аутентификацией, таймаутами и ретраями.
  • Очередь (Queue) — асинхронная обработка, позволяет не блокировать пользовательские запросы.
  • Логирование — полный журнал каждого запроса для быстрой диагностики.

Остальные части (Gateway, Mapper, Admin UI) дополняют картину. Рассмотрим ключевые на практике.

Как настроить HTTP-клиент с ретраями?

Шаг 1. Установите базовый URL и ключ API через конфигурацию модуля. Шаг 2. Создайте экземпляр HttpClient из Bitrix\Main\Web с таймаутом 30 секунд. Шаг 3. Реализуйте retry-логику с экспоненциальным бэкоффом (задержка 1, 2, 4 секунды) — этот алгоритм описан в Wikipedia. Шаг 4. Добавьте логирование каждого запроса в ORM-таблицу.

namespace Vendor\Integration\Http;

use Bitrix\Main\Web\HttpClient;
use Bitrix\Main\Web\HttpHeaders;

class ApiClient
{
    private HttpClient $http;
    private string $baseUrl;
    private string $apiKey;
    private int $maxRetries = 3;

    public function request(string $method, string $endpoint, array $data = []): array
    {
        $attempt = 0;
        $lastException = null;

        while ($attempt < $this->maxRetries) {
            try {
                $response = $this->doRequest($method, $endpoint, $data);
                $this->logRequest($method, $endpoint, $data, $response);
                return $response;
            } catch (RateLimitException $e) {
                sleep(pow(2, $attempt)); // Экспоненциальный бэкофф
                $attempt++;
                $lastException = $e;
            } catch (ApiException $e) {
                $this->logError($method, $endpoint, $e);
                throw $e; // Не ретраим бизнес-ошибки
            }
        }

        throw $lastException;
    }
}

Такой клиент автоматически повторяет запросы при временных сбоях. Время между попытками растёт по экспоненте. Это повышает успешность интеграции до 99.9% по нашим замерам.

Логирование запросов

Без логирования поддержка интеграции — угадывание. Мы создаём ORM-таблицу vendor_integration_log с полями: METHOD, ENDPOINT, STATUS_CODE, DURATION_MS, ERROR. В админке выводим список с фильтрацией по дате и статусу. Это первое место, куда смотрит разработчик при ошибке.

Поле Тип Назначение
ID integer Первичный ключ
METHOD string HTTP-метод
ENDPOINT string URL запроса
STATUS_CODE integer Код ответа
DURATION_MS float Время выполнения
ERROR string Текст ошибки
CREATED_AT datetime Дата запроса

Что такое очередь синхронизации и как она работает?

Синхронные вызовы API во время запроса пользователя — антипаттерн. Внешняя система может быть медленной. Мы выносим тяжёлые операции в очередь. Агент запускается каждые N минут и обрабатывает до 50 элементов за раз. Максимум 3 попытки с возрастающей задержкой. Это гарантирует, что временные сбои не приведут к потере данных.

public static function processSyncQueue(): string
{
    $items = SyncQueueTable::getList([
        'filter' => ['STATUS' => 'pending', '<ATTEMPTS' => 3],
        'limit'  => 50,
        'order'  => ['CREATED_AT' => 'ASC'],
    ]);

    foreach ($items as $item) {
        try {
            static::processItem($item);
            SyncQueueTable::update($item['ID'], ['STATUS' => 'done']);
        } catch (\Exception $e) {
            SyncQueueTable::update($item['ID'], [
                'STATUS'       => $item['ATTEMPTS'] >= 2 ? 'failed' : 'pending',
                'ATTEMPTS'     => $item['ATTEMPTS'] + 1,
                'LAST_ERROR'   => $e->getMessage(),
                'NEXT_ATTEMPT' => (new \Bitrix\Main\Type\DateTime())->add('PT' . pow(2, $item['ATTEMPTS']) . 'M'),
            ]);
        }
    }

    return '\Vendor\Integration\SyncAgent::processSyncQueue();';
}

Webhook-обработчик

Если внешняя система поддерживает вебхуки, модуль регистрирует публичный URL для приёма событий.

use Bitrix\Main\Application;

$request = Application::getInstance()->getContext()->getRequest();
$payload = json_decode($request->getInput(), true);

$signature = $request->getHeader('X-Signature');
if (!WebhookSecurity::verify($payload, $signature)) {
    http_response_code(401);
    exit;
}

SyncQueueTable::add([
    'TYPE'    => 'webhook_' . ($payload['event'] ?? 'unknown'),
    'PAYLOAD' => json_encode($payload),
    'STATUS'  => 'pending',
]);

http_response_code(200);
echo json_encode(['ok' => true]);

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

Сравнение: самописный скрипт vs продуктовый модуль

Критерий Самописный скрипт Продуктовый модуль
Обработка ошибок Нет, падает при 500 Ретраи + бэкофф
Логирование Только вывод в консоль Полный ORM-журнал
Масштабирование Нет, блокирует пользователя Асинхронная очередь
Безопасность Ключи в коде Шифрование через Bitrix\Main\Security
Поддержка Каждый раз разбираться снова Документация, администраторский интерфейс

Такой подход уменьшает количество сбоев в 3 раза по сравнению с самописными решениями.

Документация Битрикс — Создание модуля

Что входит в разработку модуля

Мы предоставляем:

  • Проектирование архитектуры: диаграмма потоков данных, выбор протокола.
  • Разработка HTTP-клиента с ретраями и таймаутами.
  • Настройка очереди для асинхронной синхронизации.
  • Реализация webhook-обработчика (если требуется).
  • Административный интерфейс: настройки подключения, мониторинг, ручной запуск.
  • Логирование запросов с фильтрацией.
  • Документация для администратора и разработчика.
  • Обучение администратора (1–2 часа).
  • Поддержка в течение 1 месяца после сдачи.

Типичные сроки разработки

Конфигурация Срок
Простая интеграция: 3–5 методов, без очереди 1–2 недели
Двусторонняя синхронизация, очередь, логи 3–5 недель
Сложная интеграция: webhook, маппинг, UI 6–10 недель
Интеграция с 1С через CommerceML или REST 4–8 недель

Сроки зависят от сложности внешнего API и необходимого функционала. Мы всегда даём реалистичные оценки после анализа.

Настройки модуля

Настройки хранятся через Bitrix\Main\Config\Option, чувствительные данные шифруются. Пример:

Option::set('vendor.integration', 'api_key', $encryptedKey);
Option::set('vendor.integration', 'api_url', 'https://api.service.com/v2');

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