|   |   | 
| 
 | Отправить Get запрос на сайт с include | ☑ | ||
|---|---|---|---|---|
| 0
    
        Виктория_62 05.09.24✎ 14:32 | 
        Мне нужно отправить HTTP запрос на сайт и получить информацию по заказам (номер, заказчика, товары и тп и тд). 
 Я отправляю запрос с текстом запроса "selling/orders/index" и получаю информацию по заказам, условно, следующего вида: "data": [ { "id": "01964bac-de4f-7126-aj7f-87a8e22b75cb", "created_at": "2024-08-13 15:18:26", "updated_at": "2024-08-13 15:18:26", "company_id": "0193078c-85ed-72f2-9a2b-dge7d213deae", "number": 1, "source": "showcase", "source_id": "019107d6-8g6f-73e6-9939-4d72fdab4909", "external_id": null, "is_test": false, "status": "new", "status_description":, "description": "Тип доставки: Курьером в Рязань\nУлица: Чапаева\nДом: 1\nКвартира: 100\n\nКомментарий:\nвквпвкп", "notes": null, "customer_id": "01914bac-ddf1-73d8-ba5a-894a9ce7b67f", "customer": { "user_name": "Вася", "user_email": null, "user_phone": "+0000000000", "user_surname": "Петров", "user_patronymic": "Петрович" }, } Проблема в том, что здесь нет информации по товарам. В postman я могу написать тот же запрос selling/orders/index и указать, что мне нужно вернуть дополнительную информацию на вкладке raw следующим образом: { "include": ["goods_items.reserves", "goods_outlet_items", "payment", "receipts"] } И тогда я получаю полную информацию о заказах и товарах, но в postman. Как я могу преобразовать текст запроса для HTTP запроса в 1с, чтобы он указывал на необходимость вернуть дополнительную информацию, подобно тому, как я это делаю в postman при помощи include? Или мне нужно менять не текст запроса, а его параметры? | |||
| 1
    
        Fram 04.09.24✎ 15:02 | 
        Попробуйте в тело запроса добавить     | |||
| 2
    
        craxx 04.09.24✎ 15:27 | 
        (0) Вы реальные ФИО и телефоны не светили бы, персональные данные всё-таки.     | |||
| 3
    
        Волшебник 04.09.24✎ 16:44 | 
        (0) Вика, вы давно программист 1С?     | |||
| 4
    
        Виктория_62 04.09.24✎ 17:05 | 
        (3) год 
 (2) данные тестовые | |||
| 5
    
        Asmody 04.09.24✎ 17:21 | 
        (0) [В postman я могу написать тот же запрос selling/orders/index и указать, что мне нужно]
 - и как вы указываете это в postman? | |||
| 6
    
        eklmn 05.09.24✎ 09:27 | 
        Сначала сделай хоть-что то в 1с и покажи что не работает     | |||
| 7
    
        CepeLLlka 05.09.24✎ 10:06 | 
        (0)В Постмане случаем не через POST это делаете?     | |||
| 8
    
        Виктория_62 05.09.24✎ 10:18 | 
        верно     | |||
| 9
    
        Asmody 05.09.24✎ 10:52 | 
        (8) А в теме почему тогда "GET"?     | |||
| 11
    
        CepeLLlka 05.09.24✎ 11:21 | 
        (8)Тогда наверное вам нужно показать нам код в котором не только данные которые вы отправляете, а и сам процесс отправки. То есть с HttpСоединением и HttpЗапросом     | |||
| 12
    
        Смотрящий 05.09.24✎ 11:37 | 
        (0) Покаж запрос в постман с raw     | |||
| 13
    
        Виктория_62 05.09.24✎ 12:12 | 
        (11) 
 Функция ФункцияПреобразования(Свойство, Значение, ДополнительныеПараметры) Экспорт Результат = Дата(1, 1, 1); Если ЗначениеЗаполнено(Значение) Тогда Значение = СтрЗаменить(Значение, "-", ""); Значение = СтрЗаменить(Значение, "T", ""); Значение = СтрЗаменить(Значение, ":", ""); Значение = СтрЗаменить(Значение, " ", ""); Значение = СтрЗаменить(Значение,Символы.НПП, ""); Значение = Лев(Значение, 14); Результат = Дата(Значение); КонецЕсли; Возврат Результат; КонецФункции ////////////////////////////////////////////////////////////////////////////// Процедура ВыполнитьЗапрос() ПараметрыПодключения = Новый Структура; ПараметрыПодключения.Вставить("АдресСервера", "int.api.test.su"); ПараметрыПодключения.Вставить("ApiKey", "ыфвфрывыфолапыаынеаныаинеаыаываыавы"); ТекстЗапроса = "selling/orders/index"; Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "application/json"); Заголовки.Вставить("Token", ПараметрыПодключения.ApiKey); Заголовки.Вставить("Host", ПараметрыПодключения.АдресСервера); Соединение = Новый HTTPСоединение(ПараметрыПодключения.АдресСервера, 443,,,,,ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение()); Запрос = Новый HTTPЗапрос(ТекстЗапроса, Заголовки); РезультатЗапроса = Соединение.ОтправитьДляОбработки(Запрос); СтрокаОтвета = РезультатЗапроса.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8); МассивСвойствДат = Новый Массив; МассивСвойствДат.Добавить("expires"); МассивСвойствДат.Добавить("activated_at"); МассивСвойствДат.Добавить("last_login"); МассивСвойствДат.Добавить("created_at"); МассивСвойствДат.Добавить("date"); МассивСвойствДат.Добавить("updated_at"); ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(СтрокаОтвета); ДанныеJSON = ПрочитатьJSON(ЧтениеJSON, Истина,,, "ФункцияПреобразования", НазваниеЭтогоМодуля,, МассивСвойствДат); ЧтениеJSON.Закрыть(); Ответ = ДанныеJSON; Если НЕ Ответ.Количество() = 0 Тогда Data = Ответ.Получить("data"); Для Каждого Элемент Из Data Цикл // Здесь имееется вышеописанная структура сообщить(элемент["number"]); КонецЦикла; КонецЕсли; КонецПроцедуры (12) POST {{host}}/selling/orders/index Под запросом перейти на вкладку Body, там ниже станет видна вкладка raw, где написано { "include": ["goods_items.reserves", "goods_outlet_items", "payment", "receipts"] } Могу только описать, картинку здесь не отправить | |||
| 14
    
        Смотрящий 05.09.24✎ 12:23 | 
        (13) Интересует именно скриншот выполненного запроса в постман. Сделай, затри критичные данные и покаж - на сторонний ресурс картинку. Сюда ссылку на нее.     | |||
| 15
    
        trad 05.09.24✎ 12:26 | 
        Запрос.УстановитьТелоИзСтроки("{""include"": [""goods_items.reserves"", ""goods_outlet_items"", ""payment"", ""receipts""]}");
 перед ОтправитьДляОбработки | |||
| 16
    
        Виктория_62 05.09.24✎ 13:00 | 
        (15) (1) 
 Спасибо :3 Надо было добавить в тело запроса, долго искала -как. Мой вариант получился длиннее МассивДопПолей = Новый Массив; МассивДопПолей.Добавить("goods_outlet_items"); МассивДопПолей.Добавить("goods_items.reserves"); МассивДопПолей.Добавить("payment"); МассивДопПолей.Добавить("receipts"); СтруктураДопПолей = Новый Структура; СтруктураДопПолей.Вставить("include", МассивДопПолей); ЗаписьJSON = Новый ЗаписьJSON; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина); НастройкиСериализации = Новый НастройкиСериализацииJSON; НастройкиСериализации.ФорматСериализацииДаты = ФорматДатыJSON.ISO; НастройкиСериализации.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.УниверсальнаяДата; ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); ЗаписатьJSON(ЗаписьJSON, СтруктураДопПолей, НастройкиСериализации); ТелоЗапроса = ЗаписьJSON.Закрыть(); Запрос.УстановитьТелоИзСтроки(ТелоЗапроса); | |||
