POST запрос

1. S_VA 19.03.20 05:16 Сейчас в теме
Всем привет!
Помогите отправить из 1С 8.3 POST запрос на сайт
https://api.uds.app/partner/v2/goods
в теле запроса указать название категории ("name"), id категории ("externalId"), тип - CATEGORY.

{
"name": "Кофе",
"nodeId": null,
"externalId": "category_coffee",
"data":
{
"type": "CATEGORY"
}
}
По теме из базы знаний
Найденные решения
2. koln 19.03.20 12:26 Сейчас в теме
(1) Попробуйте такой код
	СтрокаURI = "https://api.uds.app/partner/v2/goods";
	СтруктураURI = СтруктураURI(СтрокаURI);
	
	Пользователь = "ID компании";
	Пароль = "API Key";
	
	HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,Пользователь,Пароль,,,Новый ЗащищенноеСоединениеOpenSSL()); 
	
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("accept","application/json");
	Заголовки.Вставить("Content-Type","application/json");
	
	СтруктураДляJSON = Новый Структура("name,nodeId,externalId", "Clothers",,"clothers");
	СтруктураДляJSON.Вставить("data",Новый Структура("type","CATEGORY"));
	Запись = Новый ЗаписьJSON;
	Запись.УстановитьСтроку();
	ЗаписатьJSON(Запись, СтруктураДляJSON);
	ТелоЗапроса = Запись.Закрыть();
	
	HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере, Заголовки); 
	HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса);
	РезультатЗапроса = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
		
       ТекстОтветаJSON = РезультатЗапроса.ПолучитьТелоКакСтроку();
	ЧтениеJSON = Новый ЧтениеJSON();
	ЧтениеJSON.УстановитьСтроку(ТекстОтветаJSON);
	РезультатЧтения = ПрочитатьJSON(ЧтениеJSON);
	ЧтениеJSON.Закрыть();
Показать


Функция СтруктураURI(Знач СтрокаURI) Экспорт
	
	СтрокаURI = СокрЛП(СтрокаURI);
	
	// схема
	Схема = "";
	Позиция = Найти(СтрокаURI, "://");
	Если Позиция > 0 Тогда
		Схема = НРег(Лев(СтрокаURI, Позиция - 1));
		СтрокаURI = Сред(СтрокаURI, Позиция + 3);
	КонецЕсли;

	// строка соединения и путь на сервере
	СтрокаСоединения = СтрокаURI;
	ПутьНаСервере = "";
	Позиция = Найти(СтрокаСоединения, "/");
	Если Позиция > 0 Тогда
		ПутьНаСервере = Сред(СтрокаСоединения, Позиция + 1);
		СтрокаСоединения = Лев(СтрокаСоединения, Позиция - 1);
	КонецЕсли;
		
	// информация пользователя и имя сервера
	СтрокаАвторизации = "";
	ИмяСервера = СтрокаСоединения;
	Позиция = Найти(СтрокаСоединения, "@");
	Если Позиция > 0 Тогда
		СтрокаАвторизации = Лев(СтрокаСоединения, Позиция - 1);
		ИмяСервера = Сред(СтрокаСоединения, Позиция + 1);
	КонецЕсли;
	
	// логин и пароль
	Логин = СтрокаАвторизации;
	Пароль = "";
	Позиция = Найти(СтрокаАвторизации, ":");
	Если Позиция > 0 Тогда
		Логин = Лев(СтрокаАвторизации, Позиция - 1);
		Пароль = Сред(СтрокаАвторизации, Позиция + 1);
	КонецЕсли;
	
	// хост и порт
	Хост = ИмяСервера;
	Порт = "";
	Позиция = Найти(ИмяСервера, ":");
	Если Позиция > 0 Тогда
		Хост = Лев(ИмяСервера, Позиция - 1);
		Порт = Сред(ИмяСервера, Позиция + 1);
	КонецЕсли;
	
	Результат = Новый Структура;
	Результат.Вставить("Схема", Схема);
	Результат.Вставить("Логин", Логин);
	Результат.Вставить("Пароль", Пароль);
	Результат.Вставить("ИмяСервера", ИмяСервера);
	Результат.Вставить("Хост", Хост);
	Результат.Вставить("Порт", ?(Порт <> "", Число(Порт), Неопределено));
	Результат.Вставить("ПутьНаСервере", ПутьНаСервере);
	
	Возврат Результат;
	
