Описание формата обмена через HTTP-сервис

Теоретическая часть

При обращении к HTTP-сервису формируется URL, который выглядит следующим образом:
http://host/base/hs/корневойURL/относительныйURL/?param1=xx&pararm2=yy

http://host/base – обычный URL, по которому выполняется доступ, например, к информационной базе с помощью веб-клиента. При наличии разделителей, не поддерживается указание значений разделителей с помощью параметра Z командной строки запуска клиентского приложения. base - имя базы данных при публикации на Web-сервере.

hs – признак того, что выполняется обращение к HTTP-сервису (в отличие от ws, который определяет доступ к Web-сервису).

корневойURL – имя ресурса, которое определяет группу ресурсов, связанных общим смыслом. Задается в свойстве объекта HTTP-сервис.

относительныйURL – определяет ресурс, к которому будет выполняться обращение. Относительный URL, указанный в запросе, будет использован для определения конкретного ресурса, к которому выполнялось обращение. Правило сопоставления задается в объекте Шаблон URL.

p1=x&p2=y - список параметров запроса.

Документы

Конфигурация «Штрих-М: Торговое предприятие, редакция 5.2» (Далее «ТП5») позволяет получить ограниченный доступ к определенному списку документов. Документы представляются в JSON формате. Список возвращаемых полей и табличных частей описан для каждого документа индивидуально. Для чтения/создания доступны следующие типы документов :

Планирование изменения розничных цен (Чтение)

Перемещение (Чтение)

Приходная накладная (Чтение)

Приходная накладная реализации (Чтение)

Акт о переоценке (Запись)

Акт разногласия (Запись)

Выгрузка из ТСД (Запись)

Корректировка перемещения (Запись)

Потребность склада (Запись)

Описание HTTP запросов

http://host/base – обычный URL, по которому выполняется доступ, например, к информационной базе с помощью веб-клиента. При наличии разделителей, не поддерживается указание значений разделителей с помощью параметра Z командной строки запуска клиентского приложения. base - имя базы данных при публикации на Web-сервере.

hs – признак того, что выполняется обращение к HTTP-сервису (в отличие от ws, который определяет доступ к Web-сервису).

корневойURL – имя ресурса, которое определяет группу ресурсов, связанных общим смыслом. Задается в свойстве объекта HTTP-сервис.

относительныйURL – определяет ресурс, к которому будет выполняться обращение. Относительный URL, указанный в запросе, будет использован для определения конкретного ресурса, к которому выполнялось обращение. Правило сопоставления задается в объекте Шаблон URL.

p1=x&p2=y - список параметров запроса.

Описание запроса поиска SEARCH

Тип запроса - GET
URL запроса - http://host/base/hs/sc5/documents/add?pos=N&doctype={chprices|mgoods|goods|rsgoods}&type={gtin|uid|num|inum}&sdata=some_string
Результат - JSON. Поля JSON - data, errcode, errmsg.

data - содержит полученную информацию. Документ или массив документов, найденных в базе данных.\\
errcode - код ошибки. 0 - нет ошибок, возвращен документ. 1..n - ошибка при выполнении операции поиска, либо ошибка в запросе. -n..-1 - не ошибка. -1 - возвращен массив документов. \\
errmsg - описание ошибки, сообщение системы.\\

Пример корректного запроса:

http://localhost/www/hs/sc5/documents/search?doctype=chprices&pos=1&type=gtin&sdata=PIRC%201dwln9AeWU:1C{Fl6<`Hm

Пример корректного ответа JSON:

{"data": {
"uid": "48f5427a-1fd5-11e5-9149-0019d1af8e62",
"gtin": "PIRC 1dwln9AeWU:1C{Fl6<`Hm",
"num": "\u041c\u041f0000000000001",
"date": "2015-07-01T12:40:36+03:00",
"comment": "",
"store": "\u041c\u041f00002",
"items": [
{
"code": 12,
"attribute": 0,
"unit": 1,
"coefficient": 1,
"oldprice": 20,
"price": 22
},
{
"code": 13,
"attribute": 0,
"unit": 1,
"coefficient": 1,
"oldprice": 20,
"price": 23
}
]
},
"errcode": 0,
"errmsg": ""}

Пример корректного запроса:

http://localhost/www/hs/sc5/documents/search?debug&doctype=chprices&pos=1&type=num&sdata=%D0%9C%D0%9F0000000000001

Пример корректного ответа JSON, с несколькими документами, удовлетворяющими параметрам поиска. В параметре «urlparam» выводятся строка параметров «url» для точного получения документа:

{
"data": [
{
"uid": "48f5427a-1fd5-11e5-9149-0019d1af8e62",
"gtin": "PIRC 1dwln9AeWU:1C{Fl6<`Hm",
"num": "\u041c\u041f0000000000001",
"date": "2015-07-01T12:40:36+03:00",
"comment": "",
"desc": "\u041c\u041f0000000000001(01.07.2015)",
"urlparam": "pos=1&doctype=chprices&type=uid&sdata=48f5427a-1fd5-11e5-9149-0019d1af8e62"
},
{
"uid": "4354f341-20cb-11e5-9149-0019d1af8e62",
"gtin": "PIRC 1dwln9AeWU:1C{Fl6<`Hm",
"num": "\u041c\u041f0000000000001",
"date": "2014-07-02T18:01:41+03:00",
"comment": "",
"desc": "\u041c\u041f0000000000001(02.07.2014)",
"urlparam": "pos=1&doctype=chprices&type=uid&sdata=4354f341-20cb-11e5-9149-0019d1af8e62"
}
],
"errcode": -1,
"errmsg": "\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432!"}

Описание запроса добавления ADD

Тип запроса - POST
http://host/base/hs/sc5/documents/add?pos=N&doctype={chpreport|disreport|dctdoc|mcdoc|sreq}

Пример корректного запроса:

http://localhost/www/hs/sc5/documents/add?debug&doctype=chpreport&pos=1

Тело запроса POST:

{
"odoctype": "chprices",
"ouid": "48f5427a-1fd5-11e5-9149-0019d1af8e62",
"uid": "48f5555a-1fd5-11e5-9149-0019d1af8e62",
"comment": "ТЕСТОВЫЙ ДОКУМЕНТ",
"nsec": 1,
"items": [
{
"code": 12,
"attribute": 0,
"unit": 1,
"coefficient": 1,
"oldprice": 20,
"price": 22
},
{
"code": 13,
"attribute": 0,
"unit": 1,
"coefficient": 1,
"oldprice": 20,
"price": 23
}
]
}

Пример корректного ответа JSON:

{
"data": null,
"errcode": 0,
"errmsg": ""
}

Корректировка перемещения

Тип запроса - POST
http://host/base/hs/sc5/documents/add?pos=N&doctype=mcdoc

Пример корректного запроса:

http://localhost/www/hs/sc5/documents/add?doctype=mcdoc&pos=1

Тело запроса POST:

{
"odoctype": "mgoods",
"ouid": "2ac1326f-a7d0-11dc-aed3-0011d8d4ad08",
"uid": "48f5555a-1fd5-11e5-9149-0019d1af8e62",
"comment": "ТЕСТОВЫЙ ДОКУМЕНТ",
"nsec": 1,
"items":[
{
"code": 13,
"attribute": 0,
"price": 20,
"realq": 30
},
{
"code": 12,
"attribute": 0,
"price": 20,
"realq": 30
},
{
"code": 11,
"attribute": 0,
"price": 20,
"realq": 30
}
]
}

Пример корректного ответа JSON:

{
"data": null,
"errcode": 0,
"errmsg": ""
}

Акт разногласия

Тип запроса - POST
http://host/base/hs/sc5/documents/add?pos=N&doctype=disreport

Пример корректного запроса:

http://localhost/www/hs/sc5/documents/add?doctype=disreport&pos=1

Тело запроса POST:

{
"odoctype": "rgoods",
"ouid": "8c7bd876-a72a-11dc-aed3-0011d8d4ad08",
"uid": "48f5430a-1fd5-11e5-9149-0019d1af8e62",
"comment": "ТЕСТОВЫЙ ДОКУМЕНТ",
"nsec": 1,
"items": [
{
"code": 21,
"attribute": 0,
"price": 200,
"realq": 3
},
{
"code": 20,
"attribute": 0,
"price": 210,
"realq": 5
},
{
"code": 16,
"attribute": 0,
"price": 190,
"realq": 9
},
{
"code": 15,
"attribute": 0,
"price": 230,
"realq": 3
}
]
}

Пример корректного ответа JSON:

{
"data": null,
"errcode": 0,
"errmsg": ""
}

Планирование изменения розничных цен

Примеры URL :
http://host/base/hs/documetns/chprices/?gtin=4792156004600
http://host/base/hs/documetns/chprices/?uuid=6F9619FF-8B86-D011-B42D-00CF4FC964FF
http://host/base/hs/documetns/chprices/?number=12345

documents - Корневой URL

chprices - Относительный URL

Список параметров:

uuid - уникальный идентификатор документа в формате XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, где X - шестнадцатеричное число.

number – номер документа.

gtin – внутренний штрихкод документа.

