1С:Предприятие 8
Система программ

Протокол обмена с сайтом

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

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

Функционально обмен делится на два блока:
  • выгрузка на сайт торговых предложений (каталогов продукции), данных об остатках на складах (с разбивкой и сводно), данных только о ценах и остатках (без описания номенклатуры);
  • обмен информацией о заказах.

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

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

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

Выгрузка на сайт

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

A. Начало сеанса

Выгрузка данных начинается с того, что система «1С: Предприятие» отправляет http-запрос следующего вида: 
http://<сайт>/<путь> /1c_exchange.php? type=catalog& mode=checkauth.

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

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

B. Запрос параметров от сайта

Далее следует запрос следующего вида: 
http://<сайт>/<путь> /1c_exchange.php? type=catalog& mode=init

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

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

Затем «1С: Предприятие» запросами с параметрами вида 
http://<сайт>/<путь> /1c_exchange.php? type=catalog& mode=file& filename=<имя файла> 
выгружает на сайт файлы обмена в формате CommerceML 2, посылая содержимое файла или его части в виде POST.

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

D. Пошаговая загрузка данных

На последнем шаге по запросу из «1С: Предприятия» производится пошаговая загрузка данных по запросу с параметрами вида http://<сайт>/<путь> /1c_exchange.php? type=catalog& mode=import& filename=<имя файла>

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

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

Примеры файлов выгрузки

Сведения о товарах в формате XML.

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

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

Последовательность действий при работе с заказом:
  1. Заказ оформляется на сайте
  2. При передаче в систему «1С: Предприятие» в заказе устанавливается категория «Заказ с сайта».
    При формировании заказа в системе «1С: Предприятие» записываются номер и дата заказа, с которыми он оформлен на сайте. Поиск контрагента осуществляется по ИНН или наименованию, в зависимости от указанных настроек.
  3. При загрузке заказа производится поиск договора с контрагентом. Договор ищется среди существующих договоров с клиентом, с признаком ведения взаиморасчетов по заказам (по указанной в настройках загрузки Организации). Если не находится ни один договор, то создается новый.
  4. При загрузке заказа загружаются все его свойства, переданные с сайта. Свойства ищутся в системе «1С: Предприятие» по наименованию. Если с таким наименованием свойства нет, то заводится новое свойство со значениями типа строка или число.
  5. Заказ может модифицироваться в системе «1С: Предприятие», при этом его изменения будут выгружаться на сайт
  6. Если заказ оплачивается или отгружается в системе «1С: Предприятие», то состояния заказа по оплате и по отгрузке выгружаются на сайт только при полном выполнении операции (полной оплате и полной отгрузке). До этого момента заказ считается не оплаченным и не отгруженным.
  7. При попытке в системе «1С: Предприятие» изменить заказ, по которому произведена оплата или отгрузка, заказ на сайт не загрузится как измененный. При этом пользователь получит об этом сообщение.
  8. После каждой выгрузка заказа на сайт, на стороне сайта определяются значения его категорий (ссылка на категории). Эти значения устанавливаются в системе  «1С: Предприятие» так, как они присвоены заказу на сайте

A. Начало сеанса

Выгрузка данных начинается с того, что система «1С: Предприятие» отправляет http-запрос следующего вида: 
http://<сайт>/<путь> /1c_exchange.php? type=sale& mode=checkauth.

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

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

B. Уточнение параметров сеанса

Далее следует запрос следующего вида: 
http://<сайт>/<путь> /1c_exchange.php? type=sale& mode=init

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

C. Получение файла обмена с сайта

Затем на сайт отправляется запрос вида
http://<сайт>/<путь> /1c_exchange.php? type=sale& mode=query.

Сайт передает сведения о заказах в формате CommerceML 2. В случае успешного получения и записи заказов «1С: Предприятие» передает на сайт запрос вида 
http://<сайт>/<путь> /1c_exchange.php? type=sale& mode=success

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

Затем система «1С: Предприятие» отправляет на сайт запрос вида 
http://<сайт>/<путь> /1c_exchange.php? type=sale& mode=file& filename=<имя файла>,  
который загружает на сервер файл обмена, посылая содержимое файла в виде POST.

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

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

Примеры файлов обмена информацией

Заказ на сайт в формате XML
Заказ с сайта в формате XML

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