Интеграция 1С-Битрикс с системой ЭДО Такском

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с системой ЭДО Такском
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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С-Битрикс с системой ЭДО Такском

Такском — один из аккредитованных операторов ЭДО с собственным API и сервисами для разных объёмов документооборота: от 50 до десятков тысяч документов в месяц. Компании, уже подключённые к Такском для налоговой отчётности (ФСРАР, ФНС), зачастую предпочитают использовать того же оператора для ЭДО — один договор, одна точка обслуживания. Интеграция с 1С-Битрикс позволяет автоматизировать отправку документов по событиям в интернет-магазине.

Особенности API Такском

Такском предоставляет REST API (https://edo.taxcom.ru/api/). Авторизация — через Client Credentials OAuth 2.0:

class TaxcomClient
{
    private string $baseUrl = 'https://edo.taxcom.ru/api/v1';
    private string $accessToken;

    public function __construct(
        private string $clientId,
        private string $clientSecret
    ) {
        $this->accessToken = $this->getAccessToken();
    }

    private function getAccessToken(): string
    {
        $cached = \Bitrix\Main\Data\Cache::createInstance();
        if ($cached->startDataCache(3500, 'taxcom_token', '/taxcom/')) {
            $response = $this->httpPost('https://auth.taxcom.ru/oauth/token', [
                'grant_type'    => 'client_credentials',
                'client_id'     => $this->clientId,
                'client_secret' => $this->clientSecret,
                'scope'         => 'edo',
            ]);
            $cached->endDataCache(['token' => $response['access_token']]);
            return $response['access_token'];
        }
        $data = $cached->getVars();
        return $data['token'];
    }
}

Токен кешируется на 3500 секунд (чуть меньше часа жизни токена) — обычный паттерн для OAuth Client Credentials.

Создание и отправка документа

public function sendDocument(\Bitrix\Sale\Order $order): array
{
    $xmlContent = $this->generateUPDXml($order);

    // Шаг 1: загрузка файла
    $uploadResponse = $this->apiPost('/documents/upload', [
        'FileName'    => "UPD_{$order->getId()}.xml",
        'Content'     => base64_encode($xmlContent),
        'ContentType' => 'application/xml',
    ]);

    $fileId = $uploadResponse['FileId'];

    // Шаг 2: подписание (КриптоПро или облачная подпись Такском)
    $signature = $this->signFile($xmlContent);

    // Шаг 3: отправка документа
    return $this->apiPost('/messages/send', [
        'RecipientBoxId' => $this->getRecipientBoxId($order),
        'Documents' => [[
            'FileId'    => $fileId,
            'Signature' => base64_encode($signature),
            'DocType'   => 'UniversalTransferDocument',
            'Function'  => 'ДОП',
        ]],
    ]);
}

Такском поддерживает облачную подпись через сервис «Такском-Крипто» — сертификат хранится на стороне Такском, подписание происходит через API без КриптоПро на сервере. Это упрощает инфраструктуру.

Поиск BoxId контрагента

public function findRecipientBoxId(string $inn, string $kpp = ''): ?string
{
    $response = $this->apiGet('/organizations/search', [
        'inn' => $inn,
        'kpp' => $kpp,
    ]);

    foreach ($response['Organizations'] as $org) {
        if ($org['Inn'] === $inn && ($kpp === '' || $org['Kpp'] === $kpp)) {
            return $org['BoxId'];
        }
    }
    return null;
}

При первом документе компании — поиск BoxId по ИНН/КПП, сохранение в пользовательском поле покупателя Битрикс (UF_TAXCOM_BOX_ID).

Кейс: ЭДО для медицинского дистрибьютора

Дистрибьютор медрасходников, ~400 B2B-клиентов, работает с государственными больницами и частными клиниками. Государственные учреждения часто имеют собственных ЭДО-операторов с роумингом, часть работает через Такском напрямую.

Особенность: помимо УПД, для медицинских товаров требуются акты приёмки-передачи с расширенными реквизитами (серия, срок годности, регудостоверение). Стандартный формат УПД не покрывает все поля.

Решение:

Разработан составной документ: УПД + аннотация с расширенными медицинскими реквизитами как дополнительный XML-файл в том же сообщении Такском. Оба файла подписываются одной подписью.

$documents = [
    [
        'FileId'    => $updFileId,
        'Signature' => base64_encode($updSignature),
        'DocType'   => 'UniversalTransferDocument',
    ],
    [
        'FileId'    => $annexFileId,
        'Signature' => base64_encode($annexSignature),
        'DocType'   => 'Attachment',  // дополнение к основному документу
        'Comment'   => 'Медицинские реквизиты товаров',
    ],
];

В Битрикс реквизиты товаров (серия, срок годности) хранятся как свойства позиций заказа. При генерации XML извлекаются из \Bitrix\Sale\BasketItem::getPropertyCollection().

Показатель До После
Среднее время отправки комплекта документов 45 мин/заказ Автоматически при отгрузке
Полнота пакета документов Регулярные нарекания от аптек 100% по чек-листу
Статус подписания Отслеживался по звонкам Автомониторинг, уведомления

Мониторинг очереди документов

Для контроля документооборота — административный раздел в Битрикс с таблицей отправленных документов:

Заказ → Документ Такском → Статус → Дата подписания

Данные берутся из таблицы local_taxcom_documents + периодический polling API Такском для обновления статусов (cron каждые 10 минут).

Состав работ

  • Настройка аккаунта Такском, получение Client ID/Secret
  • Настройка облачной подписи или КриптоПро
  • Разработка PHP-клиента Такском API
  • Генерация XML-документов (УПД, Акты, составные документы)
  • Справочник BoxId контрагентов в Битрикс
  • Событийная отправка при смене статуса заказа
  • Мониторинг статусов, административный раздел

Сроки: базовая интеграция — 3–5 недель. С составными документами и расширенными типами — 6–9 недель.