Как настроить обмен данными между 1С:Розница 2.2 и сайтом на WordPress с плагином WooCommerce?

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

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

Шаг 1. Выбор и анализ плагина интеграции на стороне WordPress

Прежде чем приступать к настройкам внутри 1С, проанализируем архитектуру решения на стороне сайта. Стандартный WooCommerce «из коробки» не умеет обрабатывать пакеты данных в формате CommerceML (стандарт обмена 1С). Для этого на сайте обязательно должен быть установлен плагин-посредник.

Как показывает практика и обсуждения практикующих специалистов, часто используемые «самописные» или малоизвестные бесплатные плагины обмена имеют ограниченный функционал и не поддерживают сложные структуры данных (например, характеристики). Для стабильной работы рекомендуется использовать одно из проверенных решений:

  1. «EDI – Обмен данными между WooCommerce и 1С» (разработчик Александр Левашов) — современный бесплатный плагин в репозитории WordPress, полностью поддерживающий стандарты CML2/CML3, вариативные товары, типы цен и остатки по складам.
  2. «WooCommerce — 1C-Enterprise — Data Exchange» (от команды ITGalaxy) — мощный коммерческий плагин с гибкими настройками маппинга полей, отлично подходящий для нагруженных проектов.
  3. «WooCommerce and 1C:Enterprise/1С:Предприятие Data Exchange» (от Данила Семеленова) — классическое популярное решение, проверенное временем.

Выясним причину сбоев: если в панели администратора WordPress пункт меню интеграции называется нестандартно, а адрес для синхронизации заканчивается на статический файл .php, велика вероятность, что используется устаревший или недоработанный плагин. Переход на популярные решения снимет большинство вопросов по приему данных на стороне сайта.

Шаг 2. Локальная диагностика — выгрузка в XML-файлы

Перед тем как настраивать прямую выгрузку на сайт по протоколу HTTP, крайне важно проверить, какие именно данные формирует сама 1С. Для этого выполним тестовую выгрузку в локальный каталог на диске компьютера.

Разберем по шагам, как это сделать в «1С:Розница 2.2»:

  1. Перейдем в раздел Администрирование — Настройки интеграции — Синхронизация данных (или непосредственно в узел обмена с сайтом).
  2. В настройках узла обмена выберем назначение обмена: «Выгрузка в каталог на диске» вместо «Выгрузка на сайт».
  3. Укажем путь к локальной папке и запустим процесс синхронизации.

После завершения процесса в указанной папке появятся файлы import.xml (содержит структуру групп и описание товаров) и offers.xml (содержит цены, остатки и предложения). Откроем эти файлы в любом текстовом редакторе или браузере и проанализируем их структуру.

Если в файле offers.xml отсутствуют теги <Цены> или <Количество>, то проблема кроется строго в настройках 1С, и сайт здесь ни при чем. Если же данные в XML-файлах присутствуют в полном объеме, но не отображаются на страницах интернет-магазина, проблему необходимо локализовать на стороне плагина WooCommerce.

Шаг 3. Настройка выгрузки цен и остатков в «1С:Розница»

В конфигурации «1С:Розница 2.2» механизмы ценообразования тесно связаны с конкретными магазинами и складами. Если при обмене не выгружаются цены и остатки, выполним следующие настройки:

  1. Проверим правила ценообразования: Перейдем в меню Маркетинг — Правила ценообразования. Создадим или отредактируем существующее правило, где обязательно должен быть заполнен реквизит ВидЦен (например, «Розничная цена сайта»).
  2. Свяжем правило с магазином: Перейдем в карточку нашего Магазина (склада), с которого планируется продажа на сайте. Убедимся, что в поле «Правило ценообразования» выбрано именно то правило, которое мы настроили на предыдущем шаге. Без этой связки система 1С не сможет определить актуальную розничную цену номенклатуры для выгрузки.
  3. Настроим узел обмена в 1С: Откроем созданную настройку обмена с сайтом. На вкладке «Выгрузка товаров» проверим таблицу каталогов. Нажмем кнопку «Настроить отбор» и в появившемся окне обязательно укажем конкретный Магазин (склад) в качестве источника остатков, а также соответствующий тип цен. Если оставить эти поля пустыми, 1С сформирует пустой пакет предложений.

Шаг 4. Настройка характеристик товаров (Вариаций)

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

Выясним, как правильно организовать учет характеристик в «1С:Розница»:

  1. Характеристики не должны быть просто текстовым описанием в наименовании товара. Они должны создаваться как Дополнительные реквизиты внутри конкретного Вида номенклатуры.
  2. Например, создадим вид номенклатуры «Одежда», включим для него использование характеристик и добавим два дополнительных реквизита: «Цвет» и «Размер».
  3. При заполнении карточек номенклатуры характеристики будут создаваться на основе этих реквизитов, что позволит системе присвоить им уникальные идентификаторы (GUID).

При правильной настройке в сформированном XML-файле предложений каждая характеристика получит уникальный составной идентификатор вида ИдТовара#ИдХарактеристики. Посмотрим на пример корректной XML-структуры выгрузки предложения с характеристикой:


<Предложение>
    <Ид>f156b7b5-1234-5678-90ab-cdef12345678#d050b073-1234-5678-90ab-cdef12345678</Ид>
    <Артикул>ART-123-RED-42</Артикул>
    <Наименование>Товар (Красный, 42)</Наименование>
    <Цены>
        <Цена>
            <Представление>1500 RUB за шт</Представление>
            <ИдТипаЦены>a8f12a34-5678-90ab-cdef-1234567890ab</ИдТипаЦены>
            <ЦенаЗаЕдиницу>1500</ЦенаЗаЕдиницу>
        </Цена>
    </Цены>
    <Количество>10</Количество>
</Предложение>

Современные плагины (например, EDI или решение от ITGalaxy) увидят знак решетки # в теге <Ид>, автоматически найдут базовый товар, создадут для него атрибуты «pa_цвет» и «pa_размер» и привяжут данное предложение как вариацию с индивидуальной ценой и остатком.

Шаг 5. Передача дополнительных произвольных полей на сайт

Рассмотрим ситуацию, когда требуется передать на сайт нестандартные параметры товара, например, «Бренд», «Страна-производитель» или физический «Вес». По умолчанию стандартные механизмы обмена могут игнорировать эти поля или выгружать их в общий стек свойств.

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

  1. В 1С перейдем в карточку номенклатуры и добавим новый дополнительный реквизит (например, «Бренд» со значением из справочника).
  2. При выгрузке 1С автоматически поместит эти данные в XML-файл в блок <ЗначенияСвойств>.
  3. На стороне WordPress в настройках плагина интеграции найдем раздел «Сопоставление полей» (Маппинг).
  4. Укажем плагину правило: считывать свойство из XML с наименованием «Бренд» и записывать его значение в атрибут WooCommerce или в произвольное мета-поле (meta_key) записи товара в базе данных WordPress.

Шаг 6. Обход скрытой проблемы с таймаутом в новых релизах 1С

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

Выясним причину этого поведения: в современных механизмах обмена 1С разработчики изменили логику ожидания ответа от веб-сервера. После отправки zip-архива с файлами на сайт, 1С закрывает соединение, не дожидаясь, пока скрипты WordPress распакуют и импортируют данные в базу MySQL. Если сервер хостинга слабый, процесс импорта прерывается на стороне сайта из-за нехватки ресурсов PHP (параметры max_execution_time и memory_limit).

Для решения этой проблемы можно применить следующие подходы:

Таким образом, планомерная настройка ценообразования в 1С, использование проверенных плагинов обмена на стороне WordPress и детальный анализ выгружаемых файлов XML позволят создать надежную и полностью автоматизированную систему синхронизации интернет-магазина.

← На главную