&НаКлиенте
Процедура ПолучитьДанные(Команда)
ПолучитьДанныеНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПолучитьДанныеНаСервере()
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
Соединение = Новый HTTPСоединение("api.partner.market.yandex.ru",,,,,,ЗащищенноеСоединение);
Токен = "Bearer <ТОКЕН>";
ИдКомпании = "<id Компании>";
АдресЗапроса = СтрШаблон("campaigns/%1/stats/skus", ИдКомпании);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", Токен);
Запрос = Новый HTTPЗапрос(АдресЗапроса, Заголовки);
МассивАртикулов = ПолучитьМассивАртикулов();
Если МассивАртикулов = Неопределено Тогда
Возврат;
КонецЕСли;
ДанныеСтруктура = Новый Структура;
ДанныеСтруктура.Вставить("shopSkus", МассивАртикулов);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеСтруктура);
СтрокаJSON = ЗаписьJSON.Закрыть();
Запрос.УстановитьТелоИзСтроки(СтрокаJSON);
Попытка
Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось получить данные: " + ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
Если Ответ.КодСостояния = 200 Тогда
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТелоОтвета);
ДанныеПоТоварам = ПрочитатьJSON(ЧтениеJSON, Истина);
Иначе
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон("Не удалось получить данные, код: %1, ответ: %2", Ответ.КодСостояния, Ответ.ПолучитьТелоКакСтроку());
Сообщение.Сообщить();
Возврат;
КонецЕСлИ;
Если ДанныеПоТоварам["result"]["shopSkus"].Количество() > 0 Тогда
МассивТоваров = ДанныеПоТоварам["result"]["shopSkus"];
МассивТоваровДляТЗ = Новый Массив;
Для каждого Товар из МассивТоваров Цикл
Для каждого Склад из Товар["warehouses"] Цикл
ТоварСтруктура = Новый Структура;
ТоварСтруктура.Вставить("Артикул", Товар["shopSku"]);
ТоварСтруктура.Вставить("Товар", Товар["name"]);
ТоварСтруктура.Вставить("Склад", Склад["name"]);
Для каждого ТипОстатка из Склад["stocks"] Цикл
Если ТипОстатка["type"] = "AVAILABLE" Тогда
ТоварСтруктура.Вставить("Количество", ТипОстатка["count"]);
МассивТоваровДляТЗ.Добавить(ТоварСтруктура);
КонецЕСли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если МассивТоваровДляТЗ.Количество() > 0 Тогда
НаборЗаписей = РегистрыСведений.Progress_АктуальныеОстаткиТоваровНаСкладах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Маркетплейс.Установить("Yandex");
НаборЗаписей.Записать();
ТЗ = ПреобразованиеМассивВТаблицуЗначений(МассивТоваровДляТЗ);
МассивДанных = ПодготовитьДанныеДляЗаписиВРегистр(ТЗ);
Для каждого Товар из МассивДанных Цикл
МЗ = РегистрыСведений.Progress_АктуальныеОстаткиТоваровНаСкладах.СоздатьМенеджерЗаписи();
МЗ.Маркетплейс = "Yandex";
МЗ.Номенклатура = Товар.Номенклатура;
МЗ.Артикул = Товар.Артикул;
МЗ.Склад = Товар.Склад;
МЗ.Количество = Товар.Количество;
МЗ.Записать();
КонецЦикла;
КонецЕсли;
КонецЕСлИ;
КонецПроцедуры
&НаСервере
Функция ПреобразованиеМассивВТаблицуЗначений(Массив)
ТЗ = Новый ТаблицаЗначений;
Для Каждого СтрокаМассива Из Массив Цикл
Если ТЗ.Колонки.Количество() = 0 Тогда
СписокТипов = Новый Массив;
СписокТипов.Добавить(Тип("Строка"));
СписокТипов.Добавить(Тип("Число"));
ОписаниеСоставногоТипа = Новый ОписаниеТипов(СписокТипов);
КвалификаторыСтроки = Новый КвалификаторыСтроки(250);
КвалификаторыЧисла = Новый КвалификаторыЧисла(15, 3, ДопустимыйЗнак.Любой);
Для Каждого ЭлементМассива Из СтрокаМассива Цикл
ТЗ.Колонки.Добавить(ЭлементМассива.Ключ, Новый ОписаниеТипов(ОписаниеСоставногоТипа, ,,КвалификаторыЧисла,КвалификаторыСтроки));
КонецЦикла;
КонецЕсли;
НоваяСтрока = ТЗ.Добавить();
Для Каждого ЭлементМассива Из СтрокаМассива Цикл
НоваяСтрока[ЭлементМассива.Ключ] = ЭлементМассива.Значение;
КонецЦикла;
КонецЦикла;
Возврат ТЗ;
КонецФункции
&НаСервере
Функция ПодготовитьДанныеДляЗаписиВРегистр(ТЗ)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ДанныеССервера.Артикул КАК Артикул,
| ДанныеССервера.Склад КАК Склад,
| ДанныеССервера.Количество КАК Количество
|ПОМЕСТИТЬ вт_ДанныеССервера
|ИЗ
| &ДанныеССервера КАК ДанныеССервера
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Беру_SKUТоваров.Номенклатура КАК Номенклатура,
| вт_ДанныеССервера.Артикул КАК Артикул,
| вт_ДанныеССервера.Склад КАК Склад,
| вт_ДанныеССервера.Количество КАК Количество
|ИЗ
| вт_ДанныеССервера КАК вт_ДанныеССервера
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Беру_SKUТоваров КАК Беру_SKUТоваров
| ПО (вт_ДанныеССервера.Артикул = Беру_SKUТоваров.shopSku)";
Запрос.УстановитьПараметр("ДанныеССервера", ТЗ);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
МассивДанных = Новый Массив;
Пока Выборка.Следующий() Цикл
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("Номенклатура", Выборка.Номенклатура);
СтруктураДанных.Вставить("Артикул", Выборка.Артикул);
СтруктураДанных.Вставить("Склад", Выборка.Склад);
СтруктураДанных.Вставить("Количество", Выборка.Количество);
МассивДанных.Добавить(СтруктураДанных);
КонецЦикла;
Возврат МассивДанных;
КонецФункции
&НаСервере
Функция ПолучитьМассивАртикулов()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Беру_SKUТоваров.shopSku КАК shopSku
| ИЗ
| РегистрСведений.Беру_SKUТоваров КАК Беру_SKUТоваров";
РезультатЗапроса = Запрос.Выполнить();
Если не РезультатЗапроса.Пустой() Тогда
МассивАртикулов = Новый Массив;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
МассивАртикулов.Добавить(Выборка.shopSku);
КонецЦикла;
Возврат МассивАртикулов;
КонецЕСлИ;
Возврат Неопределено;
КонецФункции
&НаКлиенте
Процедура ПолучитьДанные(Команда)
ПолучитьДанныеНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПолучитьДанныеНаСервере()
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
Соединение = Новый HTTPСоединение("api.partner.market.yandex.ru",,,,,,ЗащищенноеСоединение);
Токен = "Bearer <ТОКЕН>";
ИдКомпании = "<id Компании>";
АдресЗапроса = СтрШаблон("campaigns/%1/stats/skus", ИдКомпании);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", Токен);
Запрос = Новый HTTPЗапрос(АдресЗапроса, Заголовки);
МассивАртикулов = ПолучитьМассивАртикулов();
Если МассивАртикулов = Неопределено Тогда
Возврат;
КонецЕСли;
ДанныеСтруктура = Новый Структура;
ДанныеСтруктура.Вставить("shopSkus", МассивАртикулов);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеСтруктура);
СтрокаJSON = ЗаписьJSON.Закрыть();
Запрос.УстановитьТелоИзСтроки(СтрокаJSON);
Попытка
Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось получить данные: " + ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
Если Ответ.КодСостояния = 200 Тогда
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТелоОтвета);
ДанныеПоТоварам = ПрочитатьJSON(ЧтениеJSON, Истина);
Иначе
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон("Не удалось получить данные, код: %1, ответ: %2", Ответ.КодСостояния, Ответ.ПолучитьТелоКакСтроку());
Сообщение.Сообщить();
Возврат;
КонецЕСлИ;
Если ДанныеПоТоварам["result"]["shopSkus"].Количество() > 0 Тогда
МассивТоваров = ДанныеПоТоварам["result"]["shopSkus"];
МассивТоваровДляТЗ = Новый Массив;
Для каждого Товар из МассивТоваров Цикл
Для каждого Склад из Товар["warehouses"] Цикл
ТоварСтруктура = Новый Структура;
ТоварСтруктура.Вставить("Артикул", Товар["shopSku"]);
ТоварСтруктура.Вставить("Товар", Товар["name"]);
ТоварСтруктура.Вставить("Склад", Склад["name"]);
Для каждого ТипОстатка из Склад["stocks"] Цикл
Если ТипОстатка["type"] = "AVAILABLE" Тогда
ТоварСтруктура.Вставить("Количество", ТипОстатка["count"]);
МассивТоваровДляТЗ.Добавить(ТоварСтруктура);
КонецЕСли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если МассивТоваровДляТЗ.Количество() > 0 Тогда
НаборЗаписей = РегистрыСведений.Progress_АктуальныеОстаткиТоваровНаСкладах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Маркетплейс.Установить("Yandex");
НаборЗаписей.Записать();
ТЗ = ПреобразованиеМассивВТаблицуЗначений(МассивТоваровДляТЗ);
МассивДанных = ПодготовитьДанныеДляЗаписиВРегистр(ТЗ);
Для каждого Товар из МассивДанных Цикл
МЗ = РегистрыСведений.Progress_АктуальныеОстаткиТоваровНаСкладах.СоздатьМенеджерЗаписи();
МЗ.Маркетплейс = "Yandex";
МЗ.Номенклатура = Товар.Номенклатура;
МЗ.Артикул = Товар.Артикул;
МЗ.Склад = Товар.Склад;
МЗ.Количество = Товар.Количество;
МЗ.Записать();
КонецЦикла;
КонецЕсли;
КонецЕСлИ;
КонецПроцедуры
&НаСервере
Функция ПреобразованиеМассивВТаблицуЗначений(Массив)
ТЗ = Новый ТаблицаЗначений;
Для Каждого СтрокаМассива Из Массив Цикл
Если ТЗ.Колонки.Количество() = 0 Тогда
СписокТипов = Новый Массив;
СписокТипов.Добавить(Тип("Строка"));
СписокТипов.Добавить(Тип("Число"));
ОписаниеСоставногоТипа = Новый ОписаниеТипов(СписокТипов);
КвалификаторыСтроки = Новый КвалификаторыСтроки(250);
КвалификаторыЧисла = Новый КвалификаторыЧисла(15, 3, ДопустимыйЗнак.Любой);
Для Каждого ЭлементМассива Из СтрокаМассива Цикл
ТЗ.Колонки.Добавить(ЭлементМассива.Ключ, Новый ОписаниеТипов(ОписаниеСоставногоТипа, ,,КвалификаторыЧисла,КвалификаторыСтроки));
КонецЦикла;
КонецЕсли;
НоваяСтрока = ТЗ.Добавить();
Для Каждого ЭлементМассива Из СтрокаМассива Цикл
НоваяСтрока[ЭлементМассива.Ключ] = ЭлементМассива.Значение;
КонецЦикла;
КонецЦикла;
Возврат ТЗ;
КонецФункции
&НаСервере
Функция ПодготовитьДанныеДляЗаписиВРегистр(ТЗ)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ДанныеССервера.Артикул КАК Артикул,
| ДанныеССервера.Склад КАК Склад,
| ДанныеССервера.Количество КАК Количество
|ПОМЕСТИТЬ вт_ДанныеССервера
|ИЗ
| &ДанныеССервера КАК ДанныеССервера
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Беру_SKUТоваров.Номенклатура КАК Номенклатура,
| вт_ДанныеССервера.Артикул КАК Артикул,
| вт_ДанныеССервера.Склад КАК Склад,
| вт_ДанныеССервера.Количество КАК Количество
|ИЗ
| вт_ДанныеССервера КАК вт_ДанныеССервера
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Беру_SKUТоваров КАК Беру_SKUТоваров
| ПО (вт_ДанныеССервера.Артикул = Беру_SKUТоваров.shopSku)";
Запрос.УстановитьПараметр("ДанныеССервера", ТЗ);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
МассивДанных = Новый Массив;
Пока Выборка.Следующий() Цикл
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("Номенклатура", Выборка.Номенклатура);
СтруктураДанных.Вставить("Артикул", Выборка.Артикул);
СтруктураДанных.Вставить("Склад", Выборка.Склад);
СтруктураДанных.Вставить("Количество", Выборка.Количество);
МассивДанных.Добавить(СтруктураДанных);
КонецЦикла;
Возврат МассивДанных;
КонецФункции
&НаСервере
Функция ПолучитьМассивАртикулов()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Беру_SKUТоваров.shopSku КАК shopSku
| ИЗ
| РегистрСведений.Беру_SKUТоваров КАК Беру_SKUТоваров";
РезультатЗапроса = Запрос.Выполнить();
Если не РезультатЗапроса.Пустой() Тогда
МассивАртикулов = Новый Массив;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
МассивАртикулов.Добавить(Выборка.shopSku);
КонецЦикла;
Возврат МассивАртикулов;
КонецЕСлИ;
Возврат Неопределено;
КонецФункции
У яндекс маркета для партнеров есть свое готовое расширение под УТ 11, вполне рабочее, опубликовываете базу на веб сервере, ssl, в лк меняете режим работы и можно работать. У них же есть инструкции как, что сделать.