Протокол обмена данными между системой 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 - Все для продаж уже внутри!

