Перенос заказов из интернет-магазина на 1С:Предприятие — критически важный процесс для синхронизации данных между онлайн-продажами и бухгалтерским учетом. Без правильной настройки обмена риски расхождения остатков, ошибок в отчетности и задержек обработки заказов возрастают в разы. В этой статье разберём все актуальные способы выгрузки заказов из Bitrix CMS в 1С, включая настройку модулей, обработку типичных ошибок и оптимизацию процесса для крупных магазинов.
Особое внимание уделим двум ключевым сценариям: автоматизированному обмену через CommerceML (стандарт для 1С) и альтернативным методам для нетиповых конфигураций. Также рассмотрим, как избежать дублирования заказов, настроить фильтрацию статусов и обеспечить безопасность передачи данных. Если вы уже пытались настроить интеграцию, но сталкивались с ошибками типа «Не удалось найти элемент справочника» или «Ошибка формата файла» — здесь найдёте решения.
Приступим к детальному разбору, начиная с подготовки систем и заканчивая тонкостями настройки для специфических версий 1С (включая 1С:УТ 11.5, 1С:КА 2.5 и 1С:ERP 2.5).
1. Подготовка систем к обмену данными
Прежде чем настраивать выгрузку, необходимо убедиться, что обе системы готовы к интеграции. В Bitrix проверьте:
- 🔹 Версию модуля Интернет-магазин (должна быть не ниже 18.0.0 для полной поддержки
CommerceML 2.0). - 🔹 Наличие прав у пользователя, под которым будет выполняться обмен (роль «Администратор» или «Менеджер интернет-магазина»).
- 🔹 Корректную настройку
CRONдля автоматического запуска выгрузки (если планируете использовать расписание).
В 1С требуется:
- 🔹 Установить обработку
CommerceML.epf(входит в стандартную поставку конфигураций для торговли). - 🔹 Настроить права доступа к справочникам Номенклатура, Контрагенты и Заказы покупателей.
- 🔹 Проверить наличие свободного порта для
HTTP-сервиса(по умолчанию используется8080).
Если вы работаете с облачной версией 1С, потребуется дополнительная настройка веб-сервисов через личный кабинет 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С с правами на обмен
В конфигураторе откройте Администрирование → Печатные формы, отчеты и обработки → Обмен с сайтом. Загрузите обработку 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С (
Администрирование → Внешние источники данных) - 🔹 Написания запросов на языке 1С для выборки заказов
⚠️ Внимание: Прямое подключение к БД Bitrix не рекомендуется для облачных версий из-за ограничений хостинга. Также этот метод требует глубоких знаний SQL и структуры таблиц Bitrix (например,b_sale_order,b_sale_basket).
4. Настройка фильтров и статусов заказов
По умолчанию в 1С выгружаются все заказы, включая тестовые и отменённые. Чтобы избежать засорения базы, настройте фильтрацию:
В Bitrix:
- Перейдите в
Магазин → Настройки → Настройки модуля интернет-магазина → Интеграция с 1С. - В разделе Фильтр заказов укажите статусы, которые нужно выгружать (например, только «Оплачен» и «Отгружен»).
- Добавьте исключения для заказов с меткой «Тестовый» или суммой
0 руб.
В 1С:
- 🔹 Сопоставьте статусы 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) используйте Вебхуки. Настройте их в личном кабинете на сайте 1С, указав URL вашего Bitrix-сайта для обратной связи.
Для стабильной работы автоматизированного обмена рекомендуется настроить уведомления об ошибках на email администратора. В 1С это делается в обработке CommerceML.epf (раздел "Настройки уведомлений").
6. Решение типичных проблем
Даже при правильной настройке могут возникать ошибки. Рассмотрим самые распространённые:
6.1. Дублирование заказов
Причина: в 1С не настроено сопоставление по уникальному идентификатору (например, ID заказа из Bitrix).
Решение:
- В обработке
CommerceML.epfпроверьте, что полеИдЗаказасопоставлено сACCOUNT_NUMBERиз Bitrix. - Добавьте в 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. Используйте промежуточный формат:
- Выгрузите заказы из Bitrix в
Excel. - Импортируйте их в 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С используется нестандартная конфигурация?
Для нетиповых конфигураций:
- Создайте внешнюю обработку обмена на основе
CommerceML.epf, адаптировав её под вашу структуру данных. - Используйте БСП 3.0 (Библиотека стандартных подсистем) для интеграции через
HTTP-Сервисы. - Если в конфигурации нет справочника «Заказы покупателей», сопоставляйте данные с документом «Реализация товаров и услуг».
Пример доработки: если в вашей 1С заказы хранятся в регистре сведений (а не в документе), модифицируйте обработку CommerceML.epf, заменив создание документа на запись в регистр.
Что делать, если после обновления Bitrix или 1С обмен перестал работать?
После обновлений:
- 🔹 Проверьте совместимость версий модуля Интернет-магазин в Bitrix и обработки
CommerceML.epfв 1С. - 🔹 Обновите формат обмена: в новых версиях 1С:УТ 11.5 используется
CommerceML 2.1(вместо 2.0). - 🔹 Сбросьте кэш в Bitrix (
Настройки → Инструменты → Очистка кэша).
Если обмен всё равно не работает, сравните структуру XML-файлов до и после обновления (например, через diff в Notepad++). Часто проблемы возникают из-за изменения названий тегов (например, <Заказ> → <Документ>).