Интеграция 1С-Битрикс с Контур.Бухгалтерия: автоматизация обмена

Ручная передача данных между Битриксом и бухгалтерией отнимает время и приводит к ошибкам. Мы автоматизируем обмен через REST API Контур.Бухгалтерии, чтобы документы попадали в учёт без задержек. Наша команда реализует интеграцию под ключ — от аудита до запуска и последующей поддержки.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Интеграция 1С-Битрикс с Контур.Бухгалтерия: автоматизация обмена
Средний
~1-2 недели

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

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1534
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1049
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    820
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    920
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    858
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1209

Ручная передача данных тормозит бизнес

Небольшой интернет-магазин продаёт через Битрикс, а бухгалтер ведёт учёт в Контур.Бухгалтерии. Каждый месяц бухгалтер вручную переносит данные о продажах, накладных и оплатах — это отнимает 2–4 часа монотонной работы. Ошибки при копировании приводят к расхождениям: одна лишняя цифра в ИНН — и налоговая требует уточнений. Мы сталкивались с кейсами, где из-за этого задерживалась сдача отчётности, а штрафы за неправильные данные достигали 20% от суммы операции. Решение — настроить автоматический обмен через REST API Контур.Бухгалтерии. Это исключает человеческий фактор, сокращает время обработки заказа до секунд и гарантирует, что документы попадают в бухгалтерию без опозданий. Наша команда имеет 5+ лет опыта в интеграции Битрикса с внешними сервисами и реализовала более 30 подобных проектов. Автоматизация позволяет экономить до $14k–20k в год на трудозатратах бухгалтерии, а также снижает риск штрафов. Мы предлагаем интеграцию под ключ: от аудита текущей схемы до запуска и мониторинга. Закажите консультацию — оценим ваш проект и предложим сроки.

API Контур.Бухгалтерии для автоматизации учёта

Контур.Бухгалтерия предоставляет REST API (документация). Авторизация через OAuth 2.0 или API-ключ (зависит от тарифа). Доступные сущности: контрагенты, договоры, документы (накладные, акты, счета), банковские операции, статьи расходов. Для интернет-магазина ключевые операции: создание и поиск контрагентов по ИНН, создание документов реализации (накладные, акты) и фиксация оплат. Автоматизация в 60 раз быстрее ручного ввода — 2–5 секунд против 2–5 минут на один заказ. API имеет ограничение 100 запросов в минуту, что достаточно даже для высоконагруженных магазинов. При сетевых ошибках мы используем retry с экспоненциальной задержкой, чтобы гарантировать доставку каждого документа.

Авторизация в API

class KonturBukhClient {
    private string $apiKey;
    private string $accountId; // ID организации в Контур.Бухгалтерии
    private string $baseUrl = 'https://api.kontur.ru/budget/v1';

    public function __construct(string $apiKey, string $accountId) {
        $this->apiKey = $apiKey;
        $this->accountId = $accountId;
    }

    public function request(string $method, string $path, array $data = []): array {
        $url = "{$this->baseUrl}/accounts/{$this->accountId}{$path}";
        $ch = curl_init($url);
        $options = [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => [
                'Content-Type: application/json',
                "X-Api-Key: {$this->apiKey}",
            ],
        ];

        if ($method === 'POST' || $method === 'PUT') {
            $options[CURLOPT_CUSTOMREQUEST] = $method;
            $options[CURLOPT_POSTFIELDS] = json_encode($data);
        } elseif ($method === 'GET' && $data) {
            $url .= '?' . http_build_query($data);
            curl_setopt($ch, CURLOPT_URL, $url);
        }

        curl_setopt_array($ch, $options);
        $response = json_decode(curl_exec($ch), true);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($httpCode >= 400) {
            throw new \RuntimeException("Kontur API error {$httpCode}: " . json_encode($response));
        }

        return $response ?? [];
    }
}

Синхронизация контрагентов

Перед созданием документа нужно убедиться, что контрагент существует в Контур.Бухгалтерии. Типичная ошибка — попытка создать документ без предварительной синхронизации. Мы используем поиск по ИНН: если контрагент уже есть, используем его ID; если нет — создаём нового. Это предотвращает дублирование записей.

public function findOrCreateContragent(\Bitrix\Sale\Order $order): string {
    $props = $order->getPropertyCollection();
    $inn = $props->getItemByOrderPropertyCode('INN')->getValue();
    $name = $props->getItemByOrderPropertyCode('COMPANY')->getValue();

    // Поиск по ИНН
    $found = $this->client->request('GET', '/counterparties', ['inn' => $inn]);
    if (!empty($found['items'])) {
        return $found['items'][0]['id'];
    }

    // Создание нового
    $contragent = $this->client->request('POST', '/counterparties', [
        'name' => $name,
        'inn' => $inn,
        'kpp' => $props->getItemByOrderPropertyCode('KPP')->getValue() ?? '',
        'type' => 'LegalEntity',
    ]);

    return $contragent['id'];
}

Создание документа реализации

При смене статуса заказа на «Отгружен» создаём накладную в Контур.Бухгалтерии. Используем событие OnSaleStatusOrder.

AddEventHandler('sale', 'OnSaleStatusOrder', function(string $statusId, \Bitrix\Sale\Order $order) {
    if ($statusId !== 'D') return; // D = Доставляется/Отгружен
    $service = new KonturBukhSyncService();
    $service->createInvoiceForOrder($order);
});

public function createInvoiceForOrder(\Bitrix\Sale\Order $order): void {
    $contragentId = $this->findOrCreateContragent($order);
    $orderNumber = $order->getField('ACCOUNT_NUMBER');
    $items = [];
    foreach ($order->getBasket() as $item) {
        $items[] = [
            'name' => $item->getField('NAME'),
            'quantity' => $item->getQuantity(),
            'price' => $item->getPrice(),
            'vatRate' => $this->getVatRate($item), // 'none'|'vat0'|'vat10'|'vat20'
            'unit' => 'шт.',
        ];
    }
    $document = $this->client->request('POST', '/documents/saleinvoices', [
        'date' => date('Y-m-d'),
        'number' => $orderNumber,
        'counterpartyId' => $contragentId,
        'items' => $items,
        'totalAmount' => $order->getPrice(),
        'comment' => 'Автоматически создан из заказа #' . $orderNumber,
    ]);
    // Сохраняем ID документа в свойствах заказа
    $order->setField('COMMENTS', $order->getField('COMMENTS') . "\nID документа КБ: " . $document['id'] );
    $order->save();
}

Фиксация оплаты

При изменении статуса оплаты заказа на «Оплачен»:

AddEventHandler('sale', 'OnSalePaymentPaid', function(\Bitrix\Sale\Payment $payment) {
    $order = $payment->getOrder();
    $documentId = $this->getKonturDocumentId($order->getId()); // из хранилища
    if (!$documentId) return;
    $this->client->request('POST', "/documents/saleinvoices/{$documentId}/payments", [
        'date' => date('Y-m-d'),
        'amount' => $payment->getSum(),
        'paymentMethod' => $payment->getPaySystem()->getField('CODE') === 'cash' ? 'Cash' : 'BankTransfer',
    ]);
});

Хранение связей

Таблица local_kontur_bukh_sync:

CREATE TABLE local_kontur_bukh_sync (
    ORDER_ID INT PRIMARY KEY,
    KB_DOC_ID VARCHAR(100),
    SYNCED_AT DATETIME,
    STATUS ENUM('pending','synced','error') DEFAULT 'pending',
    ERROR_MSG TEXT
);

Как настроить интеграцию за 5 шагов?

  1. Получить API-ключ в личном кабинете Контур.Бухгалтерии.
  2. Установить PHP-клиент (код выше) на сервер с Битриксом.
  3. Настроить соответствие полей пользовательских свойств заказа и сущностей API.
  4. Зарегистрировать обработчики событий OnSaleStatusOrder и OnSalePaymentPaid.
  5. Провести тестовую синхронизацию на staging-окружении и запустить мониторинг.

Дополнительно настраивается система уведомлений: при ошибках синхронизации отправляется алерт на почту или в Telegram. Это позволяет оперативно реагировать на сбои.

Что входит в работу по интеграции

Этапы и сроки
Этап Длительность Результат
Аналитика и проектирование 3–5 дней Схема обмена, список полей, спецификация
Разработка клиента API 5–7 дней PHP-класс с обработкой ошибок и ретраями
Синхронизация контрагентов 2–3 дня Поиск/создание по ИНН, проверка дублей
Создание документов 3–5 дней Накладные, акты, счета на основе заказов
Фиксация оплат и возвратов 2–3 дня Обработка платежей
Тестирование и запуск 3–5 дней Тесты на staging, мониторинг ошибок

Итого: от 18 до 28 рабочих дней (3–5 недель). Стоимость рассчитывается индивидуально — зависит от сложности бизнес-логики и количества статусов.

Сравнение: ручная обработка vs автоматизация

Параметр Ручная работа Автоматизация с API
Время на передачу одного заказа 2–5 минут 2–5 секунд
Вероятность ошибки 5–10% <0.1%
Затраты времени бухгалтера в месяц 8–16 часов 0 минут
Задержка при передаче От 1 дня Мгновенно
Штрафы за ошибки в документах Риск до 20% от суммы Минимизирован

Почему стоит доверить интеграцию нам

Мы не просто пишем код — мы проектируем архитектуру, которая будет работать годами. Гарантируем, что документы не потеряются: используем очередь с повторными попытками и логирование всех операций. Наш опыт — 30+ интеграций Битрикса с бухгалтерскими системами (1С, Контур, МойСклад). Хотите оценить, сколько сэкономит ваш бизнес? Свяжитесь с нами — мы проанализируем текущую схему документооборота и предложим решение. Закажите интеграцию — и забудьте о ручной передаче данных.