Интеграция 1С-Битрикс с системой ЭДО Такском
Представьте: 150 заказов в сутки, каждому — свой УПД. Менеджер формирует документ в 1С, затем вручную загружает в личный кабинет Такском — тратит 15–20 минут. Итог: 40 часов в неделю уходят на рутину. Ошибки в реквизитах ведут к отказам в 12% случаев, а контрагенты задерживают подписание в среднем на 4 дня. Ситуация усугубляется, если у клиента специфический документооборот (медицинские товары с сериями и сроками годности).
Мы специализируемся на Битрикс более 10 лет, провели 30+ проектов по интеграции ЭДО. Наша типовая реализация — автоматическая отправка УПД из Битрикс через оператора Такском без участия менеджера: статус подписания отслеживается в административной панели. Такой подход сокращает время обработки заказов на 80% и исключает ошибки ручного ввода. При 100 заказах в месяц экономия достигает 350 000 рублей в год. Для клиента из сферы B2B-поставок стройматериалов внедрение позволило снизить затраты на документооборот на 1,2 млн рублей в год.
Подробнее о настройке аккаунта
Для подключения облачной подписи достаточно зарегистрироваться в личном кабинете Такском, получить 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% по чек-листу |
| Статус подписания | Отслеживался по звонкам | Автомониторинг, уведомления |
Экономия для клиента составила 1,2 млн рублей в год за счёт сокращения ручного труда и штрафов за просроченные документы.
Мониторинг очереди документов
Для контроля документооборота — административный раздел в Битрикс с таблицей отправленных документов:
- Заказ → Документ Такском → Статус → Дата подписания
Данные берутся из таблицы local_taxcom_documents + периодический polling API Такском для обновления статусов (cron каждые 10 минут).
Что входит в работу
- Настройка аккаунта Такском — получение Client ID/Secret, облачной подписи (если требуется).
- Разработка PHP-клиента — класс для работы с REST API, кеширование токена, обработка ошибок.
- Генерация XML — формирование УПД, актов, составных документов на основе данных заказа.
- Справочник контрагентов — загрузка BoxId, сохранение в пользовательском поле Битрикс.
- Событийная отправка — привязка к статусам заказа: отгрузка → автоматическая отправка.
- Мониторинг статусов — административный раздел с таблицей, уведомления об ошибках, автообновление.
- Документация и обучение — передача кода, инструкция для менеджеров, консультация на этапе запуска.
Сроки и как начать
Базовая интеграция (УПД, облачная подпись, мониторинг) занимает от 3 до 5 недель. Расширенная с составными документами и специфическими форматами — 6–9 недель. Стоимость рассчитывается индивидуально после анализа вашей схемы документооборота. Оценим ваш проект за 2 рабочих дня — свяжитесь с нами, чтобы получить консультацию и точную оценку. Закажите тестовый запуск на одном типе документа.