КонецФункции
Показать
11. koln 26.03.20 08:26 Сейчас в теме
(4)Я так понимаю, что по каждой строке ТЧ Вам нужно отправлять запрос на сервис и обрабатывать ответ. В таком случае, весь код работы с сервисом нужно вставлять в цикл.
Для Каждого СтрокаТабличнойЧасти из Объект.Запасы Цикл
    СтруктураДляJSON = Новый Структура("name,nodeId,externalId", "Clothers",,"clothers");
    СтруктураДляJSON.Вставить("data",Новый Структура("type","CATEGORY"));
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, СтруктураДляJSON);
    ТелоЗапроса = Запись.Закрыть();
    
    HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере, Заголовки); 
    HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса);
    РезультатЗапроса = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
        
       ТекстОтветаJSON = РезультатЗапроса.ПолучитьТелоКакСтроку();
    ЧтениеJSON = Новый ЧтениеJSON();
    ЧтениеJSON.УстановитьСтроку(ТекстОтветаJSON);
    РезультатЧтения = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
КонецЦикла;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. koln 19.03.20 12:26 Сейчас в теме
(1) Попробуйте такой код
	СтрокаURI = "https://api.uds.app/partner/v2/goods";
	СтруктураURI = СтруктураURI(СтрокаURI);
	
	Пользователь = "ID компании";
	Пароль = "API Key";
	
	HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,Пользователь,Пароль,,,Новый ЗащищенноеСоединениеOpenSSL()); 
	
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("accept","application/json");
	Заголовки.Вставить("Content-Type","application/json");
	
	СтруктураДляJSON = Новый Структура("name,nodeId,externalId", "Clothers",,"clothers");
	СтруктураДляJSON.Вставить("data",Новый Структура("type","CATEGORY"));
	Запись = Новый ЗаписьJSON;
	Запись.УстановитьСтроку();
	ЗаписатьJSON(Запись, СтруктураДляJSON);
	ТелоЗапроса = Запись.Закрыть();
	
	HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере, Заголовки); 
	HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса);
	РезультатЗапроса = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
		
       ТекстОтветаJSON = РезультатЗапроса.ПолучитьТелоКакСтроку();
	ЧтениеJSON = Новый ЧтениеJSON();
	ЧтениеJSON.УстановитьСтроку(ТекстОтветаJSON);
	РезультатЧтения = ПрочитатьJSON(ЧтениеJSON);
	ЧтениеJSON.Закрыть();
Показать


Функция СтруктураURI(Знач СтрокаURI) Экспорт
	
	СтрокаURI = СокрЛП(СтрокаURI);
	
	// схема
	Схема = "";
	Позиция = Найти(СтрокаURI, "://");
	Если Позиция > 0 Тогда
		Схема = НРег(Лев(СтрокаURI, Позиция - 1));
		СтрокаURI = Сред(СтрокаURI, Позиция + 3);
	КонецЕсли;

	// строка соединения и путь на сервере
	СтрокаСоединения = СтрокаURI;
	ПутьНаСервере = "";
	Позиция = Найти(СтрокаСоединения, "/");
	Если Позиция > 0 Тогда
		ПутьНаСервере = Сред(СтрокаСоединения, Позиция + 1);
		СтрокаСоединения = Лев(СтрокаСоединения, Позиция - 1);
	КонецЕсли;
		
	// информация пользователя и имя сервера
	СтрокаАвторизации = "";
	ИмяСервера = СтрокаСоединения;
	Позиция = Найти(СтрокаСоединения, "@");
	Если Позиция > 0 Тогда
		СтрокаАвторизации = Лев(СтрокаСоединения, Позиция - 1);
		ИмяСервера = Сред(СтрокаСоединения, Позиция + 1);
	КонецЕсли;
	
	// логин и пароль
	Логин = СтрокаАвторизации;
	Пароль = "";
	Позиция = Найти(СтрокаАвторизации, ":");
	Если Позиция > 0 Тогда
		Логин = Лев(СтрокаАвторизации, Позиция - 1);
		Пароль = Сред(СтрокаАвторизации, Позиция + 1);
	КонецЕсли;
	
	// хост и порт
	Хост = ИмяСервера;
	Порт = "";
	Позиция = Найти(ИмяСервера, ":");
	Если Позиция > 0 Тогда
		Хост = Лев(ИмяСервера, Позиция - 1);
		Порт = Сред(ИмяСервера, Позиция + 1);
	КонецЕсли;
	
	Результат = Новый Структура;
	Результат.Вставить("Схема", Схема);
	Результат.Вставить("Логин", Логин);
	Результат.Вставить("Пароль", Пароль);
	Результат.Вставить("ИмяСервера", ИмяСервера);
	Результат.Вставить("Хост", Хост);
	Результат.Вставить("Порт", ?(Порт <> "", Число(Порт), Неопределено));
	Результат.Вставить("ПутьНаСервере", ПутьНаСервере);
	
	Возврат Результат;
	