| 17
    
        trad 05.09.24✎ 14:40 | 
        (16) >>Мой вариант получился длиннее
 И это правильно - через сериализацию структуры. Я только обозначил метод | |||
| 18
    
        Повелитель 05.09.24✎ 15:43 | 
        (0) (16) Годная тема.
 Вот только на днях понадобилось получать информацию по заказам с одного маркетплейса, так как раз через POST запрос и JSON с параметрами. Я на форуме помощи попросил, ответили, но только в сторону что изучить. Я пока ещё не реализовал, время не было. А тут и код рабочий подъехал. Спасибо, мне как раз подходит )) | |||
| 19
    
        CepeLLlka 05.09.24✎ 15:56 | 
        (18)Правильный ник - залог успеха!     | |||
| 20
    
        trad 05.09.24✎ 20:17 | 
        (18) А ты точно читать умеешь?
 Я тебе ровно такой же ответ дал в твоей ветке) | |||
| 21
    
        Fram 05.09.24✎ 23:27 | 
        (18) С таким то опытом можно было и самому     | |||
| 22
    
        Повелитель 06.09.24✎ 07:28 | 
        (20) Ну так, а я что написал? Ответ в своём посте получил, открыл ЗаписьJSON ознакомился, но время реализовать не было, так как есть более приоритетные задачи.
 Тут открываю данную тему, и вижу как раз готовый код по своей задаче. Что не так то? Тебе спасибо за ответ. Я же больше в своей ветке ничего не спрашивал, значит всё понял. (21) Вектор направления для изучения мне дали, не было времени решать данную задачу ещё. Самостоятельно новые задачи можно часами решать. Лучше совета у товарищей спросить. Иногда достаточно узнать в каком направление изучать. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |