Техническое описание API

Версия API 2.13

Изменения

2.13

2.12

2.11

2.10

2.9

2.8

2.7

2.6

2.5

2.4

2.3

2.2.

2.1.

1. Основные сведения

domain - домен по которому осуществляется вход в b2b

Обмен данными ведется через протокол HTTP (POST) по принципу JSON-RPC (кроме случаев получения данных из статики). JSON сообщение пересылается в теле HTTP запроса с заголовком "Content-Type: application/json". Методы помеченные как "статика" вызываются получением данных по HTTP по указанному адресу, все остальные работают по принципу JSON-RPC по адресу https://%domain%/api/2.

При общении по JSON-RPC в ответе всегда будет приходить объект

{ ... "commandid": 260767355, "success" : true, "message" : "some message" ... }

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

По техническим вопросам работы с API Вы можете написать в техподержку на api@i-t-p.pro. В теме (заголовке) письма необходимо указать код клиента (можно запросить у Вашего менеджера), ИНН и поставить в копию Вашего менеджера. При отсутствии в теме письма кода клиента или ИНН - письмо рассматриваться не будет

2. Подключение к API

2.1. Аутентификация

Ограничение на кол-во вызовов 10 / мин

Аутентификация происходит на основе логина и пароля. Можно использовать логин пароль одного из Ваших аккаунтов. Для этого необходимо отправить запрос на </api/2>

{ "data": { "login": "ClientLogin", "password": "ClientPassword" }, "request": { "method": "login", "model" : "auth", "module": "quickfox" } }

При успешной аутентификации в ответе получим

{ "session" : "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", "event": "0", "success": true (false если аутентификация не удалась) }

Все последующие запросы к API следует выполнять с указанием сессии в JSON сообщении

{ ... "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE" ... }

А при запросе файлов из статики в Cookie добавлять параметр

session=F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE

В случае ошибки прохождения авторизации на запрос к API в ответе будет success : false и соответсвующиее сообщение, а при запросе файлов статики будет HTTP 404.

3 Получение Каталога

3.1 Дерево категорий

Ограничение на кол-во вызовов 1 / мин

Прайс-лист Адрес </download/catalog/json/catalog_tree_9.json>

Пример ответа

[ ... { "id":91, "leaf":true, "name":"кресла детские автомобильные", "childrens" : [ ... ] }, ... ]

Список категорий обновляется раз в сутки ночью (чаще чем раз в сутки качать этот файл не имеет смысла)

3.2 Список товаров

Ограничение на кол-во вызовов 2 / час

Прайс-лист Адрес </download/catalog/json/products_9.json>

Пример ответа

[ ... { "barcodes":"02803497857632,2803497857632,4680011240549" "category":747, "name":"Ролик захвата обходного лотка (лоток 1) HP LJ P2015/P2014/M2727 MFP (RL1-1525)", "part":"RL1-1525", "multiplicity" : 1, "sku":2881306, "vendor":"Hewlett-Packard", "volume":0.000105, "has_image" : true, "rrp" : 5000, "warranty": "12", в месяцах "weight":0.02 }, ... ]

Список товаров обновляется раз в сутки ночью (чаще чем раз в сутки качать этот файл не имеет смысла).

3.3 Наличие товаров и цены

Ограничение на кол-во вызовов 10 / час

Данный метод возвращает товары только в наличии.

Делаем запрос на </api/2> со след. JSON сообщением

