Разработка интеграции 1С-Битрикс через REST API

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка интеграции 1С-Битрикс через REST API
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка интеграции 1С-Битрикс через REST API

1С-Битрикс предоставляет собственный REST API через модуль bitrix.rest (начиная с версии 14.0). Это не просто набор эндпоинтов — полноценный фреймворк для создания приложений и интеграций с аутентификацией OAuth 2.0, системой событий и вебхуков.

Типы REST-приложений в Битриксе

Локальное приложение — устанавливается на конкретный портал Битрикс24, не публикуется в маркетплейсе. Создаётся в «Приложения → Разработчикам → Другое → Локальное приложение». Проще в настройке, нет процедуры проверки.

Входящий вебхук — упрощённый вариант: фиксированный токен, привязанный к конкретному пользователю. Подходит для server-to-server интеграций, где не нужен пользовательский OAuth.

OAuth-приложение — полноценное приложение с авторизацией пользователей через OAuth 2.0. Нужно, если приложение обслуживает несколько порталов.

Создание REST API для 1С-Битрикс как источника данных

Стандартный модуль bitrix.rest открывает данные Битрикса для внешних систем. Но иногда нужно обратное: создать REST API для данных 1С-Битрикс, который будет вызывать внешняя система.

Используем модуль main и маршруты Битрикс D7:

// В модуле или init.php — регистрируем обработчик
use Bitrix\Main\Routing\Controllers\PublicPageController;

$app = \Bitrix\Main\Application::getInstance();
$app->getRouter()->add(
    'GET', '/api/v1/products/{id}',
    function(\Bitrix\Main\HttpRequest $request, int $id) {
        // Проверяем API-ключ
        $apiKey = $request->getHeader('X-API-Key');
        if (!validateApiKey($apiKey)) {
            http_response_code(401);
            echo json_encode(['error' => 'Unauthorized']);
            die();
        }

        $element = \CIBlockElement::GetByID($id)->GetNext();
        header('Content-Type: application/json');
        echo json_encode(['product' => $element]);
        die();
    }
);

Версионирование и документирование API

Для долгосрочной интеграции — версионируем API в URL (/api/v1/, /api/v2/). Изменения в v2 не ломают клиентов на v1. Документацию генерируем через OpenAPI/Swagger: YAML-файл со схемой публикуется на /api/docs.

Обработка больших объёмов данных

Пагинация обязательна для методов, возвращающих списки:

// Стандартная пагинация для REST-метода каталога
function getProductsList(int $page = 1, int $limit = 50): array {
    $offset = ($page - 1) * $limit;

    $result = \CIBlockElement::GetList(
        ['ID' => 'ASC'],
        ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'],
        false,
        ['nTopCount' => $limit, 'iNumPage' => $page],
        ['ID', 'NAME', 'DETAIL_TEXT', 'PREVIEW_PICTURE', 'PROPERTY_*']
    );

    $items = [];
    while ($item = $result->GetNext()) {
        $items[] = $item;
    }

    $total = \CIBlockElement::GetList(
        [], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], []
    );

    return [
        'items' => $items,
        'pagination' => [
            'page'  => $page,
            'limit' => $limit,
            'total' => $total,
            'pages' => ceil($total / $limit),
        ],
    ];
}

Аутентификация и безопасность

Для machine-to-machine интеграций (внешняя система → Битрикс) используем API-ключи, хранящиеся в b_option. Ключи ротируем каждые 90 дней. В запросах обязательно:

  • HTTPS — все интеграции только по TLS 1.2+.
  • Ограничение по IP на уровне nginx: allow 192.168.1.0/24; deny all; для эндпоинтов, вызываемых только из корпоративной сети.
  • Rate limiting: limit_req_zone в nginx, 100 запросов/минуту на IP.

Кеширование ответов

REST API без кеширования — прямая нагрузка на БД при каждом запросе. Используем \Bitrix\Main\Data\Cache:

$cache = \Bitrix\Main\Data\Cache::createInstance();
$cacheKey = 'product_' . $productId . '_' . LANGUAGE_ID;

if ($cache->initCache(1800, $cacheKey, '/api/products/')) {
    return $cache->getVars();
}
$cache->startDataCache();
$data = fetchProductData($productId);
$cache->endDataCache($data);
return $data;

TTL 30 минут для каталога — разумный баланс между свежестью данных и нагрузкой.

Задача Трудозатраты
Проектирование схемы API и документация 4–8 ч
Реализация CRUD-методов (на сущность) 4–6 ч
Аутентификация и безопасность 4–6 ч
Пагинация, фильтрация, кеш 4–6 ч
Тесты и интеграционная документация 6–8 ч