Часто при настройке интеграции между 1С:Управление торговлей 11 и сайтом на базе Diafan CMS возникает ситуация, когда заказы с сайта успешно поступают в учетную систему, но обратный процесс — выгрузка товаров, остатков и цен — не работает. Разберем по шагам, как обеспечить корректную синхронизацию данных, на что обратить внимание в настройках и как устранить типичные ошибки обмена.
Для успешной интеграции по протоколу CommerceML крайне важно понимать, как системы «узнают» друг друга. Основным связующим звеном является уникальный идентификатор — GUID (Глобальный уникальный идентификатор). В 1С у каждого объекта (товара, категории, характеристики) есть свой GUID.
Проанализируем структуру XML-файла, который генерирует 1С. Рассмотрим тег Ид в файле import.xml. Он может выглядеть следующим образом:
<Товар>
<Ид>bf4f1b21-4f1b-11e1-8b1b-00155d053702</Ид>
<Наименование>Смартфон модель X</Наименование>
...
</Товар>
Если в 1С используются характеристики номенклатуры, идентификатор становится составным и записывается через решетку #. Например: GUID_товара#GUID_характеристики. В Diafan CMS этот полный код должен быть прописан в поле «Идентификатор для импорта». Если идентификаторы на сайте и в 1С не совпадают, система создаст новый товар (если это разрешено настройками) или просто проигнорирует обновление.
Выясним причину, по которой новые товары могут не появляться на сайте. Часто это связано с иерархией справочника номенклатуры. Рассмотрим процесс сопоставления групп товаров:
Ид.Проанализируем ситуацию: если в 1С создана новая папка, а на сайте у корневого каталога не задан верный идентификатор, обмен может «захлебнуться», так как скрипт сайта не поймет, куда поместить новые объекты. Проверьте настройки обмена в 1С на закладке «Выгрузка товаров» — убедитесь, что выбраны нужные группы номенклатуры.
Перейдем к настройкам самой CMS. В административной панели Diafan в разделе модуля «Магазин» есть специфические опции интеграции с 1С. Разберем их подробнее:
Флаг «Обновлять только цены и остатки»: Если этот флаг установлен, Diafan будет игнорировать любые новые товары в XML-пакете. Система будет искать только существующие по GUID позиции и обновлять в них цифровые значения. Для первоначального наполнения или выгрузки новинок этот флаг должен быть снят.
Способ идентификации: В современных версиях Diafan можно переключить сопоставление с внешнего идентификатора на Артикул. Рассмотрим этот вариант, если товары на сайт ранее загружались из Excel и GUID-ы в базе отсутствуют. В этом случае убедитесь, что поле Артикул в 1С строго соответствует полю Артикул на сайте.
Даже если товары успешно синхронизированы, цены могут оставаться нулевыми или не обновляться. Посмотрим на пример тега цены в файле offers.xml:
<Цены>
<Цена>
<ИдТипаЦены>3b827e65-2015-11e2-b892-00e04c391503</ИдТипаЦены>
<ЦенаЗаЕдиницу>1500</ЦенаЗаЕдиницу>
<Валюта>RUB</Валюта>
</Цена>
</Цены>
Здесь кроются две типичные ловушки:
руб., а в Diafan настроена валюта RUB, парсер может не сопоставить эти значения, и цена не обновится. Убедитесь в единообразии кодов валют (ISO-коды предпочтительнее).Если автоматический обмен «по ссылке» не дает результата, используем метод ручного анализа. Выполним следующие действия:
В настройках узла обмена в 1С выберем вариант «Выгрузка в каталог на диске». После завершения процесса мы получим несколько файлов, среди которых наиболее важны import.xml (структура и товары) и offers.xml (цены и остатки).
Проанализируем эти файлы обычным текстовым редактором. Найдите в файле проблемный товар по его наименованию. Проверьте:
Ид ему присвоен?Группы) он включен?Если в файлах данные есть, значит, 1С работает корректно, и проблему нужно искать в настройках PHP-скриптов на стороне хостинга или в настройках модуля Diafan.
Иногда обмен прерывается из-за серверных лимитов. Проанализируем типичные системные ошибки:
Memory Limit и Timeout: Если каталог товаров большой (более 5-10 тысяч позиций), скрипт обработки XML на стороне сайта может не успевать обработать файл за отведенное время max_execution_time или превышать лимит памяти memory_limit. В этом случае 1С выдаст ошибку «Сайт не вернул ответ». Решением является увеличение лимитов в php.ini или использование выгрузки частями.
Логирование: В Diafan логи обмена часто скрыты. Проверьте папку /tmp/ или /cache/ на сервере. Там могут оставаться временные XML-файлы. Если после запуска обмена папка пуста, возможно, у пользователя, под которым работает веб-сервер, нет прав на запись в эти директории.
Для восстановления полноценного обмена рекомендуем выполнить «контрольную связку»: возьмите один товар на сайте, посмотрите его Идентификатор для импорта, найдите этот же товар в 1С и убедитесь, что его GUID совпадает с точностью до символа. После того как один товар успешно обновит цену, можно переходить к массовой прописке идентификаторов для остальной базы данных.