Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 14:20

PHP + OData + 1С

Автор Gestalta, 02 окт 2024, 12:56

0 Пользователей и 1 гость просматривают эту тему.

Gestalta

Добрый день!

Решил с OData опробовать работу.

Написал php-скрипт для получения данных из 1С - работает.
Пробую данные в 1С изменить через php-скрипт, PATCH - не работает!

Скрипт:
<?php
$post_data
=array("Описание"=>"123");
$data_json=json_encode($post_data,JSON_UNESCAPED_UNICODE);

$Opts=array(
'header'=>"Content-type: application/json\r\n".
"Connection: keep-alive\r\n".
"Authorization: Basic ".base64_encode("User:Pass")."\r\n".
"Content-Length: ".strlen($data_json)."\r\n"
);
$URL="http://localhost:8080/base/odata/standard.odata/Catalog_Отметки(guid'16abc8f8-99dd-11ea-2a83-00155d000d00')";
$Filter['$format']="json";
$URL=$URL."?".http_build_query($Filter,"","&",PHP_QUERY_RFC3986);

$curl=curl_init($URL);
curl_setopt($curl,CURLOPT_HTTPHEADER,$Opts);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'PATCH');
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,$data_json);
curl_setopt($curl,CURLOPT_HEADER,true);
$out=curl_exec($curl);
curl_close($curl);

print_r($out);
?>


Возвращает:

HTTP/1.1 500 Internal server error
Date: Wed, 02 Oct 2024 09:31:11 GMT
Server: Apache/2.4.52 (Win64)
DataServiceVersion: 3.0
Content-Length: 151
Connection: close
Content-Type: application/json;charset=utf-8

{
"odata.error": {
"code": "-1",
"message": {
"lang": "ru",
"value": "Непредвиденный символ при чтении JSON"
}
}
}

И что это за непредвиденный символ? Что хочет 1С? Это из-за кодировки? Как-то можно из него выжать больше информации?

В Postman-e всё работает с этими данными!

Заранее спасибо!

Gestalta

Проблема решилась в момент отчаяния.
Оказывается не хватало в заголовке "user-agent: rnd_name"
 <_<

Теги: PHP odata  

Похожие темы (1)

Рейтинг@Mail.ru

Поиск