|
Post запрос к 1C REST | ☑ | ||
---|---|---|---|---|
0
goshulina
22.06.18
✎
09:35
|
Добрый день!
Прошу помощи сформировать правильный ПОСТ запрос и понять как они вообще делаются. Пример кода на python 1С:Предприятие 8.3 (8.3.11.3034) Тонкий клиент (SCloud решение) Бухгалтерия предприятия, редакция 3.0 (3.0.57.17) Не могу сделать запись POST методом к опубликованному REST интерфейсу в 1С. В частности не понимаю как правильно сформировать POST запрос на добавление записи в сущность Document_ (пробовал отправлять в формате json). При полной выгрузке метадаты там много полей. Есть поля с 16ти битными ключами (guid). Я думал их надо просто генерировать. Но непонятно как сформированы записи в самой 1С. При полной выгрузке метадаты записи сформированы в теге entry и в отличии от уникальности каждой entry (отличается например параметр суммы), guid ключи повторяются от записи к записи. То есть есть несколько разных записей под entry о прошедших операциях, а ключи guid (для них тут разные параметры: Ref_Key, ДокументОснование и т д.) встречаются одни и те же у разных entry. Возможно есть какая то более подробная документация как формировать post запрос? Доустпная 7ми дневная документация не помогает в этом https://its.1c.ru/db/v8312doc#bookmark:dev:TI000001373 Какие то обязательные поля при создании записи через REST в теле запроса? Пример запроса: address = 'https://login:password@db_adress/odata/standard.odata/Document_СчетФактураПолученный/' Ref_Key = uuid.uuid1() # 16ти битный ключ случайно сгенерирован data = { "Ref_Key": str(Ref_Key), "DeletionMark": False, "IsFolder": False, "Организация_Key": "cbb38rr1-01c0-11r1-80c4-0dd47ab21cf7", "ВидСчетаФактуры": "НаПоступление", "Контрагент_Key": str(uuid.uuid1()), "ДоговорКонтрагента_Key": str(uuid.uuid1()), "НомерВходящегоДокумента": 12345678900000, "ДатаВходящегоДокумента": "2018-06-11T00:00:00", "Исправление": False, "СуммаДокумента": 5204.98, "СуммаНДСДокумента": 793.98, "Комментарий": "тестирование" } headers = { "Accept": "application/json", "Accept-Charset": "UTF-8", "User-Agent": "Fiddler", "Content-Type": "application/json", "Content-Length": "1234" } r = requests.post(address, data=data, headers=headers) r.content.decode('utf-8') Примеры ошибок '{\r\n"odata.error": {\r\n"code": "-1",\r\n"message": {\r\n"lang": "ru",\r\n"value": "Непредвиденный символ при чтении JSON"\r\n}\r\n}\r\n}' иногда приходила такая ошибка: Ошибка разбора XML: - [1,1] Помогите :( |
|||
1
1Снег
22.06.18
✎
09:39
|
||||
2
Cyberhawk
22.06.18
✎
09:45
|
//обновление документа через ПАТЧ-запрос
ТипМетаданных = "Document"; ОбъектМетаданных = "РегистрацияШтрафа"; АдресРесурса = "/" + ИмяОпубликованнойБазы + "/odata/standard.odata/" + ТипМетаданных + "_" + ОбъектМетаданных + "(guid'" + ГУИД + "')" + "?$format=json" + ";odata=nometadata" ; ЗапросПАТЧ = Новый HTTPЗапрос; ЗапросПАТЧ.АдресРесурса = АдресРесурса; ЗапросПАТЧ.Заголовки.Вставить("1C_OData-DataLoadMode", "true"); //ЗапросПАТЧ.Заголовки.Вставить("Accept", "application/json"); ТелоЗапросаПАТЧ = "{ //| ""odata.metadata"": ""http://" + СерверИПорт + "/" + ИмяОпубликованнойБазы + "/odata/standard.odata/$metadata#" + ТипМетаданных + "_" + ОбъектМетаданных + "/@Element"", | ""НомерВходящегоДокумента"": ""%НомерВходящегоДокумента"" | , | ""ДатаВходящегоДокумента"": ""%ДатаВходящегоДокумента"" |}"; ТелоЗапросаПАТЧ = СтрЗаменить(ТелоЗапросаПАТЧ, "%НомерВходящегоДокумента", НомерВходящегоДокумента); ТелоЗапросаПАТЧ = СтрЗаменить(ТелоЗапросаПАТЧ, "%ДатаВходящегоДокумента", Формат(ДатаВходящегоДокумента, "ДФ=yyyy-MM-dd")); ЗапросПАТЧ.УстановитьТелоИзСтроки(ТелоЗапросаПАТЧ);//, , ИспользованиеByteOrderMark.НеИспользовать); Ответ = Соединение.Изменить(ЗапросПАТЧ); |
|||
3
goshulina
27.06.18
✎
10:01
|
(1) Спасибо
(2) Спасибо чуваки) Заработало) Кеш только пришлось почистить. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |