Интеграция 1С-Битрикс с системой ЭДО Такском
Представьте: 150 заказов в сутки, каждому — свой УПД. Менеджер формирует документ в 1С, затем вручную загружает в личный кабинет Такском — тратит 15–20 минут. Итог: 40 часов в неделю уходят на рутину. Ошибки в реквизитах ведут к отказам в 12% случаев, а контрагенты задерживают подписание в среднем на 4 дня. Ситуация усугубляется, если у клиента специфический документооборот (медицинские товары с сериями и сроками годности).
Мы специализируемся на Битрикс более 10 лет, провели 30+ проектов по интеграции ЭДО. Наша типовая реализация — автоматическая отправка УПД из Битрикс через оператора Такском без участия менеджера: статус подписания отслеживается в административной панели. Такой подход сокращает время обработки заказов на 80% и исключает ошибки ручного ввода. При 100 заказах в месяц экономия достигает $3.1k–4.5k в год. Для клиента из сферы B2B-поставок стройматериалов внедрение позволило снизить затраты на документооборот на $11k–16k в год.
Подробнее о настройке аккаунта
Для подключения облачной подписи достаточно зарегистрироваться в личном кабинете Такском, получить Client ID и Secret. Далее наш PHP-клиент автоматически получает токен.С какими проблемами сталкиваются компании
- Ручная выгрузка документов. Менеджер формирует УПД в 1С, затем загружает в личный кабинет Такском — 15–20 минут на один заказ. При 50 заказах в день это 12–17 часов чистой рутины.
- Отсутствие привязки к статусам заказа. Документ не отправляется автоматически при отгрузке — его могут забыть или отправить с опозданием.
- Сложности с контрагентами. Поиск BoxId нового контрагента занимает время, а ошибки в реквизитах ведут к отклонению документов.
- Неполный пакет документов. Для медицинских товаров нужны акты с сериями и сроками годности — стандартный УПД их не содержит.
Наш опыт показывает, что 90% этих проблем решаются грамотной интеграцией Битрикс с Такском через REST API. Получите консультацию по вашему проекту.
Как работает интеграция Такском с Битрикс?
Авторизация происходит по протоколу OAuth 2.0 Client Credentials. Мы кешируем токен на 3500 секунд (чуть меньше времени жизни), чтобы не дергать API при каждом запросе:
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']; } } Создание и отправка документа
После получения токена формируем XML документа и отправляем его в три шага: загрузка файла, подписание, отправка сообщения:
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 контрагента
При первом контакте с новым контрагентом система ищет его 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; } Найденный идентификатор сохраняется в пользовательском поле покупателя (UF_TAXCOM_BOX_ID) — следующий раз отправка происходит без запросов.
Почему стоит выбрать облачную подпись?
Облачная подпись Такском — это альтернатива покупке и настройке КриптоПро. Основные отличия:
| Критерий | КриптоПро на сервере | Облачная подпись Такском |
|---|---|---|
| Затраты на лицензию | + лицензия на каждый сервер | 0, входит в тариф ЭДО |
| Необходимость установки | + установка, настройка | не требуется |
| Хранение ключа | на сервере клиента | у оператора (сертифицировано ФСБ) |
| Работа через API | + необходимо писать обёртку | готовая функция в API |
Облачная подпись дешевле классической на 40–60% за счёт отсутствия лицензий и обслуживания.
Кейс: ЭДО для медицинского дистрибьютора (из нашей практики)
Дистрибьютор медицинских расходных материалов, ~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% по чек-листу |
| Статус подписания | Отслеживался по звонкам | Автомониторинг, уведомления |
Экономия для клиента составила $11k–16k в год за счёт сокращения ручного труда и штрафов за просроченные документы.
Мониторинг очереди документов
Для контроля документооборота — административный раздел в Битрикс с таблицей отправленных документов:
- Заказ → Документ Такском → Статус → Дата подписания
Данные берутся из таблицы local_taxcom_documents + периодический polling API Такском для обновления статусов (cron каждые 10 минут).
Что входит в работу
- Настройка аккаунта Такском — получение Client ID/Secret, облачной подписи (если требуется).
- Разработка PHP-клиента — класс для работы с REST API, кеширование токена, обработка ошибок.
- Генерация XML — формирование УПД, актов, составных документов на основе данных заказа.
- Справочник контрагентов — загрузка BoxId, сохранение в пользовательском поле Битрикс.
- Событийная отправка — привязка к статусам заказа: отгрузка → автоматическая отправка.
- Мониторинг статусов — административный раздел с таблицей, уведомления об ошибках, автообновление.
- Документация и обучение — передача кода, инструкция для менеджеров, консультация на этапе запуска.
Сроки и как начать
Базовая интеграция (УПД, облачная подпись, мониторинг) занимает от 3 до 5 недель. Расширенная с составными документами и специфическими форматами — 6–9 недель. Стоимость рассчитывается индивидуально после анализа вашей схемы документооборота. Оценим ваш проект за 2 рабочих дня — свяжитесь с нами, чтобы получить консультацию и точную оценку. Закажите тестовый запуск на одном типе документа.







