Как настроить выгрузку товаров и цен из 1С:Управление торговлей 11 в Diafan CMS?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

Часто при настройке интеграции между 1С:Управление торговлей 11 и сайтом на базе Diafan CMS возникает ситуация, когда заказы с сайта успешно поступают в учетную систему, но обратный процесс — выгрузка товаров, остатков и цен — не работает. Разберем по шагам, как обеспечить корректную синхронизацию данных, на что обратить внимание в настройках и как устранить типичные ошибки обмена.

Понимание механизма идентификации (GUID)

Для успешной интеграции по протоколу CommerceML крайне важно понимать, как системы «узнают» друг друга. Основным связующим звеном является уникальный идентификатор — GUID (Глобальный уникальный идентификатор). В 1С у каждого объекта (товара, категории, характеристики) есть свой GUID.

Проанализируем структуру XML-файла, который генерирует 1С. Рассмотрим тег Ид в файле import.xml. Он может выглядеть следующим образом:


<Товар>
    <Ид>bf4f1b21-4f1b-11e1-8b1b-00155d053702</Ид>
    <Наименование>Смартфон модель X</Наименование>
    ...
</Товар>

Если в 1С используются характеристики номенклатуры, идентификатор становится составным и записывается через решетку #. Например: GUID_товара#GUID_характеристики. В Diafan CMS этот полный код должен быть прописан в поле «Идентификатор для импорта». Если идентификаторы на сайте и в 1С не совпадают, система создаст новый товар (если это разрешено настройками) или просто проигнорирует обновление.

Синхронизация структуры каталога

Выясним причину, по которой новые товары могут не появляться на сайте. Часто это связано с иерархией справочника номенклатуры. Рассмотрим процесс сопоставления групп товаров:

  1. Каждая папка (категория) в 1С также имеет свой уникальный Ид.
  2. Если на сайте уже создана структура разделов вручную, Diafan не знает, к какому разделу относится папка из 1С.
  3. Необходимо зайти в настройки каждой категории на сайте и вставить соответствующий GUID из 1С в поле для импорта.

Проанализируем ситуацию: если в 1С создана новая папка, а на сайте у корневого каталога не задан верный идентификатор, обмен может «захлебнуться», так как скрипт сайта не поймет, куда поместить новые объекты. Проверьте настройки обмена в 1С на закладке «Выгрузка товаров» — убедитесь, что выбраны нужные группы номенклатуры.

Настройка модуля «Магазин» в Diafan CMS

Перейдем к настройкам самой CMS. В административной панели Diafan в разделе модуля «Магазин» есть специфические опции интеграции с 1С. Разберем их подробнее:

Флаг «Обновлять только цены и остатки»: Если этот флаг установлен, Diafan будет игнорировать любые новые товары в XML-пакете. Система будет искать только существующие по GUID позиции и обновлять в них цифровые значения. Для первоначального наполнения или выгрузки новинок этот флаг должен быть снят.

Способ идентификации: В современных версиях Diafan можно переключить сопоставление с внешнего идентификатора на Артикул. Рассмотрим этот вариант, если товары на сайт ранее загружались из Excel и GUID-ы в базе отсутствуют. В этом случае убедитесь, что поле Артикул в 1С строго соответствует полю Артикул на сайте.

Проблемы выгрузки цен и типов цен

Даже если товары успешно синхронизированы, цены могут оставаться нулевыми или не обновляться. Посмотрим на пример тега цены в файле offers.xml:


<Цены>
    <Цена>
        <ИдТипаЦены>3b827e65-2015-11e2-b892-00e04c391503</ИдТипаЦены>
        <ЦенаЗаЕдиницу>1500</ЦенаЗаЕдиницу>
        <Валюта>RUB</Валюта>
    </Цена>
</Цены>

Здесь кроются две типичные ловушки:

  1. Наименование типа цены: В 1С в соглашении или настройках обмена указан конкретный вид цены (например, «Розничная»). На стороне Diafan также должен быть создан тип цены, чье название или внутренний код совпадает с тем, что передает 1С.
  2. Валюта: Если в 1С используется обозначение руб., а в 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 совпадает с точностью до символа. После того как один товар успешно обновит цену, можно переходить к массовой прописке идентификаторов для остальной базы данных.

← На главную