{ "request": { "method": "get_active_products", "model": "client_api", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE" }

При успешном выполнении в ответе будет

{ "data": { "products": [ ... { "price": 58.21, "qty": "***", "nearest_logistic_center_qty": '**', "sku": 1586891, "delivery_days" : 0 } ... ], "total": 119982 }, "message": "read", "success": true }

Получение цены и остатка только по ближайшему складу ( не МСК)

{ "request": { "method": "get_active_products", "model": "client_api", "module": "platform" }, "filter" : [ { "property" : "nearest_logistic_center_only", } ], "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE" }

Получение активных товаров по категории (включая дочерние)

{ "request": { "method": "get_active_products", "model": "client_api", "module": "platform" }, "filter" : [ { "property" : "category", "operator" : '=', "value" : 71 ид категории } ], "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE" }

Получение цены и остатка по конкретному товару

{ "request": { "method": "get_active_products", "model": "client_api", "module": "platform" }, "filter" : [ { "property" : "sku", "operator" : '=', "value" : 1586891 артикул товара } ], "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE" }

Получение цены и остатка по нескольким товарам

{ "request": { "method": "get_active_products", "model": "client_api", "module": "platform" }, "filter" : [ { "property" : "sku", "operator" : 'IN', "value" : [1586891, 1586892,1586893] артикулы товара } ], "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE" }

3.4 Получение изображений по товару

Ограничение на кол-во вызовов 2 / c

Изображения на товары из категории 18+ отдаются без водных знаков. Остальные отдаются с водным знаком.

Делаем запрос на </api/2> со след. JSON сообщением

{ "filter": [ { "operator": "=", "property": "sku", "value": 43950 фильтр по артикулу товара } ], "request": { "method": "read_new", "model": "products_clients_images", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", }

Можно одним запросом получить изображения по нескольким товарам

{ "filter": [ { "operator": "IN", "property": "sku", "value": [43950, 88943 ...] фильтр по артикулам товаров ( не более 100 шт) } ], "request": { "method": "read_new", "model": "products_clients_images", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", }

При успешном выполнении в ответе будет

{ "Full_Time": 36, "commandid": 318125009, "data": { "product_images": [ { "id": 2217386, "sku": 43950, "url": "product_images/with_watermark/472/4335472.jpg", "deleted" : false, "priority" : 100 }, ... ], "total": 3 }, "event": "177", "message": "", "success": true }

Ограничение на кол-во скачиваний фото по ссылкам - 5 / с

3.5 Получение характеристик по товарам 18+

Отдает список всех товаров 18+ с характеристиками

Делаем запрос на </api/2> со след. JSON сообщением

{ "request": { "method": "get_adult_products_characteristics", "model": "client_api", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", }

При успешном выполнении в ответе будет

{ "Full_Time": 20307, "commandid": 318125009, "data": { "adult_products_characteristics": [ { "characteristics": [ { "name": "Описание", "value": "..." }, { "name": "Страна производства", "value": "США, Китай" }, { "name": "Коллекция", "value": "..." }, { "name": "Гарантийный срок", "value": "12 месяцев" }, { "name": "Цвет", "value": "черный" }, { "name": "Материал", "value": "нейлон" }, { "name": "Упаковка", "value": "картонная коробка" }, { "name": "Наименование", "value": "..." } ], "sku": 10524309 }, ... ], "total": 15970 }, "event": "177", "message": "", "success": true }

3.6 Получение списка доступных складов

Делаем запрос на </api/2> со след. JSON сообщением

{ "request": { "module": "platform", "model": "client_api", "method": "get_available_logistic_centers" }, "session": "123" }

При успешном выполнении в ответе будет

{ "Full_Time": 15, "data": { "logistic_centers": [ { "id": 1, "name": "МСК" }, { "id": 2, "name": "Краснодар" } ], "total": 2 }, "success": true, }

4. Работа с заказами

Статусы заказа

Наименование ID статуса
Новый 1
Частично в резерве 15
Нет в наличии 16
В резерве 2
Комплектуется 18
Отгружен 19
Отменен 20

Статусы позиции заказа

Наименование ID статуса
Новый 21
Частично в резерве 23
Нет в наличии 24
В резерве 22
Комплектуется 25
Отгружен 9
Отменен 10

4.1 Чтение списка заказов

Получаем список заказов

Ограничение на кол-во вызовов 20 / мин

Запрос

{ "filter": [ { "operator": "IN", "property": "status", "value": [ 1, 2, 15, 16, 18 ] } ], "pager": { "limit": 60, "start": 0 }, "request": { "method": "read", "model": "orders", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", "sort": [ { "direction": "DESC", "property": "id" } ] }

Ответ

{ "Full_Time": 105, "commandid": 260825759, "data": { "orders": [ { "partner_comment": "", "confirmed": false, "create_date": "2017-07-25T17:08:54", "delivery_date": "2017-07-26", "id": 765889, "partner_logins.name": "some_login", "logistic_center" : 1, "status": 1, "sum": 10 }, { "partner_comment": "", "confirmed": true, "create_date": "2017-07-25T16:35:14", "id": 765786, "partner_logins.name": "some_login", "logistic_center" : 1, "status": 1, "sum": 10, "sum_discount": 10 } ], "total": 2 }, "event": "", "message": "p_read", "success": true }

Получаем конкретный заказ

Ограничение на кол-во вызовов 1 / с

Запрос

{ "filter": [ { "operator": "=", "property": "id", "value": 765786 } ], "pager": { "limit": 60, "start": 0 }, "request": { "method": "read", "model": "orders", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", "sort": [ { "direction": "DESC", "property": "id" } ] }

Ответ

{ "Full_Time": 105, "commandid": 260825775, "data": { "orders": [ { "partner_comment": "", "confirmed": true, "create_date": "2017-07-25T16:35:14", "id": 765786, "partner_logins.name": "SomeLogin", "logistic_center" : 1, "status": 1, "sum": 10, "sum_discount": 10 } ], "total": 1 }, "event": "", "message": "p_read", "success": true }

Фильтрация заказов по дате создания

Ограничение на кол-во вызовов 1 / с

Запрос

{ "filter": [ { "operator": ">", >, <, >=, <=, =, != "property": "create_date", "value": "2021-01-01" YYYY-MM-DD } ], "pager": { "limit": 60, "start": 0 }, "request": { "method": "read", "model": "orders", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", "sort": [ { "direction": "DESC", "property": "id" } ] }

Фильтры можно комбинировать

Запрос

{ "filter": [ { "operator": ">", "property": "create_date", "value": "2021-01-01" },{ "operator": "<", "property": "create_date", "value": "2021-02-01" }, { "operator": "IN", "property": "status", "value": [ 1, 2, 15, 16, 18 ] } ], "pager": { "limit": 60, "start": 0 }, "request": { "method": "read", "model": "orders", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", "sort": [ { "direction": "DESC", "property": "id" } ] }

4.2 Создание

Ограничение на кол-во вызовов 10 / мин

Запрос

{ "request": { "method": "create", "model": "orders", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", "data": [ { "partner_comment": " Комментарий ", "logistic_center" : 1 - указываем ид склада, если не указать заказ будет создан под склад МСК (1) } ] }

Ответ

{ "Full_Time": 50, "commandid": 260767355, "data": { "orders": [ { "partner_comment": " Комментарий ", "create_date": "2017-07-25T17:08:54", "logistic_center" : 1, "id": 123, "status": 1 } ], "total": 1 }, "event": "", "message": "create", "success": true }

4.3 Добавление/Изменение/Удаление товаров

Ограничение на кол-во вызовов 1 / с

Запрос

{ "data": { "doc_id": 2163923, "destroy": [ { "id": 10485199 } ], "update": [ { "wish_price": 1106.92, "wish_price_comment" : "", "qty": 1, "sku": 40798 } ], }, "request": { "method": "client_update", "model": "order_items", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", }

На каждый товарв из массива "update" будет следующая логика обработки :

  1. Если такого артикула нет в заказе, то он будет добавлен
  2. Если артикул уже есть в заказе, то его поля qty,wish_price, wish_price_comment будут обновлены.

В ответе будет массив созданных и измененных товаров ( удаленных не будет)

{ "Full_Time": 76, "commandid": 260786118, "data": { "order_items": [ { "client_rezerv": 0, "cost_delivery": 0, "create_time": "2017-07-25T17:36:40", "discount_percent": 0, "doc_id": 765521, "id": 3744104, "nds_id": 1, "price": 515.63, "price_discount": 515.63, "price_with_delivery" : 515.63, "products.name": "Картридж струйный Cactus CS-C8727 черный для №27 HP DeskJet 3320/3325/3420/3425/3520 (20ml)", "products.part": "CS-C8727", "qty": 1, "sku": 282542, "status": 21, "wish_price": 0, "wish_price_comment": "" } ], "total": 1 }, "event": "", "message": "create", "success": true }

4.4 Получение списка строк по заказу

Ограничение на кол-во вызовов 1 / с

Запрос

{ "filter": [ { "operator": "=", "property": "doc_id", "value": 765521 ////ИД заказа } ], "pager": { "limit": 5000, "start": 0 }, "request": { "method": "read", "model": "order_items", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE", }

Ответ

{ "Full_Time": 48, "commandid": 260850193, "data": { "order_items": [ { "client_rezerv": 0, "create_time": "2017-07-25T17:32:42", "discount_percent": 0, "doc_id": 765521, "id": 3744078, "nds_id": 1, "price": 299.98, "price_discount": 299.98, "products.name": "Сетевой фильтр SVEN Удлинитель Elongator 3G-10m, оранжевый { 1 розетка }", "products.part": "974", "qty": 1, "setId": 0, "sku": 106050, "status": 21, "wish_price": 0, "wish_price_comment": "" }, { "client_rezerv": 1, "create_time": "2017-07-25T17:36:40", "discount_percent": 0, "doc_id": 765521, "id": 3744104, "nds_id": 1, "price": 650.63, "price_discount": 650.63, "products.name": "Картридж струйный Cactus CS-C8727 черный для №27 HP DeskJet 3320/3325/3420/3425/3520 (20ml)", "products.part": "CS-C8727", "qty": 3, "setId": 0, "sku": 282542, "status": 21, "wish_price": 0, "wish_price_comment": "" } ], "total": 2 }, "event": "", "message": "read", "success": true }

4.5 Подписка на отгрузку

Ограничение на кол-во вызовов 1 / с

После успешного подписания заказа на отгрузку изменить заказ нельзя.

Запрос

{ "data": [ { "confirmed": true, "id": 765521 } ], "request": { "method": "update", "model": "orders", "module": "platform" }, "session": "F123123123AAD8776E1B20E87ED26BDD9DFFFFFFFAAAAEEEEE" }

Ответ

{ "Full_Time": 51, "commandid": 260821354, "data": { "orders": [ { "partner_comment": "", "confirmed": true, "create_date": "2017-07-25T16:35:14", "id": 765786, "status": 1, "sum": 0, "sum_discount": 0 } ], "total": 1 }, "event": "", "message": "update", "success": true }

Примеры

Получение каталога на PHP

Для тестов использовались : php7.0, php7.0-curl, php7.0-json

<?php $ch = curl_init("https://%domain%/api/2"); //Аутентификация $dataAuth = array("request" => array( "method" => "login", "model" => "auth" , "module" => "quickfox" ), "data" => array( "login" => "SomeLogin", "password" => "SomePassword" ) ); $dataAuthString = json_encode($dataAuth); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $dataAuthString); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($dataAuthString) )); $result = curl_exec($ch); curl_close ($ch); $resAuth = json_decode($result); if (($resAuth) && ($resAuth->success) && ($resAuth->success == 1)) echo "Auth success. session=" . $resAuth->session; else { echo "Auth Error\n"; print_r($resAuth); die(); } //Запоминаем сессию $session = $resAuth->session; //Получение дерева категорий $ch = curl_init("https://%domain%/download/catalog/json/catalog_tree.json"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Cookie: session=' . $session ) ); $result = curl_exec($ch); curl_close ($ch); $resCatalogTree = json_decode($result); print_r($resCatalogTree); //Список товаров получаем аналогичным образом //Получение всех товаров в наличии их цены $ch = curl_init("https://%domain%/api/2"); $dataAuth = array("request" => array( "method" => "get_active_products", "model" => "client_api", "module" => "platform" ), "session" => $session ); $dataAuthString = json_encode($dataAuth); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $dataAuthString); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Length: ' . strlen($dataAuthString) )); $result = curl_exec($ch); curl_close ($ch); $resProducts = json_decode($result); print_r($resProducts); ?>

Для curl должен быть установлен валидный сертификат либо добавлены настройки

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

Получение каталога в 1С

&НаКлиенте перем ИдентификаторСессии; // // Процедура нажатия кнопки для вызова метода прохождения аутентификации на веб-сервере // &НаКлиенте Процедура ВыполнитьОбработку(Команда) ClientLogin = «Логин»; ClientPasswod = «пароль»; ИдентификаторСессии = ПолучитьАутентификацию("%domain%", "/api/2", ClientLogin, ClientPasswod); Если ИдентификаторСессии = неопределено Тогда #Если Клиент Тогда Сообщить("Невозможно подключиться к %domain%/api/2"); #КонецЕсли возврат; ИначеЕсли ИдентификаторСессии = "" Тогда #Если Клиент Тогда Сообщить("В аутентификации https://%domain%/api/2 отказано"); #КонецЕсли возврат; Иначе #Если Клиент Тогда Сообщить("Сессия аутентифицирована: "+ИдентификаторСессии); #КонецЕсли КонецЕсли; КонецПроцедуры /// //Процедура аутентификации на веб-сервере // &НаСервере Функция ПолучитьАутентификацию(СерверAPI, РесурсAPI, ClientLogin, ClientPasswod) Экспорт ЗапросJSON_Логин = Новый Структура; ЗапросJSON_ = Новый Структура; ЗапросJSON_.Вставить("login", ClientLogin); ЗапросJSON_.Вставить("password", ClientPasswod); ЗапросJSON_Логин.Вставить("data", ЗапросJSON_); ЗапросJSON_ = Новый Структура; ЗапросJSON_.Вставить("method", "login"); ЗапросJSON_.Вставить("model", "auth"); ЗапросJSON_.Вставить("module", "quickfox"); ЗапросJSON_Логин.Вставить("request", ЗапросJSON_); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = ложь; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(,Символы.Таб); ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); ЗаписатьJSON(ЗаписьJSON, ЗапросJSON_Логин); СтрокаJSON = ЗаписьJSON.Закрыть(); Попытка НТТР = Новый HTTPСоединение(СерверAPI); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Content-Type", "application/json; charset=utf-8"); HTTPЗапрос = Новый HTTPЗапрос(РесурсAPI, ЗаголовокHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, , ИспользованиеByteOrderMark.НеИспользовать); Результат = НТТР.ОтправитьДляОбработки(HTTPЗапрос); ОтветJSON = Результат.ПолучитьТелоКакСтроку(); HTTPЗапроc = неопределено; НТТР = неопределено; Исключение ОтветJSON = неопределено; КонецПопытки; Если ОтветJSON = неопределено Тогда Возврат неопределено; КонецЕсли; ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(ОтветJSON); РезультатЗапроса = ПрочитатьJSON(ЧтениеJSON, истина); // истина - получаем тип Соответствие ЧтениеJSON.Закрыть(); Если РезультатЗапроса = неопределено Тогда Возврат неопределено; КонецЕсли; Попытка Если РезультатЗапроса.Получить("success") Тогда session = РезультатЗапроса.Получить("session"); Иначе session = ""; КонецЕсли; Исключение session = ""; КонецПопытки; возврат session; КонецФункции /// //Процедура нажатия кнопки по вызову метода по получению каталога товаров с веб-сервера // &НаКлиенте Процедура ОсновныеДействияФормыПолучитьКаталог(Кнопка) ИдентификаторСессии = Неопределено; Если ИдентификаторСессии = неопределено Тогда ClientLogin = «Логин»; ClientPasswod = «пароль»; ИдентификаторСессии = ПолучитьАутентификацию("%domain%", "/api/2", ClientLogin, ClientPasswod); КонецЕсли; Если ИдентификаторСессии = "" Тогда #Если Клиент Тогда Сообщить("В аутентификации https://%domain%/api/2 отказано"); #КонецЕсли возврат; КонецЕсли; Каталог = ПолучитьКаталог("%domain%", "/download/catalog/json/catalog_tree.json", ИдентификаторСессии); КонецПроцедуры /// //Процедура получения каталогов товаров с веб-сервера (возвращаемый формат данных массив структур) // &НаСервере Функция ПолучитьКаталог(СерверAPI, РесурсAPI, session) Экспорт ЗапросJSON_Логин = Новый Структура; ЗапросJSON_Логин.Вставить("session", session); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = ложь; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(,Символы.Таб); ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); ЗаписатьJSON(ЗаписьJSON, ЗапросJSON_Логин); СтрокаJSON = ЗаписьJSON.Закрыть(); Попытка НТТР = Новый HTTPСоединение(СерверAPI); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Cookie", "session="+СокрЛП(session)+""); HTTPЗапрос = Новый HTTPЗапрос(РесурсAPI, ЗаголовокHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, , ИспользованиеByteOrderMark.НеИспользовать); ИмяВыходногоФайла = ПолучитьИмяВременногоФайла("txt"); НТТР.Получить(HTTPЗапрос, ИмяВыходногоФайла); //GET HTTPЗапроc = неопределено; НТТР = неопределено; ОтветJSON = истина Исключение ОтветJSON = ложь КонецПопытки; Если НЕ ОтветJSON Тогда Возврат неопределено; КонецЕсли; ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.ОткрытьФайл(ИмяВыходногоФайла); Попытка РезультатЗапроса = ПрочитатьJSON(ЧтениеJSON); ЧтениеJSON.Закрыть(); УдалитьФайлы(ИмяВыходногоФайла); Исключение СтрокаJSON = ЧтениеJSON.Закрыть(); #Если Клиент Тогда Сообщить("Ошибка получения в файле JSON: "+ИмяВыходногоФайла + " " + ОписаниеОшибки()); #КонецЕсли КонецПопытки; Если РезультатЗапроса = неопределено Тогда Возврат неопределено; КонецЕсли; возврат РезультатЗапроса; КонецФункции /// //Процедура нажатия кнопки по вызову метода получения цен и товаров с веб-сервера // &НаКлиенте Процедура ОсновныеДействияФормыПолучитьЦеныПоТоварам(Команда) ИдентификаторСессии = Неопределено; Если ИдентификаторСессии = неопределено Тогда ClientLogin = «Логин»; ClientPasswod = «пароль»; ИдентификаторСессии = ПолучитьАутентификацию("%domain%", "/api/2", ClientLogin, ClientPasswod); КонецЕсли; Если ИдентификаторСессии = "" Тогда #Если Клиент Тогда Сообщить("В аутентификации https://%domain%/api/2 отказано"); #КонецЕсли возврат; КонецЕсли; ТоварыЦены = ПолучитьТоварыИЦены("%domain%", "/api/2", ИдентификаторСессии); КонецПроцедуры /// //Процедура получения информации по товарам и ценам с веб-сервера (возвращаемый формат данных массив структур) // &НаСервере Функция ПолучитьТоварыИЦены(СерверAPI, РесурсAPI, session) ЗапросJSON_Логин = Новый Структура; ЗапросJSON_СтруктураПараметров = новый Структура; ЗапросJSON_СтруктураПараметров.Вставить("method","get_active_products"); ЗапросJSON_СтруктураПараметров.Вставить("model","client_api"); ЗапросJSON_СтруктураПараметров.Вставить("module","platform"); ЗапросJSON_Логин.Вставить("request" , ЗапросJSON_СтруктураПараметров); ЗапросJSON_Логин.Вставить("session", session); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = ложь; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(,Символы.Таб); ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); ЗаписатьJSON(ЗаписьJSON, ЗапросJSON_Логин); СтрокаJSON = ЗаписьJSON.Закрыть(); Попытка НТТР = Новый HTTPСоединение(СерверAPI); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Cookie", "session="+СокрЛП(session)+""); HTTPЗапрос = Новый HTTPЗапрос(РесурсAPI, ЗаголовокHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, , ИспользованиеByteOrderMark.НеИспользовать); ИмяВыходногоФайла = ПолучитьИмяВременногоФайла("txt"); НТТР.ОтправитьДляОбработки(HTTPЗапрос, ИмяВыходногоФайла); HTTPЗапроc = неопределено; НТТР = неопределено; ОтветJSON = истина Исключение ОтветJSON = ложь КонецПопытки; Если НЕ ОтветJSON Тогда Возврат неопределено; КонецЕсли; ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.ОткрытьФайл(ИмяВыходногоФайла); Попытка МассивРезультат = ПрочитатьJSON(ЧтениеJSON); ЧтениеJSON.Закрыть(); УдалитьФайлы(ИмяВыходногоФайла); Исключение СтрокаJSON = ЧтениеJSON.Закрыть(); #Если Клиент Тогда Сообщить("Ошибка получения в файле JSON: "+ИмяВыходногоФайла + " " + ОписаниеОшибки()); #КонецЕсли КонецПопытки; Если МассивРезультат = неопределено Тогда Возврат неопределено; КонецЕсли; Возврат МассивРезультат; КонецФункции

Обработки 1С для получение каталога и товаров