1C + JSON + API в 1с 7.7

1. user602990_lvv 15.03.19 13:05 Сейчас в теме
Здравствуйте.

Подскажите, кто знает, как правильно написать.

Необходимо написать обмен с CRM https://app.salesap.ru/api
Например:

Скрытый текст


В 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"}]}

Где ошибка?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
18. user602990_lvv 15.03.19 18:39 Сейчас в теме
(1)
Надо писать только

Параметры = "{""data"":{""type"":""deal-stages"",""attributes"":{""name"":""API 1234""},""relationships"":{""deal-stage-category"":{""data"":{""type"":""deal-stage-categories"",""id"":1}}}}"

Были лишние данные
2. ranis888 101 15.03.19 14:14 Сейчас в теме
EOF
{
"data":{
"type":"deal-stages",
"attributes":{
"name":"API 1234"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 1
}
}
}
}
}
EOF
Показать


Вот тут у тебя ошибка если не ошибаюсь
3. ranis888 101 15.03.19 14:16 Сейчас в теме
Тебе нужно вот это сделать:
{
"data":{
"type":"deal-stages",
"attributes":{
"name":"API 1234"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 1
}
4. ranis888 101 15.03.19 14:20 Сейчас в теме
5. ranis888 101 15.03.19 14:21 Сейчас в теме
ХТТПЗапрос.setRequestHeader("Authorization","Bearer " + ThisIsToken);
8. user602990_lvv 15.03.19 14:38 Сейчас в теме
(5) это указано
Токен = "Bearer " + ThisIsToken;
16. ranis888 101 15.03.19 15:35 Сейчас в теме
(8) Покажи как у тебя это указано
6. ranis888 101 15.03.19 14:23 Сейчас в теме
Кавычки в 7.7 я собирал так
Код
   Кав= """";  
ПараметрыPOST= "{"+кав+"phone"+кав+":"+"79999999999"+"," +кав+"body"+кав+":"+кав+"Спасибо за покупку!"+кав+"}";
Показать полностью
7. user602990_lvv 15.03.19 14:37 Сейчас в теме
(6) Не помогло, то-же самое
9. ranis888 101 15.03.19 15:04 Сейчас в теме
(7) Покажи свой конечный
Параметры =
в окладке
10. user602990_lvv 15.03.19 15:11 Сейчас в теме
(9)
Параметры = "@- << EOF {"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stages"+Кав+","+Кав+"attributes"+Кав+":{"+Кав+"name"+Кав+":"+Кав+"API 1234"+Кав+"},"+Кав+"relationships"+Кав+":{"+Кав+"deal-stage-category"+Кав+":{"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stage-categories"+Кав+","+Кав+"id"+Кав+":1}}}}EOF";
12. ranis888 101 15.03.19 15:20 Сейчас в теме
(10) Повторю еще раз EOF Тебе тут не нужен. Тебе нужно передать это

 {"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stages"+Кав+","+Кав+"attributes"+Кав+":{"+Кав+"name"+Кав+":"+Кав+"API 1234"+Кав+"},"+Кав+"relationships"+Кав+":{"+Кав+"deal-stage-category"+Кав+":{"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stage-categories"+Кав+","+Кав+"id"+Кав+":1}}
11. user602990_lvv 15.03.19 15:17 Сейчас в теме
15. ranis888 101 15.03.19 15:30 Сейчас в теме
17. user602990_lvv 15.03.19 17:43 Сейчас в теме
13. ranis888 101 15.03.19 15:24 Сейчас в теме
Попробуй поиграть с этим сайтом https://apitester.com/
сможешь протестировать запрос
14. ranis888 101 15.03.19 15:27 Сейчас в теме
{"errors":[{"title":"Unauthorized","detail":"The access token is invalid","code":401,"status":"401"}]} вот например токен не верный
19. VladimirB 16 15.03.19 20:11 Сейчас в теме
Можно улучшить читаемость запросов
такую строку 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С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)