Протокол обмена данными между системой 1С:Предприятие 8 и 5CMS

Данный открытый протокол разработан компанией «1С».

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

Функционально обмен делится на два блока:

  • выгрузка на сайт торговых предложений – каталогов продукции
  • обмен информацией о заказах

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

В обоих случаях инициатором обмена выступает система «1С:Предприятие». Обмен электронными документами осуществляется в соответствии с правилами и форматами, описанными в стандарте CommerceML 2.

При инициализации взаимодействия устанавливается HTTP соединение. Система «1С:Предприятие» запрашивает у сайта необходимые параметры, такие, как максимальный объем пакета, поддержка сжатия и др.. На основании этих данных система 1С:Предприятие формирует XML сообщения и передает их на сайт.

Выгрузка каталога продукции:

Каталоги для публикации на сайте выгружаются одним пакетом.

а) Начало сеанса

Выгрузка каталога начинается с того, что система «1С:Предприятие» отправляет http-запрос следующего вида:

http://ваш_сайт/fivecms/cml/1c_exchange2.php?type=catalog&mode=checkauth.

В ответ система управления сайтом передает системе «1С:Предприятие» три строки (используется разделитель строк «\n»):
слово «success»;
имя Cookie;
значение Cookie.

Примечание. Все последующие запросы к системе управления сайтом со стороны «1С:Предприятия» содержат в заголовке запроса имя и значение Cookie.

б) Запрос параметров от сайта

Далее следует запрос следующего вида:

http://ваш_сайт/fivecms/cml/1c_exchange2.php?type=catalog&mode=init

В ответ система управления сайтом передает две строки:

1. zip=yes, если сервер поддерживает обмен в zip-формате — в этом случае на следующем шаге файлы должны быть упакованы в zip-формате

или

zip=no — в этом случае на следующем шаге файлы не упаковываются и передаются каждый по отдельности.

2. file_limit=<число>, где <число> — максимально допустимый размер файла в байтах для передачи за один запрос. Если системе «1С:Предприятие» понадобится передать файл большего размера, его следует разделить на фрагменты.

в) Выгрузка на сайт файлов обмена

Затем «1С:Предприятие» запросами с параметрами вида

http://ваш_сайт/fivecms/cml/1c_exchange2.php?type=catalog&mode=file&filename=<имя файла>

выгружает на сайт файлы обмена в формате CommerceML 2, посылая содержимое файла или его части в виде POST.

В случае успешной записи файла система управления сайтом выдает строку «success».

г) Пошаговая загрузка каталога

На последнем шаге по запросу из «1С:Предприятия» производится пошаговая загрузка каталога по запросу с параметрами вида

http://ваш_сайт/fivecms/cml/1c_exchange2.php?type=catalog&mode=import&filename=<имя файла>

Во время загрузки система управления сайтом может отвечать в одном из следующих вариантов.

1. Если в первой строке содержится слово «progress» — это означает необходимость послать тот же запрос еще раз. В этом случае во второй строке будет возвращен текущий статус обработки, объем загруженных данных, статус импорта и т.д.

2. Если в ответ передается строка со словом «success», то это будет означать сообщение об успешном окончании обработки файла.

Примечание. Если в ходе какого-либо запроса произошла ошибка, то в первой строке ответа системы управления сайтом будет содержаться слово «failure», а в следующих строках — описание ошибки, произошедшей в процессе обработки запроса.
Если произошла необрабатываемая ошибка уровня ядра продукта или sql-запроса, то будет возвращен html-код.

Обмен информацией о заказах

Заказы, оформленные на сайте, загружаются в систему «1С:Предприятие».

Последовательность действий при работе с заказом

1. Заказ оформляется на сайте

2. При передаче в систему «1С:Предприятие» в заказе устанавливается категория «Заказ с сайта».

При формировании заказа в системе «1С:Предприятие» записываются номер и дата заказа, с которыми он оформлен на сайте. 

3. Заказ может модифицироваться в системе «1С:Предприятие», при этом его изменения будут выгружаться на сайт

4. Если заказ оплачивается или отгружается в системе «1С:Предприятие», то состояния заказа по оплате и по отгрузке выгружаются на сайт только при полном выполнении операции (полной оплате и полной отгрузке). До этого момента заказ считается не оплаченным и не отгруженным.

5. При попытке в системе «1С:Предприятие» изменить заказ, по которому произведена оплата или отгрузка, заказ на сайт не загрузится как измененный. 

6. Выгрузка заказов на сайт и обратно:

а) Начало сеанса

Выгрузка каталога начинается с того, что система «1С:Предприятие» отправляет http-запрос следующего вида:

http://ваш_сайт/fivecms/cml/1c_exchange2.php?type=sale&mode=checkauth.

В ответ система управления сайтом передает системе «1С:Предприятие» три строки (используется разделитель строк «\n»):
слово «success»;
имя Cookie;
значение Cookie.

Примечание. Все последующие запросы к системе управления сайтом со стороны «1С:Предприятия» содержат в заголовке запроса имя и значение Cookie.

б) Уточнение параметров сеанса

Далее следует запрос следующего вида:

http://ваш_сайт/fivecms/cml/1c_exchange2.php?type=sale&mode=init

В ответ система управления сайтом передает две строки:

1. zip=yes, если сервер поддерживает обмен в zip-формате — в этом случае на следующем шаге файлы должны быть упакованы в zip-формате

или

zip=no — в этом случае на следующем шаге файлы не упаковываются и передаются каждый по отдельности.

2. file_limit=<число>, где <число> — максимально допустимый размер файла в байтах для передачи за один запрос. Если системе «1С:Предприятие» понадобится передать файл большего размера, его следует разделить на фрагменты.

в) Получение файла обмена с сайта

Затем на сайт отправляется запрос вида:

http://ваш_сайт/fivecms/cml/1c_exchange2.php?type=sale&mode=query.

Сайт передает сведения о заказах в формате CommerceML 2. В случае успешного получения и записи заказов «1С:Предприятие» передает на сайт запрос вида:

http://ваш_сайт/fivecms/cml/1c_exchange2.php?type=sale&mode=success

Сайт передает статус заказа в:

ЗначениеРеквизита > Наименование = Статуса заказа ИД
ЗначениеРеквизита > Значение = буквенное обозначение согласно настройкам соответствия статусов заказа в:

Админка > Автоматизация > Обмен данными с 1С

и

ЗначениеРеквизита > Наименование = Статус заказа
ЗначениеРеквизита > Значение = название статуса заказа как в заказе в админке

Если статус заказа на сайте "Принят" или "Выполнен", то в 1С отдается что заказ "проведен":

ЗначениеРеквизита > Наименование = Проведен
ЗначениеРеквизита > Значение = true

Если статус заказа на сайте "Удален", то в 1С отдается что заказ "отменен":

ЗначениеРеквизита > Наименование = Отменен
ЗначениеРеквизита > Значение = true

Если заказ на сайте имеет метку "Оплачен", то в 1С отдается что заказ "оплачен":

ЗначениеРеквизита > Наименование = Заказ оплачен
ЗначениеРеквизита > Значение = true

г) Отправка файла обмена на сайт

Затем система «1С:Предприятие» отправляет на сайт запрос вида

http://ваш_сайт/fivecms/cml/1c_exchange2.php?type=sale&mode=file&filename=<имя файла>,

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

В случае успешной записи файла система управления сайтом передает строку со словом «success». Дополнительно на следующих строчках могут содержаться замечания по загрузке.

Примечание. Если в ходе какого-либо запроса произошла ошибка, то в первой строке ответа системы управления сайтом будет содержаться слово «failure», а в следующих строках — описание ошибки, произошедшей в процессе обработки запроса. Если произошла необрабатываемая ошибка уровня ядра продукта или sql-запроса, то будет возвращен html-код.

Если из 1С в ЗначениеРеквизита приходит:

1) Наименование = 'ПометкаУдаления'  'true'

то на сайте заказу присваивается статус "Удален" и производится возврат списанных со склада товаров обратно

2) Наименование = 'Статуса заказа ИД'  буквенное обозначение статуса заказа

то на сайте заказу присваивается статус, соответствующий настройкам в:

Админка > Автоматизация > Обмен данными с 1С

Если ИД соответствует статусам "Принят" или "Выполнен", то производится списание со склада (если не было произведено ранее)

3) Наименование = 'Номер отгрузки по 1С' или 'Дата отгрузки по 1С'  дата

то на сайте заказу присваивается статус "Выполнен" и производится списание со склада (если не было произведено ранее)

4) Наименование = 'Номер оплаты по 1С' или 'Дата оплаты по 1С'  дата

то на сайте у заказа ставится метка "Оплачен"

5) Наименование = 'Заказ оплачен'  любое значение

то на сайте у заказа ставится метка "Оплачен"

6) Наименование = 'Статус заказа'  'Выполнен'

то на сайте заказу присваивается статус "Выполнен" и производится списание со склада (если не было произведено ранее)

7) Наименование = 'Проведен'  'true'

то производится списание со склада (если не было произведено ранее)

UPD: обновлено 03.04.2025

Еще нет своего сайта? Запустите интернет-магазин на платформе 5CMS - Все для продаж уже внутри!

Рекомендуем прочитать