При указании нескольких параметров (uuid, gtin, number) поиск документа будет осуществлен до первого удовлетворяющего условию документа по приоритету - uuid, gtin, number.

Результат выполнения команды - Строка JSON.

Потребность склада

Примеры URL :
http://host/base/hs/sc5/documents/add?pos=1&doctype=sreq Тип запроса - POST

Пример корректного запроса:

http://localhost/www/hs/sc5/documents/add?pos=1&doctype=sreq

Тело запроса POST:

{
"uid": "48f5555a-1fd5-11e5-9149-0019d1af8e62",
"comment": "ТЕСТОВЫЙ ДОКУМЕНТ",
"nsec": "1",
"items":[
{
"code": 13,
"attribute": 0,
"unit": 1,
"q": 40
},
{
"code": 12,
"attribute": 0,
"unit": 1,
"q": 40
},
{
"code": 11,
"attribute": 0,
"unit": 1,
"q": 40
}
]
}

Пример корректного ответа JSON:

{
"data": null,
"errcode": 0,
"errmsg": ""
}

Приходная накладная

Примеры URL :
http://localhost/www/hs/sc5/documents/search?pos=1&type=gtin&sdata=P om}uTdb1ubJj2b?rrJn< Тип запроса - GET

Пример корректного запроса:

http://localhost/www/hs/sc5/documents/search?pos=1&type=gtin&sdata=P%20om%7DuTdb1ubJj2b%3FrrJn<

Пример корректного ответа JSON:

{
"data": {
"desc": "МП0000000005 (15.01.2013)",
"gtin": "P om}uTdb1ubJj2b?rrJn<",
"storeto": "МП00002",
"doctype": "mgoods",
"comment": "",
"ouid": "8c7bd878-a72a-11dc-aed3-0011d8d4ad08",
"num": "МП0000000005 ",
"date": "2013-01-15T16:02:07+03:00",
"uid": "2ac1326f-a7d0-11dc-aed3-0011d8d4ad08",
"items": [
{
"code": 13,
"attribute": 0,
"unit": 1,
"coefficient": 1,
"price": 20,
"q": 40
},
{
"code": 12,
"attribute": 0,
"unit": 1,
"coefficient": 1,
"price": 20,
"q": 40
},
{
"code": 11,
"attribute": 0,
"unit": 1,
"coefficient": 1,
"price": 20,
"q": 40
}
],
"storefrom": "МП00001"
},
"errcode": 0,
"errmsg": "",
"debug": ""
}

Выгрузка из ТСД

Примеры URL :
http://host/base/hs/sc5/documents/add?pos=1&doctype=dctdoc Тип запроса - POST

Пример корректного запроса:

http://localhost/www/hs/sc5/documents/add?pos=1&doctype=dctdoc

Тело запроса POST:

{
"uid": "48f5555a-1fd5-11e5-9149-0019d1af8e62",
"comment": "ТЕСТОВЫЙ ДОКУМЕНТ",
"nsec": 1,
"purpose": "ТЕКСТ НАЗНАЧЕНИЕ ДО 75 СИМВОЛОВ",
"items":[
{
"code": 13,
"attribute": 0,
"unit": 1,
"price": 20,
"rprice": 20,
"q": 40
},
{
"code": 12,
"attribute": 0,
"unit": 1,
"price": 20,
"rprice": 20,
"q": 40
},
{
"code": 11,
"attribute": 0,
"unit": 1,
"price": 20,
"rprice": 20,
"q": 40
}
]
}

Пример корректного ответа JSON:

{
"data": null,
"errcode": 0,
"errmsg": ""
}

Справочники

Конфигурация «Штрих-М: Торговое предприятие, редакция 5.2» (Далее «ТП5») позволяет получить ограниченный доступ к определенному списку справочников. Справочники представляются в JSON формате. Список возвращаемых полей и табличных частей описан для каждого документа индивидуально. Для чтения доступны следующие типы справочников :

Номенклатура (Чтение)

Описание запроса поиска SEARCH

Тип запроса - GET
URL запроса - http://host/base/hs/sc5/catalogs/search?pos=N&cattype={goods}&type={gtin|uid|code}&sdata=some_string
Результат - JSON. Поля JSON - data, errcode, errmsg.

data - содержит полученную информацию. Документ или массив документов, найденных в базе данных.\\
errcode - код ошибки. 0 - нет ошибок, возвращен документ. 1..n - ошибка при выполнении операции поиска, либо ошибка в запросе. -n..-1 - не ошибка. -1 - возвращен массив документов. \\
errmsg - описание ошибки, сообщение системы.\\

