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

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

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

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

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

Типи REST-застосунків у 1С-Бітрікс

Локальний застосунок — встановлюється на конкретний портал Bitrix24, не публікується в маркетплейсі. Створюється в «Застосунки → Розробникам → Інше → Локальний застосунок». Простіший у налаштуванні, немає процедури перевірки.

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

OAuth-застосунок — повноцінний застосунок з авторизацією користувачів через OAuth 2.0. Потрібен, якщо застосунок обслуговує кілька порталів.

Створення REST API для 1С-Бітрікс як джерела даних

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

Використовуємо модуль main та маршрути Bitrix 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 інтеграцій (зовнішня система → 1С-Бітрікс) використовуємо 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 год