Добрый день.
Получаю данные с сайта 4logist.com в 1С 7.7 (7.70.027, нетиповая Бухгалтерия).
По документации:
Авторизация и получение token
Пример получения access_token и refresh_token
http POST {domain}/oauth/v2/token grant_type=password client_id={you_key} client_secret={secret} username={login_in_system} password={password_in_system}
При корректном запросе в ответ придет json
"access_token": "{access_token}",
"expires_in": 3600,
"refresh_token": "{refresh_token}",
"scope": null,
"token_type": "bearer"
Данный этап отрабатывает без проблем:
Процедура ОтправитьЗапросТокена(Сервер)
Соединение = СоздатьОбъект("Msxml2.ServerXMLHTTP.6.0");
Соединение.Open("POST",Сервер+"oauth/v2/token?grant_type=password&client_id="
+СокрЛП(you_key)
+"&client_secret="
+СокрЛП(secret)
+"&username="
+СокрЛП(login_in_system)
+"&password="
+СокрЛП(password_in_system)
);
Соединение.Send();
Ответ = Соединение.ResponseText();
СохранениеОтвета = СоздатьОбъект("Adodb.Stream");
СохранениеОтвета.Type = 2;
СохранениеОтвета.Mode = 3;
СохранениеОтвета.charset="utf-8";
СохранениеОтвета.Open();
СохранениеОтвета.WriteText(Ответ);
СохранениеОтвета.SaveToFile(ФайлТокена,2);
СохранениеОтвета.Close();
КонецПроцедуры
Процедура ОтправитьЗапросЗаказа(СписокТокена, Ресурс, Фильтр, ДопДанные="")
Путь = Ресурс + Фильтр;
СтрокаТокен = "Bearer " + СписокТокена.Получить("access_token");
Соединение = СоздатьОбъект("Msxml2.ServerXMLHTTP");
Соединение.Open("POST", Путь, 0);
//Соединение.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
Соединение.setRequestHeader("Authorization", СтрокаТокен);
Соединение.Send();
Ответ = Соединение.ResponseText();
//Текст = СоздатьОбъект("Текст");
//Текст.ДобавитьСтроку(Ответ);
//Текст.Записать(ФайлОтвета);
СохранениеОтвета = СоздатьОбъект("Adodb.Stream");
СохранениеОтвета.Type = 2;
СохранениеОтвета.Mode = 3;
СохранениеОтвета.charset = "utf-8";
СохранениеОтвета.Open();
СохранениеОтвета.WriteText(Ответ);
СохранениеОтвета.SaveToFile(ФайлОтвета,2);
СохранениеОтвета.Close();
КонецПроцедуры
Так это корректный UTF-8 как и указано в коде )
programm.ist @ Сегодня, 15:01
,
Например простой заменой, вот список символов (код из восьмерки, так что для 77 нужно переделать, но смысл понятен)
СписокСимволов = Новый СписокЗначений;
СписокСимволов.Добавить("\u0430", "а");
СписокСимволов.Добавить("\u0431", "б");
СписокСимволов.Добавить("\u0432", "в");
СписокСимволов.Добавить("\u0433", "г");
СписокСимволов.Добавить("\u0434", "д");
СписокСимволов.Добавить("\u0435", "е");
СписокСимволов.Добавить("\u0451", "ё");
СписокСимволов.Добавить("\u0436", "ж");
СписокСимволов.Добавить("\u0437", "з");
СписокСимволов.Добавить("\u0438", "и");
СписокСимволов.Добавить("\u0439", "й");
СписокСимволов.Добавить("\u043a", "к");
СписокСимволов.Добавить("\u043b", "л");
СписокСимволов.Добавить("\u043c", "м");
СписокСимволов.Добавить("\u043d", "н");
СписокСимволов.Добавить("\u043e", "о");
СписокСимволов.Добавить("\u043f", "п");
СписокСимволов.Добавить("\u0440", "р");
СписокСимволов.Добавить("\u0441", "с");
СписокСимволов.Добавить("\u0442", "т");
СписокСимволов.Добавить("\u0443", "у");
СписокСимволов.Добавить("\u0444", "ф");
СписокСимволов.Добавить("\u0445", "х");
СписокСимволов.Добавить("\u0446", "ц");
СписокСимволов.Добавить("\u0447", "ч");
СписокСимволов.Добавить("\u0448", "ш");
СписокСимволов.Добавить("\u0448", "щ");
СписокСимволов.Добавить("\u044a", "ъ");
СписокСимволов.Добавить("\u044b", "ы");
СписокСимволов.Добавить("\u044c", "ь");
СписокСимволов.Добавить("\u044d", "э");
СписокСимволов.Добавить("\u044e", "ю");
СписокСимволов.Добавить("\u044f", "я");
СписокСимволов.Добавить("\u0410", "А");
СписокСимволов.Добавить("\u0411", "Б");
СписокСимволов.Добавить("\u0412", "В");
СписокСимволов.Добавить("\u0413", "Г");
СписокСимволов.Добавить("\u0414", "Д");
СписокСимволов.Добавить("\u0415", "Е");
СписокСимволов.Добавить("\u0401", "Ё");
СписокСимволов.Добавить("\u0416", "Ж");
СписокСимволов.Добавить("\u0417", "З");
СписокСимволов.Добавить("\u0418", "И");
СписокСимволов.Добавить("\u0419", "Й");
СписокСимволов.Добавить("\u041a", "К");
СписокСимволов.Добавить("\u041b", "Л");
СписокСимволов.Добавить("\u041c", "М");
СписокСимволов.Добавить("\u041d", "Н");
СписокСимволов.Добавить("\u041e", "О");
СписокСимволов.Добавить("\u041f", "П");
СписокСимволов.Добавить("\u0420", "Р");
СписокСимволов.Добавить("\u0421", "С");
СписокСимволов.Добавить("\u0422", "Т");
СписокСимволов.Добавить("\u0423", "У");
СписокСимволов.Добавить("\u0424", "Ф");
СписокСимволов.Добавить("\u0425", "Х");
СписокСимволов.Добавить("\u0426", "Ц");
СписокСимволов.Добавить("\u0427", "Ч");
СписокСимволов.Добавить("\u0428", "Ш");
СписокСимволов.Добавить("\u0428", "Щ");
СписокСимволов.Добавить("\u042a", "Ъ");
СписокСимволов.Добавить("\u042b", "Ы");
СписокСимволов.Добавить("\u042c", "Ь");
СписокСимволов.Добавить("\u042d", "Э");
СписокСимволов.Добавить("\u042e", "Ю");
СписокСимволов.Добавить("\u042f", "Я");
mut @ Вчера, 19:44
,
Спасибо, добавил функцию с заменой.
И тогда сразу следующий вопрос. который также самостоятельно не смог решить.
По документации:
Данный Путь отрабатывает:
/api/orders/list?form_order_api_filter[dateFrom]=19-03-15&form_order_api_filter[dateTo]=19-03-15
Адрес с установленным в интерфейсе фильтром:
/order/list?filter[start_date]=15.03.2019&filter[end_date]=15.03.2019
из кода:
Соединение = СоздатьОбъект("Msxml2.ServerXMLHTTP");
Соединение.Open("POST", Путь, 0);
Соединение.setRequestHeader("Authorization", СтрокаТокен);
Соединение.Send();
programm.ist @ Сегодня, 8:25
,
из этого скрина непонятно, как передавать параметры и из кода непонятно, как они у вас передаются. Возможно просто проблема в синтаксисе запроса.
mut @ Сегодня, 10:30
,
Добрый день.
Постараюсь уточнить, какая информация у меня имеется, к вышеуказанной.
Есть локальная страница HTML с документацией, но не знаю - как её сюда прикрепить
1. Пример кода на PHP, взято из документации:
<?php
class API
{
private $domain = "";
private $access_token = null;
private $refresh_token = null;
public function connect($domain,$client_id,$client_secret,$username,$password)
{
$this->domain = $domain;
$result = json_decode(file_get_contents("http://{$domain}/oauth/v2/token?grant_type=password&client_id={$client_id}&client_secret={$client_secret}&username={$username}&password={$password}"),true);
if(!$result)throw new Exception("Not connect");
$this->access_token = $result["access_token"];
$this->refresh_token = $result["refresh_token"];
}
public function request($apiUrl,$params = "")
{
$curl = curl_init();
if(!empty($params))$params = "?".$params;
curl_setopt_array($curl,
[
CURLOPT_URL => "http://{$this->domain}{$apiUrl}{$params}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER =>
[
"authorization: Bearer {$this->access_token}",
"cache-control: no-cache"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
throw new Exception("cURL Error #:" . $err);
} else {
return json_decode($response,true);
}
}
}
$api = new API();
$api->connect("domain","client_id", "secret","user","password");
$result = $api->request("/api/place/list","place=Москва");
print_r($result);
Соединение = СоздатьОбъект("Msxml2.ServerXMLHTTP");
//// Получение данных о заказах
//Путь = "https://"+Сервер+".4logist.com/api/orders/list";
//// Получение данных о заказах, созданных за 15.03.2019
//Путь = "https://"+Сервер+".4logist.com/api/orders/list?form_order_api_filter[dateFrom]=19-03-15&form_order_api_filter[dateTo]=19-03-15";
////адресная строка в браузере: /order/list?filter[start_date]=15.03.2019&filter[end_date]=15.03.2019
// Получение данных о заказе № 1903228
Путь = "https://"+Сервер+".4logist.com/api/orders/list?form_order_api_filter[invoiceNumber]=1903228";
//// Получение данных о заказах, разгруженных 15.03.2019
//Путь = "https://"+Сервер+".4logist.com/api/orders/list?form_order_api_filter[unloadingDate]=19-03-15"; // не работает!!!
////адресная строка в браузере: /order/list?filter[unloading_date_from]=15.03.2019&filter[unloading_date_to]=15.03.2019
Соединение.Open("POST", Путь, 0);
Соединение.setRequestHeader("Authorization", "Bearer " + СписокТокена.Получить("access_token"));
Соединение.Send();
/api/orders/list
POST /api/orders/list
[b]Documentation[/b]
[i]Получить список заказов [/i]
Filters
Name Information
limit Datatype integer
Pattern max=100
sort Datatype string
Pattern ASC|DESC
Parameters
Parameter Type Required? Format Description
form_order_api_filter object(OrderApiFilterType) true
form_order_api_filter[dateFrom] date false yyyy-MM-dd Дата с
form_order_api_filter[dateTo] date false yyyy-MM-dd Дата до
form_order_api_filter[loadingDate] date false yyyy-MM-dd Дата загрузки
form_order_api_filter[unloadingDate] date false yyyy-MM-dd Дата разгрузки
form_order_api_filter[orderCode] string false Код заказа
form_order_api_filter[clientId] float false Id клиента
form_order_api_filter[orderId] float false Id заказа
form_order_api_filter[dateInvoice] date false yyyy-MM-dd Счет выписан с
form_order_api_filter[dateInvoiceTo] date false yyyy-MM-dd Счет выписан до
form_order_api_filter[invoiceNumber] string false Номер выставленного счета
form_order_api_filter[requestNumber] string false Номер заявки
form_order_api_filter[contractNumber] string false Номер договора
form_order_api_filter[cmrNumber] string false Номер CMR
form_order_api_filter[actNumber] string false Номер акта
form_order_api_filter[dateAct] date false yyyy-MM-dd Дата акта
form_order_api_filter[carNumber] string false Номер авто
form_order_api_filter[trailerNumber] string false Номер прицепа
form_order_api_filter[apiExtranetId] string false Пользовательский id
form_order_api_filter[orderStatus] choice false Статус заказа
form_order_api_filter[company] choice false Компания
Status Codes
Status Code Description
200 Returned when successful
500 Returned when the form has errors
Путь = "https://"+Сервер+".4logist.com/api/orders/list?form_order_api_filter[unloadingDate]=2019-03-15";
Путь = "https://"+Сервер+".4logist.com/api/orders/list?form_order_api_filter[dateFrom]=2019-03-15&form_order_api_filter[dateTo]=2019-03-15";
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua