Перенос заказов из интернет-магазина на 1С:Предприятие — критически важный процесс для синхронизации данных между онлайн-продажами и бухгалтерским учетом. Без правильной настройки обмена риски расхождения остатков, ошибок в отчетности и задержек обработки заказов возрастают в разы. В этой статье разберём все актуальные способы выгрузки заказов из Bitrix CMS в , включая настройку модулей, обработку типичных ошибок и оптимизацию процесса для крупных магазинов.

Особое внимание уделим двум ключевым сценариям: автоматизированному обмену через CommerceML (стандарт для 1С) и альтернативным методам для нетиповых конфигураций. Также рассмотрим, как избежать дублирования заказов, настроить фильтрацию статусов и обеспечить безопасность передачи данных. Если вы уже пытались настроить интеграцию, но сталкивались с ошибками типа «Не удалось найти элемент справочника» или «Ошибка формата файла» — здесь найдёте решения.

Приступим к детальному разбору, начиная с подготовки систем и заканчивая тонкостями настройки для специфических версий 1С (включая 1С:УТ 11.5, 1С:КА 2.5 и 1С:ERP 2.5).

1. Подготовка систем к обмену данными

Прежде чем настраивать выгрузку, необходимо убедиться, что обе системы готовы к интеграции. В Bitrix проверьте:

  • 🔹 Версию модуля Интернет-магазин (должна быть не ниже 18.0.0 для полной поддержки CommerceML 2.0).
  • 🔹 Наличие прав у пользователя, под которым будет выполняться обмен (роль «Администратор» или «Менеджер интернет-магазина»).
  • 🔹 Корректную настройку CRON для автоматического запуска выгрузки (если планируете использовать расписание).

В требуется:

  • 🔹 Установить обработку CommerceML.epf (входит в стандартную поставку конфигураций для торговли).
  • 🔹 Настроить права доступа к справочникам Номенклатура, Контрагенты и Заказы покупателей.
  • 🔹 Проверить наличие свободного порта для HTTP-сервиса (по умолчанию используется 8080).
📊 Какую версию 1С вы используете для обмена?
1С:УТ 11.x
1С:КА 2.x
1С:ERP 2.x
1С:Бухгалтерия 3.0
Другая конфигурация

Если вы работаете с облачной версией , потребуется дополнительная настройка веб-сервисов через личный кабинет 1С:Fresh. Для локальных установок проверьте, что на сервере разрешён входящий трафик по протоколу HTTP/HTTPS (порт 443 для защищённого соединения).

⚠️ Внимание: Если в Bitrix используются нестандартные свойства заказов (например, дополнительные поля для юрлиц), их необходимо предварительно сопоставить с реквизитами в 1С через Настройки модуля интернет-магазина → Сопоставление свойств.

2. Настройка выгрузки через CommerceML