КонецФункции
Показать
3. S_VA 20.03.20 08:45 Сейчас в теме
4. S_VA 20.03.20 08:53 Сейчас в теме
Как выгрузить из табличной части документа
Выгружает только последнюю строку

Для Каждого СтрокаТабличнойЧасти из Объект.Запасы Цикл
	Товар=СтрокаТабличнойЧасти.Номенклатура.Родитель;
	//Цена=СтрокаТабличнойЧасти.Цена;
	//КодТ=СтрокаТабличнойЧасти.Номенклатура.Код;
	//Сообщить(товар);
КонецЦикла;

	
  СтруктураДляJSON = Новый Структура("name,nodeId,externalId",СокрЛП(Товар),,СокрЛП(Товар));
  СтруктураДляJSON.Вставить("data",Новый Структура("type","CATEGORY"));

    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, СтруктураДляJSON);
    ТелоЗапроса = Запись.Закрыть();
Показать
11. koln 26.03.20 08:26 Сейчас в теме
(4)Я так понимаю, что по каждой строке ТЧ Вам нужно отправлять запрос на сервис и обрабатывать ответ. В таком случае, весь код работы с сервисом нужно вставлять в цикл.
Для Каждого СтрокаТабличнойЧасти из Объект.Запасы Цикл
    СтруктураДляJSON = Новый Структура("name,nodeId,externalId", "Clothers",,"clothers");
    СтруктураДляJSON.Вставить("data",Новый Структура("type","CATEGORY"));
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, СтруктураДляJSON);
    ТелоЗапроса = Запись.Закрыть();
    
    HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере, Заголовки); 
    HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса);
    РезультатЗапроса = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
        
       ТекстОтветаJSON = РезультатЗапроса.ПолучитьТелоКакСтроку();
    ЧтениеJSON = Новый ЧтениеJSON();
    ЧтениеJSON.УстановитьСтроку(ТекстОтветаJSON);
    РезультатЧтения = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
КонецЦикла;
Показать
12. S_VA 26.03.20 11:23 Сейчас в теме
Получилось. Спасибо!

Как теперь в категорию закинуть товар с ценой
Для этого нужно отправить POST запрос на https://api.uds.app/partner/v2/goods и в теле запроса указать название товара ("name"), id категории ("nodeid"), id товара ("externalId"), тип товара - ITEM (обычный товар), VARYING_ITEM (товар с вариантами), описание товара ("description"), артикул( "sku"). Если товар имеет несколько вариантов, то необходимо добавить названия вариантов товара и их цены.


"name": "Капучино",\ "nodeId": 641108, \ "externalId": "coffee_cappuccino",\ "data": { "type": "VARYING_ITEM", "description": "Классический капучино", "variants": [ { "name": "Маленький 100 мл", "price": 100.0, "sku": 1 }, { "name": "Средний 200 мл", "price": 150.0, "sku": 2 }, { "name": "Большой 300 мл", "price": 200.0, "sku": 3
5. S_VA 20.03.20 09:14 Сейчас в теме
Массив создать? Потом в структуру в массиве?
6. S_VA 20.03.20 09:47 Сейчас в теме
ТаблицаТоваров = Новый Массив;
Для Каждого СтрокаТабличнойЧасти из Объект.Запасы Цикл
Товар=СтрокаТабличнойЧасти.Номенклатура.Родитель;



СтруктураДляJSON = Новый Структура("name,nodeId,externalId",СокрЛП(Товар),,СокрЛП(Товар));
СтруктураДляJSON.Вставить("data",Новый Структура("type","CATEGORY"));

ТаблицаТоваров.Добавить(СтруктураДляJSON);

КонецЦикла;

Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись,ТаблицаТоваров );
ТелоЗапроса = Запись.Закрыть();
7. S_VA 20.03.20 09:48 Сейчас в теме
8. antz 20.03.20 10:04 Сейчас в теме
(7) Что именно не получилось-то?
9. S_VA 20.03.20 10:14 Сейчас в теме
10. antz 20.03.20 10:45 Сейчас в теме
(9) Пусто где - в теле запроса? В ответе?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот