Интеграция интернет-магазина на базе CS-Cart с 1С:Управление торговлей (УТ) — это стандартная задача, которая, тем не менее, часто сопровождается техническими трудностями. Одной из самых распространенных проблем является ситуация, когда соединение между системами установлено успешно, но заказы с сайта в 1С не поступают. Разберем пошагово, как проанализировать эту проблему, локализовать ошибку и настроить корректный обмен.
Первым делом нам необходимо выяснить, генерирует ли CMS вообще какой-либо контент для передачи. Если 1С обращается к сайту, а в ответ получает пустоту, то проблема кроется в настройках модуля обмена на стороне CS-Cart. Проанализируем ситуацию с помощью прямого запроса в браузере.
Для этого введем в адресную строку следующую конструкцию:
название_сайта/exim_1c?type=sale&mode=query
Варианты результата:
Если мы получили пустую страницу, нам следует проверить внутренние настройки модуля в панели администратора CS-Cart. Пройдем по следующим пунктам:
Статусы заказов для выгрузки. Перейдем во вкладку «Заказы» в настройках модуля. Здесь крайне важно отметить галочками именно те статусы, в которых находятся ваши тестовые заказы. Например, если вы создали заказ со статусом «Открыт», а в настройках указано выгружать только «Оплаченные», то XML-файл при запросе от 1С будет пустым. Рассмотрим это как наиболее вероятную причину.
Дата последней синхронизации. Система CS-Cart хранит метку времени последнего успешного обмена. Если заказ был создан до этой даты или уже один раз «отдался» в 1С, повторно он может не выгрузиться. Для тестирования попробуйте создать абсолютно новый заказ непосредственно перед запуском обмена.
Версия протокола CommerceML. Убедимся, что версия, установленная в 1С (например, 2.07 или 3.01), совпадает с версией, выбранной в настройках модуля CS-Cart. Несоответствие схем XML может приводить к тому, что 1С просто «не видит» узлы с данными о заказах.
Иногда формирование XML прерывается из-за нехватки ресурсов сервера. Выясним, не сталкиваемся ли мы с системными лимитами PHP. При обработке большого количества заказов скрипт может потреблять много оперативной памяти.
Проанализируем параметры в файле php.ini или через панель управления хостингом:
memory_limit — должно быть не менее 256 МБ (лучше 512 МБ).max_execution_time — время выполнения скрипта стоит увеличить до 300 секунд.Также проверим логи ошибок PHP (error_log). Если при обращении к exim_1c в логах появляется запись "Allowed memory size exhausted", значит, нужно увеличивать лимиты. Если же сайт работает на PHP 8.x, убедитесь, что версия модуля CommerceML совместима с этой версией языка, иначе возникнет критическая ошибка (Fatal Error), результатом которой также станет пустая страница.
Теперь перейдем к настройкам со стороны 1С. Даже если сайт отдает корректный XML, программа 1С может отклонить загрузку из-за отсутствия необходимых условий для создания документа «Заказ клиента».
Типовое соглашение. Это критически важный момент для 1С:УТ 11. Проверим, создано ли в системе типовое соглашение с клиентом. В нем обязательно должна быть установлена галочка «Доступно для внешних систем (сайтов)». Если 1С не может подобрать соглашение для загружаемого заказа, она его просто проигнорирует без явных уведомлений об ошибке в логе обмена.
Параметры обмена. В настройках узла обмена на вкладке «Заказы» проверим:
Чтобы окончательно понять, на чьей стороне проблема (1С или сайт), воспользуемся методом локальной проверки. Изменим настройки узла обмена в 1С: вместо «Выгружать на сайт» выберем «Выгружать в каталог на диске».
Посмотрим, что происходит в этом случае:
Современные версии CS-Cart требуют повышенной безопасности. Если проверка соединения в 1С проходит успешно, но данные не передаются, выясним, не блокирует ли сервер передачу авторизационных данных.
В некоторых конфигурациях сервера (CGI/FastCGI) заголовки авторизации не передаются в PHP. Чтобы это исправить, добавим в файл .htaccess в корне сайта следующий код:
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
Также рекомендуется в настройках 1С в поле «Пароль» использовать не пароль администратора, а API-ключ, который можно сгенерировать в профиле пользователя в админ-панели CS-Cart. Это наиболее надежный способ авторизации для современных версий системы.
Мы рассмотрели основные причины, по которым заказы могут не загружаться из CS-Cart в 1С. Чаще всего проблема решается правильной настройкой статусов в модуле обмена или установкой признака доступности в типовом соглашении 1С. Помните, что детальный анализ логов сервера и использование режима выгрузки в файл позволяют локализовать ошибку за считанные минуты.