CommerceML — самый распространённый формат обмена между Bitrix и . Он поддерживает передачу не только заказов, но и каталога товаров, остатков, цен. Для настройки выполните следующие шаги:

  1. Активируйте обмен в Bitrix:

    Перейдите в Магазин → Настройки → Интеграция с 1С. Укажите:

    • 📌 Тип обмена: «CommerceML 2.0»
    • 📌 Адрес сайта 1С: URL веб-сервиса (например, https://ваш-сервер:8080/ws/exchange.1cws)
    • 📌 Логин/пароль: данные пользователя 1С с правами на обмен
  • Настройте 1С:

    В конфигураторе откройте Администрирование → Печатные формы, отчеты и обработки → Обмен с сайтом. Загрузите обработку CommerceML.epf и укажите:

    • 📌 Путь к файлам обмена (например, C:\Exchange\)
    • 📌 Периодичность проверки новых файлов (рекомендуется каждые 5–10 минут)
  • Убедитесь, что в 1С созданы все необходимые справочники|Проверьте права пользователя на запись в папку обмена|Отключите антивирус для папки обмена (во избежание блокировки файлов)|Создайте резервную копию баз 1С и Bitrix-->

    После настройки запустите тестовый обмен. В Bitrix это делается через кнопку Выгрузить заказы в разделе интеграции. В 1С проверьте журнал обмена (Администрирование → Журнал регистрации) на наличие ошибок.

    Тип ошибки Причина Решение
    Ошибка аутентификации Неверный логин/пароль в настройках обмена Проверьте данные пользователя в 1С и права доступа
    Не найден элемент справочника В 1С отсутствует номенклатура или контрагент из заказа Выгрузите справочники из Bitrix в 1С предварительно
    Ошибка формата файла Повреждён XML-файл при передаче Проверьте кодировку файла (должна быть UTF-8)
    Таймаут соединения Сервер 1С не отвечает на запрос Проверьте настройки фаервола и доступность порта

    3. Альтернативные способы выгрузки заказов

    Если CommerceML не подходит (например, из-за специфической конфигурации 1С или ограничений хостинга), рассмотрите альтернативные методы:

    3.1. Выгрузка через API

    Для современных версий 1С:ERP или 1С:УТ 11.5 можно использовать REST API. В Bitrix настройте вебхук на событие OnSaleOrderSaved, который будет отправлять данные заказа в 1С по API.

    Пример кода для обработчика в Bitrix:

    // Пример отправки заказа в 1С через API
    

    $orderData = [

    'number' => $order->getField('ACCOUNT_NUMBER'),

    'date' => $order->getField('DATE_INSERT')->toString(),

    'client' => $order->getPropertyCollection()->getItemByOrderPropertyId(1)->getValue(), // ФИО

    'items' => array_map(function($item) {

    return [

    'product_id' => $item->getField('PRODUCT_ID'),

    'quantity' => $item->getField('QUANTITY'),

    'price' => $item->getField('PRICE')

    ];

    }, $order->getBasket()->getBasketItems())

    ];

    $response = \Bitrix\Main\Web\HttpClient::post('https://1c-api.example.com/orders', [

    'json' => $orderData,

    'auth' => ['login', 'password']

    ]);

    3.2. Обмен через CSV/Excel

    Для небольших магазинов подойдёт ручная выгрузка заказов в CSV с последующим импортом в 1С через обработку Универсальный обмен данными. В Bitrix экспорт настраивается в Магазин → Заказы → Экспорт.

    Важно: при таком методе требуется ручное сопоставление колонок (например, ID заказаНомер документа, Email покупателяКонтрагент.Эл.почта).

    💡

    Если используете CSV, добавьте в файл колонку с хэш-суммой заказа (например, MD5 от номера и даты). Это поможет избежать дублирования при повторной выгрузке.

    3.3. Прямое подключение к базе данных

    Для высоконагруженных систем возможна настройка прямого доступа 1С к базе Bitrix через ODBC. Этот метод требует:

    • 🔹 Настройки прав доступа к БД MySQL (или PostgreSQL для Bitrix24)
    • 🔹 Создания внешнего источника данных в 1С (Администрирование → Внешние источники данных)
    • 🔹 Написания запросов на языке для выборки заказов
    ⚠️ Внимание: Прямое подключение к БД Bitrix не рекомендуется для облачных версий из-за ограничений хостинга. Также этот метод требует глубоких знаний SQL и структуры таблиц Bitrix (например, b_sale_order, b_sale_basket).

    4. Настройка фильтров и статусов заказов

    По умолчанию в 1С выгружаются все заказы, включая тестовые и отменённые. Чтобы избежать засорения базы, настройте фильтрацию:

    В Bitrix:

    1. Перейдите в Магазин → Настройки → Настройки модуля интернет-магазина → Интеграция с 1С.
    2. В разделе Фильтр заказов укажите статусы, которые нужно выгружать (например, только «Оплачен» и «Отгружен»).
    3. Добавьте исключения для заказов с меткой «Тестовый» или суммой 0 руб.

    В :

    • 🔹 Сопоставьте статусы Bitrix со статусами документов в 1С через обработку CommerceML.epf.
    • 🔹 Настройте автоматическое создание Заказа покупателя или Реализации товаров в зависимости от статуса.
    Пример сопоставления статусов

    В Bitrix статус "Оплачен" → В 1С создаётся документ "Заказ покупателя" со статусом "Оплачен (оплата подтверждена)".

    В Bitrix статус "Отменён" → В 1С документ помечается как "Закрыт (не выполнен)" и архивируется.

    Для сложных сценариев (например, когда один статус в Bitrix должен порождать несколько действий в 1С) используйте Бизнес-процессы 1С. Настройте их в разделе Администрирование → Бизнес-процессы.

    5. Автоматизация и расписание обмена

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

    5.1. CRON-задания в Bitrix

    Добавьте задачу в Панель управления → Настройки → Настройки модулей → Агент CRON:

    # Выгрузка заказов в 1С каждый час
    

    0 php /path/to/bitrix/modules/sale/1c_exchange.php --type=sale --mode=export

    5.2. Регламентные задания в 1С

    В конфигураторе создайте регламентное задание (Администрирование → Поддержка и обслуживание → Регламентные задания) с параметрами:

    • 🔹 Периодичность: Каждые 30 минут
    • 🔹 Действие: «Обмен с сайтом (загрузка заказов)»
    • 🔹 Условие: «Если есть новые файлы в папке обмена»

    Для облачных версий 1С (1С:Fresh) используйте Вебхуки. Настройте их в личном кабинете на сайте , указав URL вашего Bitrix-сайта для обратной связи.

    💡

    Для стабильной работы автоматизированного обмена рекомендуется настроить уведомления об ошибках на email администратора. В 1С это делается в обработке CommerceML.epf (раздел "Настройки уведомлений").

    6. Решение типичных проблем

    Даже при правильной настройке могут возникать ошибки. Рассмотрим самые распространённые:

    6.1. Дублирование заказов

    Причина: в 1С не настроено сопоставление по уникальному идентификатору (например, ID заказа из Bitrix).

    Решение:

    1. В обработке CommerceML.epf проверьте, что поле ИдЗаказа сопоставлено с ACCOUNT_NUMBER из Bitrix.
    2. Добавьте в 1С правило: «Если заказ с таким ИдЗаказа уже существует, обновить его, а не создавать новый».

    6.2. Ошибки кодировки

    Симптомы: в 1С вместо кириллицы отображаются знаки ??????.

    Решение:

    • 🔹 Убедитесь, что файлы обмена сохраняются в кодировке UTF-8 без BOM.
    • 🔹 В настройках Bitrix укажите charset=utf-8 в параметрах обмена.
    • 🔹 В 1С проверьте настройки региональных стандартов (Администрирование → Региональные настройки).

    6.3. Заказы не попадают в 1С

    Проверьте:

    • 🔹 Логи обмена в Bitrix (Магазин → Настройки → Логи интеграции с 1С).
    • 🔹 Права на папку обмена в 1С (должны быть разрешения на запись для пользователя, под которым работает служба 1С).
    • 🔹 Настройки фаервола/антивируса (они могут блокировать соединение по порту 8080).
    💡

    Если заказы не выгружаются, попробуйте вручную запустить обмен через http://ваш-сайт/bitrix/admin/1c_exchange.php?type=sale&mode=export. Это поможет локализовать проблему (ошибка на стороне Bitrix или 1С).

    7. Оптимизация для крупных магазинов

    Если в день обрабатывается более 1000 заказов, стандартные методы обмена могут работать медленно. Рассмотрите следующие оптимизации:

    7.1. Пакетная выгрузка

    Настройте выгрузку заказов пакетами по 100–200 штук. В Bitrix это делается через параметр LIMIT в CRON:

    0     php /path/to/bitrix/modules/sale/1c_exchange.php --type=sale --mode=export --limit=100

    7.2. Использование очередей

    Для 1С:ERP 2.5 настройте обработку заказов через Механизм очередей. Это позволит:

    • 🔹 Распределить нагрузку на сервер.
    • 🔹 Обрабатывать заказы асинхронно (без ожидания ответа от 1С).

    7.3. Кэширование справочников

    Если в заказах часто повторяются одни и те же товары или контрагенты, кэшируйте их в 1С:

    • 🔹 Создайте регистр сведений для хранения сопоставлений ID Bitrix → Ссылка 1С.
    • 🔹 Используйте этот регистр при создании новых документов, чтобы избегать повторных запросов к Bitrix.
    ⚠️ Внимание: При пакетной выгрузке убедитесь, что в 1С хватает лимитов лицензии на количество одновременно открытых сессий. Для 1С:Предприятие 8.3 по умолчанию это 5 сессий, но для крупных магазинов может потребоваться увеличение до 20–50.

    8. Безопасность обмена данными

    Передача заказов между системами требует защиты от несанкционированного доступа. Минимальные меры безопасности:

    • 🔹 Используйте HTTPS для обмена (настройте SSL-сертификат на сервере 1С).
    • 🔹 Ограничьте доступ к папке обмена по IP (в настройках веб-сервера Apache/Nginx).
    • 🔹 Настройте двухфакторную аутентификацию для пользователя 1С, под которым выполняется обмен.
    • 🔹 Регулярно обновляйте модули Bitrix и конфигурации 1С (особенно если используете CommerceML).

    Для дополнительной защиты данных:

    • 🔹 Шифруйте файлы обмена с помощью GPG или AES.
    • 🔹 Ведите журнал всех операций обмена (кто, когда и какие данные передавал).

    Важно: Если в заказах передаются персонифицированные данные (ФИО, паспортные данные, адреса), убедитесь, что процесс обмена соответствует требованиям 152-ФЗ «О персональных данных». В 1С это настраивается через модуль «Защита персональных данных» (доступен в конфигурациях на базе БСП 3.0).

    FAQ: Частые вопросы по выгрузке заказов

    Как выгрузить заказы из Bitrix в 1С:Бухгалтерию 3.0?

    1С:Бухгалтерия 3.0 не поддерживает прямой обмен через CommerceML. Используйте промежуточный формат:

    1. Выгрузите заказы из Bitrix в Excel.
    2. Импортируйте их в 1С:УТ (или 1С:КА), а затем перенесите в Бухгалтерию через документ «Поступление товаров и услуг».

    Альтернатива: настройте обмен через универсальный формат EnterpriseData (требуется доработка конфигурации).

    Почему в 1С не создаются заказы, хотя файлы обмена генерируются?

    Проверьте:

    • 🔹 Права пользователя 1С на создание документов «Заказ покупателя».
    • 🔹 Наличие обязательных реквизитов (например, в 1С может быть обязательным поле «Контрагент», которое не заполняется из Bitrix).
    • 🔹 Логи обмена в 1С (Администрирование → Журнал регистрации) на наличие ошибок валидации.

    Частая причина: в Bitrix не заполнено поле «Телефон» или «Email» покупателя, которое в 1С помечено как обязательное.

    Можно ли выгружать заказы из Bitrix24 в 1С?

    Да, но с ограничениями:

    • 🔹 В Bitrix24 нет встроенного модуля для CommerceML, поэтому используйте:
      • 📌 REST API (настройте вебхук на событие создания сделки).
      • 📌 Роботы Bitrix24 для автоматической отправки данных в 1С.
    • 🔹 Для облачных версий 1С (1С:Fresh) подключите коннектор Bitrix24 из маркетплейса 1С.

    Пример кода для выгрузки сделки через API:

    // Получение сделки из Bitrix24
    

    $deal = CRest::call('crm.deal.get', ['id' => $dealId]);

    // Отправка в 1С

    $response = \Bitrix\Main\Web\HttpClient::post('https://1c-api.example.com/deals', [

    'json' => [

    'deal_id' => $deal['ID'],

    'client' => $deal['CONTACT_ID'],

    'amount' => $deal['OPPORTUNITY'],

    'stage' => $deal['STAGE_ID']

    ]

    ]);

    Как настроить обмен, если в 1С используется нестандартная конфигурация?

    Для нетиповых конфигураций:

    1. Создайте внешнюю обработку обмена на основе CommerceML.epf, адаптировав её под вашу структуру данных.
    2. Используйте БСП 3.0 (Библиотека стандартных подсистем) для интеграции через HTTP-Сервисы.
    3. Если в конфигурации нет справочника «Заказы покупателей», сопоставляйте данные с документом «Реализация товаров и услуг».

    Пример доработки: если в вашей 1С заказы хранятся в регистре сведений (а не в документе), модифицируйте обработку CommerceML.epf, заменив создание документа на запись в регистр.

    Что делать, если после обновления Bitrix или 1С обмен перестал работать?

    После обновлений:

    • 🔹 Проверьте совместимость версий модуля Интернет-магазин в Bitrix и обработки CommerceML.epf в 1С.
    • 🔹 Обновите формат обмена: в новых версиях 1С:УТ 11.5 используется CommerceML 2.1 (вместо 2.0).
    • 🔹 Сбросьте кэш в Bitrix (Настройки → Инструменты → Очистка кэша).

    Если обмен всё равно не работает, сравните структуру XML-файлов до и после обновления (например, через diff в Notepad++). Часто проблемы возникают из-за изменения названий тегов (например, <Заказ><Документ>).