#Встроенный типовой обмен CommerceML

#Настройка связи (на примере облачной 1С УНФ 1.6)

Настройки могут отличаться от версии и конфигурации. Уточните аналогичные разделы вашей версии 1С в техподдержке 1С.

  1. В 1С перейдите в Настройки - Обмен с сайтом, затем перейдите в Настройки обмена с сайтом.
  1. На первом шаге укажите Ваша CMS Другая, проставьте, что нужно синхронизировать:
  1. В меню Настройки - Обмен данными в PHPShop укажите, что будете загружать. Подробно мы описали в этой инструкции: https://wiki.phpshop.ru/nastroiky/dokumentooborot-crm#commerceml
  2. В меню Настройки - Обмен данными выберите тип авторизации По логину и паролю или По имени файла:

Для этого типа авторизации (Логин и пароль), ядро PHP на вашем хостинге должно работать в режиме модуля Apache. Если на хостинге включен режим СGI, то не получится авторизоваться по логину паролю. Отключите режим CGI или используйте тип авторизации По имени файла.

  • В меню Настройки - Обмен данными, выберите тип авторизации Логин и пароль. Нажмите Сохранить.
  • В 1С нажмите Подключить обмен. В открывшемся помошнике введите данные от админпанели магазина: введите логин и пароль от админпанели магазина.

_Адрес магазина - https://имя_сайта/1cManager/_

Логин - логин администратора магазина

Пароль - пароль администратора магазина

Для авторизации по имени файла у администратора должны быть права доступа по API и сформирован токен. В меню 👤 - Профиль в закладке Права в нижней строке Доступ по API проверьте, что стоят права у Администратора и есть Токен. Если нет прав, проставьте галки и на вкладке Основное нажмите Сгенерировать новый пароль, поставьте Сменить логин и пароль, чтобы создался Токен.

Теперь, после повторного входа, вы увидите Токен:

  • После настроек администратора 👆, зайдите в меню Настройки - Обмен данными, выберите тип авторизации Имя файла. В пустое поле введите любое свое значение, нажмите Сохранить.
  • Перегрузите страницу CTRL+F5.
  • Нажмите на ссылку Имя файла.
  • Вставьте полученную ссылку в 1С в поле Адрес сайта:
  1. Нажмите кнопку Проверить соединение.
  2. Нажмите Далее.
  3. Укажите данные для выгрузки:

Цены - какие цены будут выгружаться на сайт.

Каталоги - можно выбрать отдельные каталоги для выгрузки.

Склады - по умолчанию выгружаются общие остатки. Если складов несколько, поставьте здесь галку.

Нажмите Далее.

  1. Задайте настройки для обмена заказами:

Нажмите Далее.

  1. Укажите расписание обмена:

Нажмите Готово.

#Настройка цен, складов, категорий, характеристик товаров

Эти данные настраиваются в закладке Выгрузка товаров.

  1. Откройте только что созданный обмен и нажмите вкладку Выгрузка товаров. Укажите нужные вам параметры выгрузки данных на сайт:

Если складов несколько, предварительно заведите склады в PHPShop в меню Настройки - Склады и укажите внешний код из 1С в складах.

Внешний код склада можно найти в файле offers.xml. Файл можно выгрузить в окне Обмена, кнопка Инструменты администратора - Выгрузка на сайт - Текст файлов полного обмена. Откроются 2 файла import.xml и offers.xml. Внешние коды складов в файле offers.xml в начале файла.

Пропишите код в поле Внешний код в PHPShop в карточке склада. Для корректного сохранения кода, в правах администратора должны быть проставлены все галки[^3].

Настройка выгрузки с разбиением по складам

нажмите Сохранить.

  1. Нажмите Выполнить полный обмен данными.
  1. Перейдите на сайт и убедитесь, что товары и структура каталогов загрузились 🎉.

Результат выгрузки по складам

#Заказы и статусы

  1. Откройте созданный обмен и нажмите вкладку Обмен заказами. Укажите параметры обмена.
  2. В PHPShop в меню Заказы - статусы заказов создайте статус заказа, в поле Внешний код придумайте код.
  3. Введите код заказа в настройке обмена в 1С в меню Статусы заказов:

4. Нажмите Записать.

  1. Оформите тестовый заказ в магазине:
  1. В настроенном обмене в 1С нажмите кнопку Синхронизация данных - Выполнить обмен - изменения:
  1. Перейдите в меню Продажи - Заказы покупателей. Если заказ не появился, в фильтре вывода данных выберите нужную организацию.
  1. В 1С поменяйте статус заказа, нажмите Записать:

9. В настроенном обмене товарами в 1С нажмите кнопку Синхронизация данных - Выполнить обмен - изменения:

  1. Проверьте, что статус заказа изменился в магазине:

#Службы доставки

  1. Откройте созданный обмен и нажмите вкладку Обмен заказами. Укажите параметры обмена.
  2. В PHPShop в меню Заказы - доставка создайте доставку (или включите нужный модуль доставки, и она появится автоматически), в поле Внешний код придумайте код.
  3. Введите код доставки в настройке обмена в 1С в меню Службы доставки. Если в обмене нет настроек сопоставления доставок, то код доставки можно посмотреть в файле синхронизации статусов заказов: /1cManager/orders/orders.xml
  4. Теперь доставка будет загружена в Заказ с указанной стоимостью.

#Возможные проблемы

#Авторизация

На сайте ядро PHP должно работать в режиме модуля Apache. В режиме CGI/Fast CGI авторизация по протоколу Basic HTTP Authentication не поддерживается, используйте авторизацию в режиме Имя файла.

#Не создаются новые товары

Если используется авторизация по имени файла, то создайте отдельного администратора для обмена данными с правами доступа по API и сгенерированным Токеном.

#Не выгружаются картинки

1C выгружает изображения по каталогам, если в каталоге содержится много товаров (500 и более), то при выгрузке получится очень большой архив с картинками, который может не загрузится или не распаковаться из-за лимитов хостинга.

Для загрузки такого большого объема картинок следует включить режим оптимизированного обмена картинками (если он поддерживается вашей конфигурацией 1С).

В настройках параметров обмена данными в 1С в меню "Расширенные настройки обмена данными в формате CommerсeML2" должна быть поставлена галочка Использовать оптимизированный обмен картинок.

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

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

#Не загружаются заказы

В 1С загружаются заказы, только со статусом, указанным в настройке Обмен данными на сайте. Для загрузки всех заказов в 1С следует выбрать настройку статуса "Не используется".

Для повторной загрузки заказов в 1C следует:

  1. Выделить галочкой нужные заказы в админпанеле сайта
  2. Вызвать меню Редактировать выбранные
  3. Выбрать поле Загружено в CRM
  4. Выбрать значение Выкл и Сохранить

Если заказы не загружаются в 1С или выводится ошибка чтения данных при загрузке в 1С, то следует перенести сайт на рекомендуемые хостинги из первой пятерки, на которых успешна протестирована работа обмена данными c 1C.

#Производительность

Если из 1С выгружается большой объем данных или выбрано много каталогов в фильтре отбора, то транспортный ZIP-файл получается очень большого размера (несколько сот мегабайтов). Для принятия такого файла и его распаковки потребуются повышенные ресурсы хостинга .

Для увеличения ресурсов хостинга следует в корневой файл сайта .htaccess в самое начало добавить строки, позволяющие загружать файлы до 512MB

php_value memory_limit 1024M
php_value upload_max_filesize 536870912

#Настройки обмена 1С

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

Если возникает ошибка привязки даты, номера заказа сайта или ошибка отсутствия типового соглашения по ценам, то следует воспользоваться официальной инструкции по настройке типового обмена.

#Очистка временных файлов

Для предотвращения переполнения временных папок на хостинге для хранения логов 1cManager/log и транспортных файлов 1cManager/sklad создайте новую задачу в модуле Задачи с адресом запускаемого файла 1cManager/clean.php.

Обмен с CommerceML доступен только для версии PHPShop Pro.