Всем привет!
Помогите отправить из 1С 8.3 POST запрос на сайт
https://api.uds.app/partner/v2/goods в теле запроса указать название категории ("name"), id категории ("externalId"), тип - CATEGORY.
Строка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);
КонецЕсли;
Результат = Новый Структура;
Результат.Вставить("Схема", Схема);
Результат.Вставить("Логин", Логин);
Результат.Вставить("Пароль", Пароль);
Результат.Вставить("ИмяСервера", ИмяСервера);
Результат.Вставить("Хост", Хост);
Результат.Вставить("Порт", ?(Порт <> "", Число(Порт), Неопределено));
Результат.Вставить("ПутьНаСервере", ПутьНаСервере);
Возврат Результат;
КонецФункции
(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.Закрыть();
КонецЦикла;
Строка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);
КонецЕсли;
Результат = Новый Структура;
Результат.Вставить("Схема", Схема);
Результат.Вставить("Логин", Логин);
Результат.Вставить("Пароль", Пароль);
Результат.Вставить("ИмяСервера", ИмяСервера);
Результат.Вставить("Хост", Хост);
Результат.Вставить("Порт", ?(Порт <> "", Число(Порт), Неопределено));
Результат.Вставить("ПутьНаСервере", ПутьНаСервере);
Возврат Результат;
КонецФункции
Как выгрузить из табличной части документа
Выгружает только последнюю строку
Для Каждого СтрокаТабличнойЧасти из Объект.Запасы Цикл
Товар=СтрокаТабличнойЧасти.Номенклатура.Родитель;
//Цена=СтрокаТабличнойЧасти.Цена;
//КодТ=СтрокаТабличнойЧасти.Номенклатура.Код;
//Сообщить(товар);
КонецЦикла;
СтруктураДляJSON = Новый Структура("name,nodeId,externalId",СокрЛП(Товар),,СокрЛП(Товар));
СтруктураДляJSON.Вставить("data",Новый Структура("type","CATEGORY"));
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, СтруктураДляJSON);
ТелоЗапроса = Запись.Закрыть();
(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.Закрыть();
КонецЦикла;
Как теперь в категорию закинуть товар с ценой
Для этого нужно отправить POST запрос на https://api.uds.app/partner/v2/goods и в теле запроса указать название товара ("name"), id категории ("nodeid"), id товара ("externalId"), тип товара - ITEM (обычный товар), VARYING_ITEM (товар с вариантами), описание товара ("description"), артикул( "sku"). Если товар имеет несколько вариантов, то необходимо добавить названия вариантов товара и их цены.