POST-запрос form-urlencoded при изменении заказа в ABCP
Столкнулся с проблемой при изменении заказа из 1С на сайт под управлением ABCP.
В API метод POST для изменения заказа был описан странно:


Меня смутили именно параметры POST. Я пробовал сначала вообще передавать JSON, но получал ошибку, причем странным образом закодированную:

Мне пришлось расшифровывать ее специальным декодером. Было забавно, я сперва думал, что это я не указал какие-то параметры, когда передавал текст в декодер, хотя сам декодер лишь буквально расшифровывал мою ошибку. Потупил на этом минут 5.
Постепенно до меня дошло, что нужно передавать параметры в адресную строку. Через адресную строку работало, но ведь заказ может быть большим и не влезет в адресную строку, поэтому и используется POST, а не GET.
К счастью, я нашел пример кода для работы с другой командой и там выявил ключевую свою ошибку, нужно в заголовки вставлять:
Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded")
Сам текст запроса я установил подобным образом (для простоты восприятия добавил переводы строки):
userlogin=*******&
userpsw=*******&
order[positions][1][statusCode]=25544&
order[positions][1][id]=4033372&
order[positions][0][id]=40333349&
order[positions][0][statusCode]=25544
&order[number]=12345
После этого POST-запрос заработал и я получил желаемые изменения в статусе заказа.
Да, отмечу один нюанс ABCP, нужно указывать ID строки, если есть желание изменять строку. Иначе она пытается добавлять строку и ругается, что не заполнен brand в строке.

Объем: 2 час Среда: APCB API.