Пример корректного запроса:

http://localhost/www/hs/sc5/catalogs/search?cattype=goods&pos=1&type=gtin&sdata=2100100000110

Пример корректного ответа JSON:

{
"data": {
"gtin": "2100100000110",
"name": "Газ. вода 7UP 0,5 л.",
"desc": "[43]Газ. вода 7UP 0,5 л.",
"uid": "c829e16a-9d8a-11dc-aed3-0011d8d4ad08",
"spr": "43;2100100000110;Газ. вода 7UP 0,5 л.;Газ. вода 7UP 0,5 л.;18.90;31.000;0;0;;0;201;;0;1;0;;1;;0;;;;0;0",
"code": 43
},
"errcode": 0,
"errmsg": ""
}

Отчеты

Запрос всех доступных отчетов

URL запроса

http://host/base/hs/sc5/reports/reports/get?pos={1..N - int}&userid={1..N - int}&version={1.0 - str}//

Пример:

http://host/base/hs/sc5/reports/reports/get?pos=2&userid=2&version=1.0//

Корректный ответ содержит все доступные пользователю отчеты и url для построения отчета.

{"data": [
{
"repid": "43ce8df3-6212-4b7f-9a42-ef5357fa4e06",
"params": [
{
"name": "Период",
"name_en": "period",
"req": false,
"type": "Дата",
"val": null,
"desc": "Период",
"kcamp": "Равно"
}
],
"desc": "ТоварныйОтчет",
"urlparam": "pos=2&userid=2&repid=43ce8df3-6212-4b7f-9a42-ef5357fa4e06&p1=period&p1_kcamp=$p1_kcamp&p1_val=$p1_val"
},
{
"repid": "0e398f35-4c72-4823-997a-86192c52fb9e",
"params": [
{
"name": "НачалоПериода",
"name_en": "speriod",
"req": false,
"type": "Дата",
"val": null,
"desc": "Начало периода",
"kcamp": "Равно"
},
{
"name": "КонецПериода",
"name_en": "fperiod",
"req": false,
"type": "Дата",
"val": null,
"desc": "Конец периода",
"kcamp": "Равно"
}
],
"desc": "РеестрДокументов",
"urlparam": "pos=2&userid=2&repid=0e398f35-4c72-4823-997a-86192c52fb9e&p1=speriod&p1_kcamp=$p1_kcamp&p1_val=$p1_val&p2=fperiod&p2_kcamp=$p2_kcamp&p2_val=$p2_val"
},
{
"repid": "ee2e5827-11d0-4225-bf4e-65ad4836a393",
"params": [
{
"name": "НачалоПериода",
"name_en": "speriod",
"req": false,
"type": "Дата",
"val": null,
"desc": "Начало периода",
"kcamp": "Равно"
},
{
"name": "КонецПериода",
"name_en": "fperiod",
"req": false,
"type": "Дата",
"val": null,
"desc": "Конец периода",
"kcamp": "Равно"
}
],
"desc": "СопроводительныйРеестрДокументов",
"urlparam": "pos=2&userid=2&repid=ee2e5827-11d0-4225-bf4e-65ad4836a393&p1=speriod&p1_kcamp=$p1_kcamp&p1_val=$p1_val&p2=fperiod&p2_kcamp=$p2_kcamp&p2_val=$p2_val"
},
{
"repid": "a8ac523b-4970-4767-b0f4-a71cfc8422e0",
"params": [
{
"name": "ПараметрыДанных.Период",
"name_en": "Period",
"req": false,
"type": "СтандартныйПериод",
"val": null,
"desc": "Период",
"kcamp": "Равно"
},
{
"name": "Отбор.ККМ",
"name_en": "KKM",
"req": false,
"type": "Строка",
"val": null,
"desc": "ККМ",
"kcamp": "Равно,НеРавно,ВИерархии,НеВИерархии,Заполнено,НеЗаполнено"
}
],
"desc": "ДанныеZОтчетов(Предопределённый отчет конфигурации)",
"urlparam": "pos=2&userid=2&repid=a8ac523b-4970-4767-b0f4-a71cfc8422e0&p1=Period&p1_kcamp=$p1_kcamp&p1_val=$p1_val&p2=KKM&p2_kcamp=$p2_kcamp&p2_val=$p2_val"
}
],
"errcode": 0,
"errmsg": "",
"debug": "" }

Запрос отчета

URL запроса

http://host/base/hs/sc5/reports/get?pos={1..N - int}&userid={1..N - int}&version={1.0 - str}&repid={UID - str}&p1={ParamName - str}&p1_kcamp={Key comparison - str}&p1_val={Value - str}&p2...//

Пример:

http://localhost/loc/hs/sc5/reports/get?pos=2&userid=2&repid=03f3351c-1dff-436b-976d-5d8ee169d702&p1=Period&p1_kcamp=Равно&p1_val=2015-09-01T12:09:44+03:00&p2=Nomenklatura&p2_kcamp=Равно&p2_val=11//

Корректный ответ содержит готовый отчет для отображения в строке - Base64(ZIP(MXL)). т.е. для получения файла отчета необходимо полученную строку сохранить Base64Значение -> ZIP архив -> MXL файл.

{
"data": {
"data": "UEsDBBQAAAAIAG6MI0fFTWjTHgMAAOwHAAAOAHkAdjhfNzgzQ18xNC5teGxTRGQA\r\noAAAAAAIACBOg+5jZGBpEGFgYFBhgAAHIGZkAjNZFYCEApDNyArhiwKJI1VHJoZF\r\nf\/yttzEsCaSOiSGBgQUsLcHwn1EeQy8DgwhEnBEiLsQAEdvPKAwX44bqX8kghKJf\r\nEcgGAFVUDQAHr1roVa9a6FWvWuhVjVU7b9RAEA4dipT\/YBnR7UYz6\/V6Nx1CdDxa\r\nWj\/uJCQq2sjSkRQIRQIKJFJAQkFPCDkR3ZHLX1j\/Ev4Cs+vX3TmB83N2PK9vHusn\r\nz54\/fPR46+7WHbr\/zK\/3NUOm2c72fngvZGFIK2SetN\/tr+rIzgJ7bRdBdWh\/24Wd\r\nV2\/smb2yl9W7TURKZxiFZomoSTJOL8nAvaD03oCNY5EUudYci8hwCVnEszzLeGF0\r\npgyM0kJpRtLu8oqO2vQNTBBAaFy5IBRxfDBQ7myXnt1\/ipbirPPwieBcVxM7rd7a\r\nKQG7smfV+4BeC8LrGDM7J9ZBdUhCZ6Gz6cyK2z1GPqj2kxx4PCVzZMqZJ7OT6miv\r\ns4r\/UJqS0iVFdbEXAO6C2RWAcacp\/+P0pDqwP+yimmzi7BuVd0LxnQX2KwV67rIR\r\nhC5XH+yJI07pM0VCPTEjCEcuXSR74XIW0hHY451t++XmFK7Z\/Oyaiu4ZLe1Hr3Lp\r\neu7c2XOYp152GuD9AO18l8y3AGKKeYAZemzAZMnUSmLiAdZbohxkaah5Ur2mpJKG\r\ni76TT1b8qYHWsZf\/aRcDD8kygJpk0Bz8hkd7uDHQHXyGagQiM5JDEmVcJlnB0ygC\r\nbogZR1CksZG+dXXnJRVJjokSXCeZ5hIlTag0gsNIFBAVmRmPdTN0DhrNs86KIudR\r\nrCSXJpU8QxQ8GyUmi7N0bHTuc2DckPR6MBoLI6ThhdRIbnLNTZqnFJlKUUmTqzz2\r\neugyhsIlE306kYZKEETBnIAb48SPGdTJi1iz52C9JWDpzUC3EQ2ftBcS4ZukqVL4\r\nlLZHSmdZF6Jf6tWlWV0irK1xZd3U2Dvi2F+bFLZsMLRnvZWh32yUZLIGExOjpXxO\r\nOhobWsfaUOljY7yJ+nQJiujEujxKROsf6\/YwAMlATXRbv4S4oxGg5+ueRlT9ryIq\r\n693SzYmiyurWcgKwhjeSLHzw6kX60v+3GuNez60aIbmBWiNZt4r\/BXBsy9Iyop7h\r\nK6oTRd0t17goTIIiFp5dm6VOglYCfGDYVqpFxtZD9Dp9UdsREcsBCd38TZZ5cdtQ\r\nUP4FUEsBAhQAFAAAAAgAbowjR8VNaNMeAwAA7AcAAA4AEQAAAAAAAAAgALaBAAAA\r\nAHY4Xzc4M0NfMTQubXhsU0QEAKAAAABVVAUAB69a6FVQSwUGAAAAAAEAAQBNAAAA\r\nwwMAAAAA"
},
"errcode": 0,
"errmsg": "",
"debug": ""
}

Корректный ответ на НЕ корректный запрос

{
"data": null,
"errcode": 3,
"errmsg": "Отчет не найден или не доступен для пользователя! '03f3351c-1daa-436b-976d-5d8ee169d702'",
"debug": ""
}