1C + JSON + API в 1с 7.7
Здравствуйте.
Подскажите, кто знает, как правильно написать.
Необходимо написать обмен с CRMhttps://app.salesap.ru/api
Например:
В 1с пишу:
Приходит ошибка:
{"errors":[{"title":"Bad Request","detail":"Empty input () at line 1, column 1 [parse.c:978] in '@- \u003c\u003c EOF {\"data\":{\"type\":\"deal-stages\",\"attributes\":{\"name\":\"API 1234\"},\"relationships\":{\"deal-stage-category\":{\"data\":{\"type\":\"deal-stage-categories\",\"id\":1}}}}EOF","code":"400","status":"400"}]}
Где ошибка?
Подскажите, кто знает, как правильно написать.
Необходимо написать обмен с CRM
Например:
Скрытый текст |
---|
curl "https://app.salesap.ru/api/v1/deal-stages" \
-X POST \ -H "Content-Type: application/vnd.api+json" \ -H "Authorization: Bearer api_token" \ -d @- << EOF { "data":{ "type":"deal-stages", "attributes":{ "name":"API 1234" }, "relationships":{ "deal-stage-category": { "data": { "type": "deal-stage-categories", "id": 1 } } } } } EOF |
В 1с пишу:
Соединение = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
Соединение.Open("POST", "https://app.salesap.ru/api/v1/deal-stages", 0);
Соединение.setRequestHeader("Content-Type","application/vnd.api+json");
Соединение.setRequestHeader("Authorization", api_token);
Параметры = "@- << EOF {""data"":{""type"":""deal-stages"",""attributes"":{""name"":""API 1234""},""relationships"":{""deal-stage-category"":{""data"":{""type"":""deal-stage-categories"",""id"":1}}}}EOF"
Соединение.Send(СокрЛП(Параметры));
Рез = Соединение.ResponseText();
ПоказатьПриходит ошибка:
{"errors":[{"title":"Bad Request","detail":"Empty input () at line 1, column 1 [parse.c:978] in '@- \u003c\u003c EOF {\"data\":{\"type\":\"deal-stages\",\"attributes\":{\"name\":\"API 1234\"},\"relationships\":{\"deal-stage-category\":{\"data\":{\"type\":\"deal-stage-categories\",\"id\":1}}}}EOF","code":"400","status":"400"}]}
Где ошибка?
По теме из базы знаний
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
EOF
{
"data":{
"type":"deal-stages",
"attributes":{
"name":"API 1234"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 1
}
}
}
}
}
EOF
Показать{
"data":{
"type":"deal-stages",
"attributes":{
"name":"API 1234"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 1
}
}
}
}
}
EOF
Вот тут у тебя ошибка если не ошибаюсь
(9)
Параметры = "@- << EOF {"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stages"+Кав+","+Кав+"attributes"+Кав+":{"+Кав+"name"+Кав+":"+Кав+"API 1234"+Кав+"},"+Кав+"relationships"+Кав+":{"+Кав+"deal-stage-category"+Кав+":{"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stage-categories"+Кав+","+Кав+"id"+Кав+":1}}}}EOF";
Параметры = "@- << EOF {"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stages"+Кав+","+Кав+"attributes"+Кав+":{"+Кав+"name"+Кав+":"+Кав+"API 1234"+Кав+"},"+Кав+"relationships"+Кав+":{"+Кав+"deal-stage-category"+Кав+":{"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stage-categories"+Кав+","+Кав+"id"+Кав+":1}}}}EOF";
(10) Повторю еще раз EOF Тебе тут не нужен. Тебе нужно передать это
{"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stages"+Кав+","+Кав+"attributes"+Кав+":{"+Кав+"name"+Кав+":"+Кав+"API 1234"+Кав+"},"+Кав+"relationships"+Кав+":{"+Кав+"deal-stage-category"+Кав+":{"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stage-categories"+Кав+","+Кав+"id"+Кав+":1}}
Можно улучшить читаемость запросов
такую строку json труднее воспринимать
Я работаю так:
создаю таблицу называю ее допустим "ЗапросыHTTP" в ней создаю секцию "deal-stages" на одну строку
в ячейку (1,1) этой секции макета помещаю весь текст запроса в виде
использую функцию для доступа к секции макета:
Читаемость в этом случае лучше. И корректировать запрос в случае ошибки проще. И ковычки собирать не нужно
такую строку json труднее воспринимать
Параметры = "{""data"":{""type"":""deal-stages"",""attributes"":{""name"":""API 1234""},""relationships"":{""deal-stage-category"":{""data"":{""type"":""deal-stage-categories"",""id"":1}}}}"
Я работаю так:
создаю таблицу называю ее допустим "ЗапросыHTTP" в ней создаю секцию "deal-stages" на одну строку
в ячейку (1,1) этой секции макета помещаю весь текст запроса в виде
{
"data":{
"type":"deal-stages",
"attributes":{
"name":"&name&"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 1
}
}
}
}
}
Показатьиспользую функцию для доступа к секции макета:
Функция ПолучитьМакетТелаЗапроса(_ИмяЗапроса) //Имя запроса в нашем случае "deal-stages"
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ЗапросыHTTP");
Таб.ВывестиСекцию(_ИмяЗапроса);
Возврат Таб.Область(1,1).Текст;
КонецФункции
Процедура МояПроцедура()
Макет_DealStage=ПолучитьМакетТелаЗапроса("deal-stages");
Макет_DealStage=стрЗаменить(Макет_DealStage,"&name&","Этап из API");
..........
КонецПроцедуры
ПоказатьЧитаемость в этом случае лучше. И корректировать запрос в случае ошибки проще. И ковычки собирать не нужно
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)