// MIT License // Copyright (c) 2023 Anton Tsitavets // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // https://github.com/Bayselonarrend/OpenIntegrations // Если в не знаете с чего начать, то стоит найти метод ПолучитьСтандартныеПараметры() // и почитать комментарии // BSLLS:NumberOfOptionalParams-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off // BSLLS:NumberOfOptionalParams-off // BSLLS:UsingServiceTag-off // BSLLS:UnusedLocalVariable-off //@skip-check method-too-many-params // Раскомментировать, если выполняется OneScript #Использовать "../../tools" #Область ПрограммныйИнтерфейс #Область ПолучениеТокена // Создать ссылку получения токена // Получение ссылки для интерактивного получения токена (access_token), который необходим // для дальнейших действий // // Параметры: // app_id - Строка,Число - app_id из настроек приложения - app // // Возвращаемое значение: // Строка - URL, по которому необходимо перейти в браузере Функция СоздатьСсылкуПолученияТокена(Знач App_id) Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(App_id); // access_token нужно будет забрать из параметра в строке адреса браузера Возврат "https://oauth.vk.com/authorize?client_id=" + App_id + "&scope=offline,wall,groups,photos,stats,stories,ads,market" + "&v=5.131&response_type=token&redirect_uri=https://api.vk.com/blank.html"; КонецФункции #КонецОбласти #Область РаботаСГруппой // Создать пост // Создает пост с картинками // // Параметры: // Текст - Строка - Текст поста - text // МассивКартинок - Массив из Строка,ДвоичныеДанные - Массив картинок - pictures // Рекламный - Булево - Признак ""Это реклама"" - ad // СсылкаПодЗаписью - Строка - Ссылка (URL) под записью - url // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СоздатьПост(Знач Текст , Знач МассивКартинок , Знач Рекламный = Ложь , Знач СсылкаПодЗаписью = "" , Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст); OPI_ПреобразованиеТипов.ПолучитьСтроку(СсылкаПодЗаписью); OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивКартинок); OPI_ПреобразованиеТипов.ПолучитьБулево(Рекламный); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); СтрокаВложений = ""; Для Каждого КартинкаПоста Из МассивКартинок Цикл Параметры_ = ПолучитьСтандартныеПараметры(Параметры); ОтветСоответствие = ПолучитьСоответствиеКартинки(КартинкаПоста, Параметры_, "Пост"); OwnerId = ОтветСоответствие.Получить("owner_id"); ObjectId = ОтветСоответствие.Получить("id"); Если Не ЗначениеЗаполнено(OwnerId) Или Не ЗначениеЗаполнено(ObjectId) Тогда Возврат ОтветСоответствие; КонецЕсли; ФотоID = "photo" + OPI_Инструменты.ЧислоВСтроку(OwnerId) + "_" + OPI_Инструменты.ЧислоВСтроку(ObjectId); СтрокаВложений = СтрокаВложений + ФотоID + ","; КонецЦикла; СтрокаВложений = СтрокаВложений + СсылкаПодЗаписью; Параметры_.Вставить("message" , Текст); Параметры_.Вставить("attachments" , СтрокаВложений); Параметры_.Вставить("mark_as_ads" , ?(Рекламный, 1, 0)); Параметры_.Вставить("close_comments" , ?(Рекламный, 1, 0)); Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры_); Возврат Ответ; КонецФункции // Удалить пост // Удаляет пост по id // // Параметры: // IDПоста - Строка,Число - ID поста - post // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция УдалитьПост(Знач IDПоста, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПоста); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("post_id", IDПоста); Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.delete", Параметры_); Возврат Ответ; КонецФункции // Создать опрос // Создает опрос с вариантами ответа // // Параметры: // Вопрос - Строка - Вопрос опроса - question // МассивОтветов - Массив из Строка - Массив вариантов ответа - options // Картинка - Строка,ДвоичныеДанные - Картинка опроса - picture // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СоздатьОпрос(Знач Вопрос, Знач МассивОтветов, Знач Картинка = "", Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Вопрос); OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивОтветов); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Response = "response"; Если ЗначениеЗаполнено(Картинка) Тогда Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры_, "Опрос"); Фото = Ответ.Получить(Response); Если ЗначениеЗаполнено(Фото) Тогда IDФото = Фото["id"]; Если Не ЗначениеЗаполнено(IDФото) Тогда Возврат Ответ; КонецЕсли; Иначе Возврат Ответ; КонецЕсли; КонецЕсли; Параметры_.Вставить("is_anonymous", 1); Параметры_.Вставить("is_multiple" , 0); Ответы = СтрСоединить(МассивОтветов, ""","""); Ответы = "[""" + Ответы + """]"; Параметры_.Вставить("add_answers", Ответы); Параметры_.Вставить("photo_id" , OPI_Инструменты.ЧислоВСтроку(IDФото)); Параметры_.Вставить("question" , Вопрос); Опрос = OPI_Инструменты.Get("api.vk.com/method/polls.create", Параметры_); ОпросСоответствие = Опрос.Получить(Response); Если Не ЗначениеЗаполнено(ОпросСоответствие) Тогда Возврат Опрос; КонецЕсли; OwnerId = ОпросСоответствие.Получить("owner_id"); ObjectId = ОпросСоответствие.Получить("id"); Если Не ЗначениеЗаполнено(OwnerId) Или Не ЗначениеЗаполнено(ObjectId) Тогда Возврат Опрос; КонецЕсли; ОпросID = "poll" + OPI_Инструменты.ЧислоВСтроку(OwnerId) + "_" + OPI_Инструменты.ЧислоВСтроку(ObjectId); Параметры_.Вставить("attachments", ОпросID); Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры_); Возврат Ответ; КонецФункции // Создать альбом // Создает альбом для хранения картинок // // Параметры: // Наименование - Строка - Наименование альбома - title // Описание - Строка - Описание альбома - description // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СоздатьАльбом(Знач Наименование, Знач Описание = "", Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); OPI_ПреобразованиеТипов.ПолучитьСтроку(Описание); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("title" , Наименование); Параметры_.Вставить("description" , Описание); Параметры_.Вставить("upload_by_admins_only", 1); Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.createAlbum", Параметры_); Возврат Ответ; КонецФункции // Удалить альбом // Удаляет ранее созданный альбом // // Параметры: // IDАльбома - Строка,Число - ID альбома - album // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция УдалитьАльбом(Знач IDАльбома, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(IDАльбома); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("album_id", OPI_Инструменты.ЧислоВСтроку(IDАльбома)); Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.deleteAlbum", Параметры_); Возврат Ответ; КонецФункции // Создать историю // Создает историю из картинки // // Параметры: // Картинка - Строка,ДвоичныеДанные - Фон истории - picture // URL - Строка - URL для кнопки под историей - url // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СоздатьИсторию(Знач Картинка, Знач URL = "", Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("link_text" , "more"); Параметры_.Вставить("link_url" , URL); Параметры_.Вставить("add_to_news", "1"); Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры_, "История"); Возврат Ответ; КонецФункции // Сохранить картинку в альбом // Сохраняет картинку в альбом сообщества // // Параметры: // IDАльбома - Строка,Число - ID альбома - album // Картинка - ДвоичныеДанные,Строка - Файл картинки - picture // Описание - Строка - Описание картинки - description // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СохранитьКартинкуВАльбом(Знач IDАльбома, Знач Картинка, Знач Описание = "", Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(IDАльбома); OPI_ПреобразованиеТипов.ПолучитьСтроку(Описание); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("album_id", IDАльбома); Параметры_.Вставить("caption" , Описание); Возврат ЗагрузитьФотоНаСервер(Картинка, Параметры_, "Альбом"); КонецФункции // Удалить картинку // Удалить картинку из альбома // // Параметры: // IDКартинки - Строка,Число - ID картинки - pictureid // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция УдалитьКартинку(Знач IDКартинки, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКартинки); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("photo_id", IDКартинки); Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.delete", Параметры_); Возврат Ответ; КонецФункции #КонецОбласти #Область РаботаСОбсуждениями // Создать обсуждение // Создает новое обсуждение // // Параметры: // Наименование - Строка - Наименование обсуждения - title // ТекстПервогоСообщения - Строка - Текст первого сообщения - text // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СоздатьОбсуждение(Знач Наименование, Знач ТекстПервогоСообщения, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстПервогоСообщения); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("title", Наименование); Параметры_.Вставить("text" , ТекстПервогоСообщения); Ответ = OPI_Инструменты.Get("api.vk.com/method/board.addTopic", Параметры_); Возврат Ответ; КонецФункции // Закрыть обсуждение // Закрывает или удаляет обсуждение // // Параметры: // IDОбсуждения - Строка,Число - ID обсуждения - topic // УдалитьПолностью - Булево - Удалить полностью (Истина) или закрыть - remove // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ЗакрытьОбсуждение(Знач IDОбсуждения, Знач УдалитьПолностью = Ложь, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(IDОбсуждения); OPI_ПреобразованиеТипов.ПолучитьБулево(УдалитьПолностью); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("topic_id", IDОбсуждения); Метод = ?(УдалитьПолностью, "deleteTopic", "closeTopic"); Ответ = OPI_Инструменты.Get("api.vk.com/method/board." + Метод, Параметры_); Возврат Ответ; КонецФункции // Открыть обсуждение // Открывает ранее закрытое обсуждение // // Параметры: // IDОбсуждения - Строка,Число - ID обсуждения - topic // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ОткрытьОбсуждение(Знач IDОбсуждения, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(IDОбсуждения); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("topic_id", IDОбсуждения); Ответ = OPI_Инструменты.Get("api.vk.com/method/board.openTopic", Параметры_); Возврат Ответ; КонецФункции // Написать в обсуждение // Добавляет сообщение в обсуждение от имени группы // // Параметры: // IDОбсуждения - Строка,Число - ID обсуждения - topic // Текст - Строка - Текст сообщения - text // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция НаписатьВОбсуждение(Знач IDОбсуждения, Знач Текст, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(IDОбсуждения); OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("topic_id", IDОбсуждения); Параметры_.Вставить("message" , Текст); Ответ = OPI_Инструменты.Get("api.vk.com/method/board.createComment", Параметры_); Возврат Ответ; КонецФункции #КонецОбласти #Область ИнтерактивныеДействия // Поставить лайк // Ставит лайк на пост // // Параметры: // IDПоста - Строка,Число - ID поста - post // IDСтены - Строка,Число - ID стены расположения поста - wall // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ПоставитьЛайк(Знач IDПоста, Знач IDСтены = "", Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПоста); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСтены); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); IDСтены = ?(ЗначениеЗаполнено(IDСтены), IDСтены, Параметры_["owner_id"]); ОбъектВК = "wall" + IDСтены + "_" + OPI_Инструменты.ЧислоВСтроку(IDПоста); Параметры_.Вставить("type" , "post"); Параметры_.Вставить("object" , ОбъектВК); Параметры_.Вставить("item_id" , OPI_Инструменты.ЧислоВСтроку(IDПоста)); Параметры_.Вставить("owner_id" , OPI_Инструменты.ЧислоВСтроку(IDСтены)); Параметры_.Вставить("from_group" , 0); Ответ = OPI_Инструменты.Get("api.vk.com/method/likes.add", Параметры_); Возврат Ответ; КонецФункции // Сделать репост // Делает репост записи // // Параметры: // IDПоста - Строка,Число - ID поста - post // IDСтены - Строка,Число - ID стены расположения поста - from // ЦелеваяСтена - Строка,Число - ID целевой стены или группы - to // Рекламный - Булево - Признак рекламного поста - ad // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СделатьРепост(Знач IDПоста , Знач IDСтены = "" , Знач ЦелеваяСтена = "" , Знач Рекламный = Ложь , Знач Параметры = "") Экспорт Параметры_ = ПолучитьСтандартныеПараметры(Параметры); GroupId = Параметры_["group_id"]; OPI_ПреобразованиеТипов.ПолучитьСтроку(GroupId); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПоста); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСтены); OPI_ПреобразованиеТипов.ПолучитьСтроку(ЦелеваяСтена); OPI_ПреобразованиеТипов.ПолучитьБулево(Рекламный); Источник = ?(ЗначениеЗаполнено(IDСтены), IDСтены, GroupId); Приемник = ?(ЗначениеЗаполнено(ЦелеваяСтена), ЦелеваяСтена, GroupId); Параметры_.Вставить("object" , "wall" + Источник + "_" + OPI_Инструменты.ЧислоВСтроку(IDПоста)); Параметры_.Вставить("group_id" , СтрЗаменить(Приемник, "-", "")); Параметры_.Вставить("mark_as_ads" , ?(Рекламный, 1, 0)); Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.repost", Параметры_); Возврат Ответ; КонецФункции // Написать сообщение // Написать сообщение пользователю в диалоге сообщества // // Параметры: // Текст - Строка - Текст сообщения - text // IDПользователя - Строка - ID пользователя адресата - user // Communitytoken - Строка - Токен бота чата сообщества, котрый можно получить в настройках - ct // Клавиатура - Строка - JSON клавиатуры. См.СформироватьКлавиатуру - keyboard // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция НаписатьСообщение(Знач Текст , Знач IDПользователя , Знач Communitytoken , Знач Клавиатура = "" , Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПользователя); OPI_ПреобразованиеТипов.ПолучитьСтроку(Communitytoken); OPI_ПреобразованиеТипов.ПолучитьСтроку(Клавиатура); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("access_token", Communitytoken); Параметры_.Вставить("user_id" , IDПользователя); Параметры_.Вставить("peer_id" , IDПользователя); Параметры_.Вставить("parse_mode" , "Markdown"); Параметры_.Вставить("random_id" , 0); Параметры_.Вставить("message" , Текст); Если ЗначениеЗаполнено(Клавиатура) Тогда Параметры_.Вставить("keyboard", Клавиатура); КонецЕсли; Ответ = OPI_Инструменты.Get("api.vk.com/method/messages.send", Параметры_); Возврат Ответ; КонецФункции // Написать комментарий // Создает комментарий под выбранной записью // // Параметры: // IDПоста - Строка,Число - ID целевого поста - post // IDСтены - Строка,Число - ID стены расположения поста - wall // Текст - Строка - Текст комментария - text // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция НаписатьКомментарий(Знач IDПоста, Знач IDСтены, Знач Текст, Знач Параметры = "") Экспорт Параметры_ = ПолучитьСтандартныеПараметры(Параметры); GroupId = Параметры_["group_id"]; OPI_ПреобразованиеТипов.ПолучитьСтроку(GroupId); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПоста); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСтены); OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст); Параметры_.Вставить("owner_id" , IDСтены); Параметры_.Вставить("from_group" , GroupId); Параметры_.Вставить("post_id" , IDПоста); Параметры_.Вставить("message" , Текст); Параметры_.Удалить("group_id"); Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.createComment", Параметры_); Возврат Ответ; КонецФункции // Сократить ссылку // Создает сокращенный URL из обычного // // Параметры: // URL - Строка - URL для сокращения - url // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Строка - Сокращенный URL Функция СократитьСсылку(Знач URL, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); Response = "response"; Параметры_ = Новый Структура; Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("url", URL); Ответ = OPI_Инструменты.Get("https://api.vk.com/method/utils.getShortLink", Параметры_); Результат = Ответ[Response]; Если ЗначениеЗаполнено(Результат) Тогда URL = Результат["short_url"]; Если ЗначениеЗаполнено(URL) Тогда Возврат URL; Иначе Возврат Ответ; КонецЕсли; Иначе Возврат Ответ; КонецЕсли; КонецФункции #КонецОбласти #Область Статистика // Получить статистику // Получает общую статистику сообщества за период // // Параметры: // ДатаНачала - Дата - Дата начала периода - datefrom // ДатаОкончания - Дата - Дата окончания периода - dateto // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ПолучитьСтатистику(Знач ДатаНачала, Знач ДатаОкончания, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьДату(ДатаНачала); OPI_ПреобразованиеТипов.ПолучитьДату(ДатаОкончания); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); ДатаНачала = OPI_Инструменты.UNIXTime(ДатаНачала); ДатаОкончания = OPI_Инструменты.UNIXTime(ДатаОкончания); Параметры_.Вставить("timestamp_from", ДатаНачала); Параметры_.Вставить("timestamp_to" , ДатаОкончания); Параметры_.Вставить("stats_groups" , "visitors, reach, activity"); Ответ = OPI_Инструменты.Get("api.vk.com/method/stats.get", Параметры_); Возврат Ответ; КонецФункции // Получить статистику по постам // Получает статистику в разрезе постов // // Параметры: // МассивИДПостов - Массив из Строка,Число - Массив ID постов - posts // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Массив из Произвольный - Массив данных статистики по постам Функция ПолучитьСтатистикуПостов(Знач МассивИДПостов, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивИДПостов); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); МассивОтветов = Новый Массив; МассивНабора = Новый Массив; МаксимумПостов = 30; Response = "response"; Для Каждого Пост Из МассивИДПостов Цикл МассивНабора.Добавить(OPI_Инструменты.ЧислоВСтроку(Пост)); Если МассивНабора.Количество() = МаксимумПостов Тогда СтрокаНомеров = СтрСоединить(МассивНабора, ","); Параметры_.Вставить("post_ids", СтрокаНомеров); Статистика = OPI_Инструменты.Get("api.vk.com/method/stats.getPostReach", Параметры_); МассивСтатистики = Статистика[Response]; Для Каждого ЭлементСтатистики Из МассивСтатистики Цикл МассивОтветов.Добавить(ЭлементСтатистики); КонецЦикла; МассивНабора = Новый Массив; КонецЕсли; КонецЦикла; СтрокаНомеров = СтрСоединить(МассивНабора, ","); Параметры_.Вставить("post_ids", СтрокаНомеров); Статистика = OPI_Инструменты.Get("api.vk.com/method/stats.getPostReach", Параметры_); МассивСтатистики = Статистика[Response]; Если ТипЗнч(МассивСтатистики) = Тип("Массив") Тогда Для Каждого ЭлементСтатистики Из МассивСтатистики Цикл МассивОтветов.Добавить(ЭлементСтатистики); КонецЦикла; КонецЕсли; Возврат МассивОтветов; КонецФункции #КонецОбласти #Область РаботаСРекламнымКабинетом // Создать рекламную кампанию // Создает кампанию в выбранном рекламном кабинете // // Параметры: // IDКабинета - Строка,Число - ID рекламного кабинета - cabinet // Наименование - Строка - Наименование кампании - title // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СоздатьРекламнуюКампанию(Знач IDКабинета, Знач Наименование, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета); OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); КонечнаяДата = ДобавитьМесяц(ТекущаяДата, 24); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("account_id", IDКабинета); МассивСтруктур = Новый Массив; ДатаСтарт = OPI_Инструменты.UNIXTime(ТекущаяДата); ДатаСтоп = OPI_Инструменты.UNIXTime(КонечнаяДата); СтруктураКампании = Новый Структура; СтруктураКампании.Вставить("type" , "promoted_posts"); СтруктураКампании.Вставить("name" , Наименование); СтруктураКампании.Вставить("day_limit" , 0); СтруктураКампании.Вставить("all_limit" , 0); СтруктураКампании.Вставить("start_time" , ДатаСтарт); СтруктураКампании.Вставить("stop_time" , ДатаСтоп); СтруктураКампании.Вставить("status" , 1); МассивСтруктур.Добавить(СтруктураКампании); JSONДата = OPI_Инструменты.JSONСтрокой(МассивСтруктур); Параметры_.Вставить("data", JSONДата); Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.createCampaigns", Параметры_); Возврат Ответ; КонецФункции // Создать рекламное объявление // Создает рекламное объявление на основе поста // // Параметры: // НомерКампании - Строка,Число - ID рекламной кампании - campaign // ДневнойЛимит - Строка,Число - Дневной лимит в рублях - limit // НомерКатегории - Строка,Число - Номер рекламной категории - category // IDПоста - Строка,Число - ID поста, используемого в качетсве рекламы - post // IDКабинета - Строка,Число - ID рекламного кабинета - cabinet // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СоздатьРекламноеОбъявление(Знач НомерКампании , Знач ДневнойЛимит , Знач НомерКатегории , Знач IDПоста , Знач IDКабинета , Знач Параметры = "") Экспорт Параметры_ = ПолучитьСтандартныеПараметры(Параметры); GroupId = Параметры_["group_id"]; OPI_ПреобразованиеТипов.ПолучитьСтроку(GroupId); OPI_ПреобразованиеТипов.ПолучитьСтроку(НомерКампании); OPI_ПреобразованиеТипов.ПолучитьСтроку(ДневнойЛимит); OPI_ПреобразованиеТипов.ПолучитьСтроку(НомерКатегории); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПоста); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета); Линк = "https://vk.com/wall-" + GroupId + "_" + IDПоста; МассивСтруктур = Новый Массив; СтруктураКампании = Новый Структура; СтруктураКампании.Вставить("campaign_id" , НомерКампании); СтруктураКампании.Вставить("ad_format" , 9); СтруктураКампании.Вставить("conversion_event_id" , 1); СтруктураКампании.Вставить("autobidding" , 1); СтруктураКампании.Вставить("cost_type" , 3); СтруктураКампании.Вставить("goal_type" , 2); СтруктураКампании.Вставить("ad_platform" , "all"); СтруктураКампании.Вставить("publisher_platforms" , "vk"); СтруктураКампании.Вставить("publisher_platforms_auto" , "1"); СтруктураКампании.Вставить("day_limit" , ДневнойЛимит); СтруктураКампании.Вставить("all_limit" , "0"); СтруктураКампании.Вставить("category1_id" , НомерКатегории); СтруктураКампании.Вставить("age_restriction" , 0); СтруктураКампании.Вставить("status" , 1); СтруктураКампании.Вставить("name" , "Объявление"); СтруктураКампании.Вставить("link_url" , Линк); МассивСтруктур.Добавить(СтруктураКампании); OPI_ПреобразованиеТипов.ПолучитьСтроку(МассивСтруктур, Истина); Параметры_.Вставить("data" , МассивСтруктур); Параметры_.Вставить("account_id" , IDКабинета); Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.createAds", Параметры_); Возврат Ответ; КонецФункции // Приостановить рекламное объявление // Приостанавливает показ рекламного объявления // // Параметры: // IDКабинета - Строка,Число - ID рекламного кабинета - cabinet // IDОбъявления - Строка,Число - ID объявления - adv // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ПриостановитьРекламноеОбъявление(Знач IDКабинета, Знач IDОбъявления, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDОбъявления); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("account_id", IDКабинета); МассивСтруктур = Новый Массив; СтруктураКампании = Новый Структура; СтруктураКампании.Вставить("ad_id" , IDОбъявления); СтруктураКампании.Вставить("status" , 0); МассивСтруктур.Добавить(СтруктураКампании); OPI_ПреобразованиеТипов.ПолучитьСтроку(МассивСтруктур, Истина); Параметры_.Вставить("data", МассивСтруктур); Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.updateAds", Параметры_); Возврат Ответ; КонецФункции // Получить список рекламных категорий // Получает список id рекламных категорий для создания рекламного объявления // // Параметры: // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ПолучитьСписокРекламныхКатегорий(Знач Параметры = "") Экспорт Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.getCategories", Параметры_); Возврат Ответ; КонецФункции #КонецОбласти #Область РаботаСТоварами // Получить список категорий товаров // Получает список ID товарных категорий для указания при создании товара // // Параметры: // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из Строка - Ключ - ID, Значение - Имя Функция ПолучитьСписокКатегорийТоваров(Знач Параметры = "") Экспорт Response = "response"; Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getCategories", Параметры_); Результат = Ответ[Response]; Если ЗначениеЗаполнено(Результат) Тогда Количество = Результат["count"]; Если Не ЗначениеЗаполнено(Количество) Тогда Возврат Ответ; КонецЕсли; Иначе Возврат Ответ; КонецЕсли; Параметры_.Вставить("count", Количество); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getCategories", Параметры_); Результат = Ответ[Response]; Если ЗначениеЗаполнено(Результат) Тогда Категории = Результат["items"]; Если Не ЗначениеЗаполнено(Категории) Тогда Возврат Ответ; КонецЕсли; Иначе Возврат Ответ; КонецЕсли; СоответствиеКатегорий = Новый Соответствие; Для Каждого Категория Из Категории Цикл СоответствиеКатегорий.Вставить(Категория["id"], Категория["name"]); КонецЦикла; Возврат СоответствиеКатегорий; КонецФункции // Получить список товаров // Получает список товаров сообщества // // Параметры: // Подборка - Строка,Число - ID подборки, если нужен отбор - sel // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - Массив соответствий товаров Функция ПолучитьСписокТоваров(Знач Подборка = "", Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Подборка); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("count" , 200); Параметры_.Вставить("extended" , 1); Параметры_.Вставить("with_disabled", 1); Если ЗначениеЗаполнено(Подборка) Тогда Параметры_.Вставить("album_id", Подборка); КонецЕсли; МассивТоваров = Новый Массив; ПолучитьСписокТоваровРекурсивно(МассивТоваров, Параметры_); Возврат МассивТоваров; КонецФункции // Получить товары по ID // Получает информацию о товарах по массиву ID // // Параметры: // Товары - Строка, Массив Из Строка - Массив ID товаров - items // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ПолучитьТоварыПоИД(Знач Товары, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Товары); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); СтрокаТоваров = ""; Owner = "owner_id"; Для Каждого Товар Из Товары Цикл ТекущийТовар = Параметры_[Owner] + "_" + Товар; ТекущийТовар = OPI_Инструменты.ЧислоВСтроку(ТекущийТовар); СтрокаТоваров = СтрокаТоваров + ТекущийТовар + ","; КонецЦикла; СтрокаТоваров = Лев(СтрокаТоваров, СтрДлина(СтрокаТоваров) - 1); Параметры_.Вставить("item_ids", СтрокаТоваров); Параметры_.Вставить("extended", 1); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getById", Параметры_); Возврат Ответ; КонецФункции // Добавить товар // Добавляет новый товар в каталог сообщества // // Параметры: // ОписаниеТовара - Соответствие Из КлючИЗначение - См.ПолучитьОписаниеТовара - product - JSON описание товара или путь // Подборка - Строка - ID подборка для помещения товара, если необходимо - sel // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ДобавитьТовар(Знач ОписаниеТовара, Знач Подборка = "", Знач Параметры = "") Экспорт Возврат УправлениеТоваром(ОписаниеТовара, , Подборка, Параметры); КонецФункции // Изменить товар // Изменяет ранее созданный товар // // Параметры: // Товар - Число,Строка - Идентификатор изменяемого товара - item // ОписаниеТовара - Соответствие Из КлючИЗначение - См.ПолучитьОписаниеТовара - product - JSON описание товара или путь // Подборка - Строка - Идентификатор новой подборки, если необходимо - sel // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ИзменитьТовар(Знач Товар, Знач ОписаниеТовара, Знач Подборка = "", Знач Параметры = "") Экспорт Возврат УправлениеТоваром(ОписаниеТовара, Товар, Подборка, Параметры); КонецФункции // Удалить товар // Удаляет ранее созданный товар // // Параметры: // Товар - Строка,Число - ID товара - item // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция УдалитьТовар(Знач Товар, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Товар); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("item_id", Товар); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.delete", Параметры_); Возврат Ответ; КонецФункции // Сгруппировать товары // Группирует товары на основе одинаковых наборов свойств // // Параметры: // МассивТоваров - Массив Из Строка - Массив ID товаров - items // СуществующаяГруппа - Строка - ID существующей группы, если необходимо - sellgroup // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СгруппироватьТовары(Знач МассивТоваров, Знач СуществующаяГруппа = "", Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(СуществующаяГруппа); OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивТоваров); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); МассивТоваров_ = Новый Массив; Для Каждого Товар Из МассивТоваров Цикл МассивТоваров_.Добавить(OPI_Инструменты.ЧислоВСтроку(Товар)); КонецЦикла; Товары = СтрСоединить(МассивТоваров_, ","); Параметры_.Вставить("item_ids", Товары); Если ЗначениеЗаполнено(СуществующаяГруппа) Тогда Параметры_.Вставить("item_group_id", СуществующаяГруппа); КонецЕсли; Ответ = OPI_Инструменты.Get("api.vk.com/method/market.groupItems", Параметры_); Возврат Ответ; КонецФункции // Получить описание товара. !NOCLI // // Возвращаемое значение: // Соответствие Из КлючИЗначение - Пустое описание товара: // *Имя - Строка - Имя товара // *Описание - Строка - Описание товара // *Категория - Строка - См. ПолучитьСписокКатегорийТоваров // *Цена - Число - Цена товара // *СтараяЦена - Число - Для отображения скидки/изменения цены // *ОсновноеФото - Строка,ДвоичныеДанные - Двоичные данные или путь к фото // *URL - Строка - Ссылка на страницу сайта магазина // *ДополнительныеФото - Массив Из Строка - Двоичные данные или пути к фото // *ЗначенияСвойств - Массив Из Строка - См.ДобавитьВариантСвойстваТовара // *ГлавныйВГруппе - Булево - Главный в группе, если есть в группе // *Ширина - Число - Ширина товара в мм. // *Высота - Число - Высота товара в мм. // *Глубина - Число - Глубина товара в мм. // *Вес - Число - Вес в гр. // *SKU - Строка - SKU // *ДоступныйОстаток - Число - Остаток. -1 - не ограничено Функция ПолучитьОписаниеТовара() Экспорт Товар = Новый Соответствие(); Товар.Вставить("Имя" , "Новый товар"); // Имя товара Товар.Вставить("Описание" , "Описание товара"); // Описание товара Товар.Вставить("Категория" , "20173"); // См ПолучитьСписокКатегорийТоваров() Товар.Вставить("Цена" , 1); // Цена. Товар.Вставить("СтараяЦена" , Неопределено); // Для отражения изменения цены Товар.Вставить("ОсновноеФото" , Неопределено); // ДД или путь к осн. фото Товар.Вставить("URL" , Неопределено); // Ссылка на страницу магазина Товар.Вставить("ДополнительныеФото" , Новый Массив); // Массив путей или ДД для доп. фото Товар.Вставить("ЗначенияСвойств" , Новый Массив); // Значения свойств (варианты). Максимум 2 Товар.Вставить("ГлавныйВГруппе" , Ложь); // Сделать главным в своей группе Товар.Вставить("Ширина" , Неопределено); // В миллиметрах Товар.Вставить("Высота" , Неопределено); // В миллиметрах Товар.Вставить("Глубина" , Неопределено); // В миллиметрах Товар.Вставить("Вес" , Неопределено); // В граммах Товар.Вставить("SKU" , Неопределено); // Артикул Товар.Вставить("ДоступныйОстаток" , 1); Возврат Товар; КонецФункции #КонецОбласти #Область РаботаСПодборкамиТоваров // Получить список подборок // Получает список подборок товаров // // Параметры: // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - Массив соответствий подборок Функция ПолучитьСписокПодборок(Знач Параметры = "") Экспорт Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("count", 100); МассивАльбомов = Новый Массив; ПолучитьСписокАльбомовРекурсивно(МассивАльбомов, Параметры_); Возврат МассивАльбомов; КонецФункции // Получить подборки по ID // Получить список подборок по массиву ID // // Параметры: // Подборки - Строка, Массив Из Строка - ID подборок - sels // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ПолучитьПодборкиПоИД(Знач Подборки, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Подборки); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Подборки_ = Новый Массив; СтрокаПодборок = ""; Для Каждого Подборка Из Подборки Цикл Подборки_.Добавить(OPI_Инструменты.ЧислоВСтроку(Подборка)); КонецЦикла; СтрокаПодборок = СтрСоединить(Подборки_, ","); Параметры_.Вставить("album_ids", СтрокаПодборок); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getAlbumById", Параметры_); Возврат Ответ; КонецФункции // Создать подборку товаров // Создает пустую подборку товаров // // Параметры: // Название - Строка - Название подборки - title // Картинка - Строка,ДвоичныеДанные - Файл картинки - picture // Основная - Булево - Основная - main // Скрытая - Булево - Скрытая - hidden // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СоздатьПодборкуТоваров(Знач Название , Знач Картинка , Знач Основная = Ложь , Знач Скрытая = Ложь , Знач Параметры = "") Экспорт Возврат УправлениеПодборкой(Название, Картинка, , Основная, Скрытая, Параметры); КонецФункции // Изменить подборку товаров // Изменяет свойства подборки товаров // // Параметры: // Название - Строка - Новое название подборки - title // Подборка - Строка - ID подборки - sel // Картинка - Строка,ДвоичныеДанные - Новая картинка подборки - picture // Основная - Булево - Основная - main // Скрытая - Булево - Скрытая - hidden // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ИзменитьПодборкуТоваров(Знач Название , Знач Подборка , Знач Картинка = "" , Знач Основная = Ложь , Знач Скрытая = Ложь , Знач Параметры = "") Экспорт Возврат УправлениеПодборкой(Название, Картинка, Подборка, Основная, Скрытая, Параметры); КонецФункции // Добавить товар в подборку // Добавляет товар в подборку // // Параметры: // МассивТоваров - Массив из Строка, Число - Массив товаров или товар - items // Подборка - Строка - ID подборки - sel // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ДобавитьТоварВПодборку(Знач МассивТоваров, Знач Подборка, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивТоваров); OPI_ПреобразованиеТипов.ПолучитьСтроку(Подборка); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); МассивТоваров_ = Новый Массив; Для Каждого Товар Из МассивТоваров Цикл МассивТоваров_.Добавить(OPI_Инструменты.ЧислоВСтроку(Товар)); КонецЦикла; СписокТоваров = СтрСоединить(МассивТоваров_, ","); Параметры_.Вставить("item_ids" , СписокТоваров); Параметры_.Вставить("album_ids", Подборка); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.addToAlbum", Параметры_); Возврат Ответ; КонецФункции // Удалить товар из подборки // Удаляет ранее добавленный товар из подборки // // Параметры: // Товар - Строка - ID товара - item // Подборка - Строка - ID подборки - sel // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция УдалитьТоварИзПодборки(Знач Товар, Знач Подборка, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Товар); OPI_ПреобразованиеТипов.ПолучитьСтроку(Подборка); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("item_id" , Товар); Параметры_.Вставить("album_ids", Подборка); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.removeFromAlbum", Параметры_); Возврат Ответ; КонецФункции // Удалить подборку // Удаляет подборку по ID // // Параметры: // Подборка - Строка - ID подборки - sel // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция УдалитьПодборку(Знач Подборка, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Подборка); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("album_id", Подборка); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.deleteAlbum", Параметры_); Возврат Ответ; КонецФункции #КонецОбласти #Область РаботаСоСвойствамиТоваров // Получить список свойств // Получает список свойств товаров группы // // Параметры: // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ПолучитьСписокСвойств(Знач Параметры = "") Экспорт Response = "response"; Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getProperties", Параметры_); Свойства = Ответ[Response]["items"]; Возврат Свойства; КонецФункции // Создать свойство товара // Создает новое свойство для использования в товарах // // Параметры: // Название - Строка - Название свойства - title // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция СоздатьСвойствоТовара(Знач Название, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Название); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("title", Название); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.addProperty", Параметры_); Возврат Ответ; КонецФункции // Изменить свойство товара // Изменяет существующее свойство товара // // Параметры: // Название - Строка - Новое название - title // Свойство - Строка,Число - ID свойства - prop // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ИзменитьСвойствоТовара(Знач Название, Знач Свойство, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Название); OPI_ПреобразованиеТипов.ПолучитьСтроку(Свойство); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("title" , Название); Параметры_.Вставить("property_id", Свойство); Параметры_.Вставить("type" , "text"); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.editProperty", Параметры_); Возврат Ответ; КонецФункции // Удалить свойство товара // Удаляет существующее свойство товара // // Параметры: // Свойство - Строка,Число - ID свойства - prop // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция УдалитьСвойствоТовара(Знач Свойство, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Свойство); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("property_id", Свойство); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.deleteProperty", Параметры_); Возврат Ответ; КонецФункции // Добавить вариант свойства товара // Добавляет вариант для существующего свойства // // Параметры: // Значение - Строка - Значение свойства - value // Свойство - Строка,Число - ID свойства, куда добавляется вариант - prop // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ДобавитьВариантСвойстваТовара(Знач Значение, Знач Свойство, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Свойство); OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("property_id", Свойство); Параметры_.Вставить("title" , Значение); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.addPropertyVariant", Параметры_); Возврат Ответ; КонецФункции // Изменить вариант свойства товара // Изменяет значение варианта существующего свойства товара // // Параметры: // Значение - Строка - Новое значение свойства - value // Свойство - Строка,Число - ID свойства - prop // Вариант - Строка,Число - ID варианта - option // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ИзменитьВариантСвойстваТовара(Знач Значение, Знач Свойство, Знач Вариант, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); OPI_ПреобразованиеТипов.ПолучитьСтроку(Свойство); OPI_ПреобразованиеТипов.ПолучитьСтроку(Вариант); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("property_id", Свойство); Параметры_.Вставить("variant_id" , Вариант); Параметры_.Вставить("title" , Значение); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.editPropertyVariant", Параметры_); Возврат Ответ; КонецФункции // Удалить вариант свойства товара // Удаляет ранее созданный вариант свойства // // Параметры: // Вариант - Строка,Число - ID варианта - option // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция УдалитьВариантСвойстваТовара(Знач Вариант, Знач Параметры = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Вариант); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("variant_id", Вариант); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.deletePropertyVariant", Параметры_); Возврат Ответ; КонецФункции #КонецОбласти #Область РаботаСЗаказами // Получить список заказов // Возвращает список заказов сообщества // // Параметры: // Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Функция ПолучитьСписокЗаказов(Знач Параметры = "") Экспорт Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("count", 50); МассивЗаказов = Новый Массив; ПолучитьСписокЗаказовРекурсивно(МассивЗаказов, Параметры_); Возврат МассивЗаказов; КонецФункции #КонецОбласти #Область Прочие // Сформировать клавиатуру // Формирует клавиатуру по массиву кнопок // // Параметры: // МассивКнопок - Массив из Строка - Массив заголовков кнопок - buttons // // Возвращаемое значение: // Строка - JSON клавиатуры Функция СформироватьКлавиатуру(Знач МассивКнопок) Экспорт OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивКнопок); Клавиатура = Новый Структура; МассивКлавиатуры = Новый Массив; МассивБлока = Новый Массив; Для Каждого Действие Из МассивКнопок Цикл Кнопка = Новый Структура; Выражение = Новый Структура; Выражение.Вставить("type" , "text"); Выражение.Вставить("label", Действие); Кнопка.Вставить("action", Выражение); МассивБлока.Добавить(Кнопка); КонецЦикла; МассивКлавиатуры.Добавить(МассивБлока); Клавиатура.Вставить("buttons" , МассивКлавиатуры); Клавиатура.Вставить("one_time", Ложь); Возврат OPI_Инструменты.JSONСтрокой(Клавиатура); КонецФункции #КонецОбласти #КонецОбласти #Область СлужебныеПроцедурыИФункции Функция ПолучитьСтандартныеПараметры(Знач Параметры = "") // Здесь собрано определение данных для работы с VK API // Вы можете переопределять их, передавая в качестве параметра // Совпадающие поля будут перезаписаны с приоритетом параметра функции Параметры_ = Новый Структура; // access_token - можно получить в браузере по URL из функции СоздатьСсылкуПолученияТокена() // from_group - действия будут выполняться от лица группы // owner_id - id группы с "-" в начале. Можно найти в настройках группы ВК или в ее URL, если не был // установлен свой // app_id - id приложения, которое необходимо создать в профиле на странице для разработчиков // group_id - owner_id, но без "-" Параметры_.Вставить("access_token" , ""); Параметры_.Вставить("from_group" , "1"); Параметры_.Вставить("owner_id" , ""); Параметры_.Вставить("v" , "5.131"); Параметры_.Вставить("app_id" , ""); Параметры_.Вставить("group_id" , ""); OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Параметры); Если ТипЗнч(Параметры) = Тип("Структура") Или ТипЗнч(Параметры) = Тип("Соответствие") Тогда Для Каждого ПереданныйПараметр Из Параметры Цикл Параметры_.Вставить(ПереданныйПараметр.Ключ, OPI_Инструменты.ЧислоВСтроку(ПереданныйПараметр.Значение)); КонецЦикла; КонецЕсли; Возврат Параметры_; КонецФункции Функция ПолучитьИДКартинки(Знач Картинка, Знач Параметры, Знач Вид) Response = "response"; Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры, Вид); Результат = Ответ[Response]; Если ЗначениеЗаполнено(Результат) Тогда ИДФото = Результат["photo_id"]; Если Не ЗначениеЗаполнено(ИДФото) Тогда Возврат Ответ; КонецЕсли; Иначе Возврат Ответ; КонецЕсли; ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото); Возврат ИДФото; КонецФункции Функция ПолучитьСоответствиеКартинки(Знач Картинка, Знач Параметры, Знач Вид) Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры, Вид); ОтветМассив = Ответ.Получить("response"); Если Не ЗначениеЗаполнено(ОтветМассив) Или Не ТипЗнч(ОтветМассив) = Тип("Массив") Тогда Возврат Ответ; Иначе Если ОтветМассив.Количество() = 0 Тогда Возврат Ответ; Иначе ОтветСоответствие = ОтветМассив[0]; КонецЕсли; КонецЕсли; Возврат ОтветСоответствие; КонецФункции Функция ПолучитьМассивПодборок(Знач Подборки, Знач Параметры = "") Response = "response"; Подборки = ПолучитьПодборкиПоИД(Подборки, Параметры); Результат = Подборки[Response]; Если ЗначениеЗаполнено(Результат) Тогда МассивПодборок = Результат["items"]; Если Не ЗначениеЗаполнено(МассивПодборок) Тогда Возврат Подборки; КонецЕсли; Иначе Возврат Подборки; КонецЕсли; Возврат МассивПодборок; КонецФункции Функция ЗагрузитьФотоНаСервер(Знач Картинка, Знач Параметры, Знач Вид = "Пост") Метод = ОпределитьМетодЗагрузкиИзображений(Вид); Файлы = Новый Соответствие; Response = "response"; URL = "api.vk.com/method/"; Загрузка = URL + Метод["Загрузка"]; Сохранение = URL + Метод["Сохранение"]; Если ТипЗнч(Картинка) = Тип("Строка") Тогда КлючКартинка = СтрЗаменить(Картинка, ".", "___"); OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); Иначе КлючКартинка = "image___jpeg"; КонецЕсли; Файлы.Вставить(КлючКартинка, Картинка); Для Н = 1 По 5 Цикл Ответ = OPI_Инструменты.Get(Загрузка, Параметры); Результат = Ответ[Response]; Если ЗначениеЗаполнено(Результат) Тогда URL = Результат["upload_url"]; Если Не ЗначениеЗаполнено(URL) Тогда Возврат Ответ; КонецЕсли; Иначе Возврат Ответ; КонецЕсли; Параметры.Вставить("upload_url", URL); Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, Файлы); Если ТипЗнч(Ответ) = Тип("Соответствие") Тогда Прервать; КонецЕсли; КонецЦикла; Если ТипЗнч(Ответ) <> Тип("Соответствие") Тогда Возврат ПолучитьСтрокуИзДвоичныхДанных(Ответ); КонецЕсли; ЗаполнитьПараметрыЗагрузкиФото(Метод, Ответ, Параметры); Ответ = OPI_Инструменты.Get(Сохранение, Параметры); Возврат Ответ; КонецФункции Функция ОпределитьМетодЗагрузкиИзображений(Знач Вид) СоответствиеМетодов = Новый Соответствие; Загрузка = "Загрузка"; Сохранение = "Сохранение"; Способ = "Способ"; Фото = "Фото"; Если Вид = "Пост" Тогда СоответствиеМетодов.Вставить(Загрузка , "photos.getWallUploadServer"); СоответствиеМетодов.Вставить(Сохранение, "photos.saveWallPhoto"); СоответствиеМетодов.Вставить(Фото , "photo"); СоответствиеМетодов.Вставить(Способ , 1); ИначеЕсли Вид = "Товар" Тогда СоответствиеМетодов.Вставить(Загрузка , "market.getProductPhotoUploadServer"); СоответствиеМетодов.Вставить(Сохранение, "market.saveProductPhoto"); СоответствиеМетодов.Вставить(Способ , 2); ИначеЕсли Вид = "История" Тогда СоответствиеМетодов.Вставить(Загрузка , "stories.getPhotoUploadServer"); СоответствиеМетодов.Вставить(Сохранение, "stories.save"); СоответствиеМетодов.Вставить(Способ , 3); ИначеЕсли Вид = "Опрос" Тогда СоответствиеМетодов.Вставить(Загрузка , "polls.getPhotoUploadServer"); СоответствиеМетодов.Вставить(Сохранение, "polls.savePhoto"); СоответствиеМетодов.Вставить(Фото , "photo"); СоответствиеМетодов.Вставить(Способ , 1); Иначе СоответствиеМетодов.Вставить(Загрузка , "photos.getUploadServer"); СоответствиеМетодов.Вставить(Сохранение, "photos.save"); СоответствиеМетодов.Вставить(Фото , "photos_list"); СоответствиеМетодов.Вставить(Способ , 1); КонецЕсли; Возврат СоответствиеМетодов; КонецФункции Функция ПолучитьСоответствиеПараметровТовара() Поля = Новый Соответствие(); Поля.Вставить("Имя" , "name"); Поля.Вставить("Описание" , "description"); Поля.Вставить("Категория" , "category_id"); Поля.Вставить("Цена" , "price"); Поля.Вставить("СтараяЦена" , "old_price"); Поля.Вставить("URL" , "url"); Поля.Вставить("ГлавныйВГруппе" , "is_main_variant"); Поля.Вставить("Ширина" , "dimension_width"); Поля.Вставить("Высота" , "dimension_height"); Поля.Вставить("Глубина" , "dimension_length"); Поля.Вставить("Вес" , "weight"); Поля.Вставить("SKU" , "sku"); Поля.Вставить("ДоступныйОстаток" , "stock_amount"); Возврат Поля; КонецФункции Функция УправлениеТоваром(Знач ОписаниеТовара, Знач ИДТовара = "", Знач Подборка = "", Знач Параметры = "") OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДТовара); OPI_ПреобразованиеТипов.ПолучитьСтроку(Подборка); OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеТовара); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("v", "5.199"); Response = "response"; ЗаполнитьПоляЗапросаТовара(ОписаниеТовара, Параметры_); Если ЗначениеЗаполнено(ИДТовара) Тогда Параметры_.Вставить("item_id", ИДТовара); Метод = "edit"; Иначе Метод = "add"; КонецЕсли; Ответ = OPI_Инструменты.Get("api.vk.com/method/market." + Метод, Параметры_); Результат = Ответ[Response]; Если Не ЗначениеЗаполнено(ИДТовара) И ЗначениеЗаполнено(Результат) Тогда ИДТовара = Результат["market_item_id"]; Если Не ЗначениеЗаполнено(ИДТовара) Тогда Возврат Ответ; КонецЕсли; Иначе Возврат Ответ; КонецЕсли; Если ЗначениеЗаполнено(Подборка) И ЗначениеЗаполнено(ИДТовара) Тогда ДобавитьТоварВПодборку(ИДТовара, Подборка, Параметры_); КонецЕсли; Возврат Ответ; КонецФункции Функция УправлениеПодборкой(Знач Название , Знач Картинка = "" , Знач ИДПодборки = "" , Знач Основная = Ложь , Знач Скрытая = Ложь , Знач Параметры = "") OPI_ПреобразованиеТипов.ПолучитьСтроку(Название); OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДПодборки); OPI_ПреобразованиеТипов.ПолучитьБулево(Основная); OPI_ПреобразованиеТипов.ПолучитьБулево(Скрытая); Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Ответ = ДобавитьПараметрКартинки(Картинка, ИДПодборки, Параметры_); Если ЗначениеЗаполнено(Ответ) Тогда Возврат Ответ; КонецЕсли; Параметры_.Вставить("title" , Название); Параметры_.Вставить("main_album" , ?(Основная, 1, 0)); Параметры_.Вставить("is_hidden" , ?(Скрытая, 1, 0)); Если ЗначениеЗаполнено(ИДПодборки) Тогда Параметры_.Вставить("album_id", ИДПодборки); Метод = "editAlbum"; Иначе Метод = "addAlbum"; КонецЕсли; Ответ = OPI_Инструменты.Get("api.vk.com/method/market." + Метод, Параметры_); Возврат Ответ; КонецФункции Функция ДобавитьПараметрКартинки(Знач Картинка, Знач ИДПодборки, Параметры) PhotoID = "photo_id"; Если ЗначениеЗаполнено(Картинка) Тогда ИДФото = ПолучитьИДКартинки(Картинка, Параметры, "Товар"); Если Не ТипЗнч(ИДФото) = Тип("Строка") Тогда Возврат ИДФото; КонецЕсли; Параметры.Вставить(PhotoID, ИДФото); Иначе Если ЗначениеЗаполнено(ИДПодборки) Тогда Подборки = ПолучитьМассивПодборок(ИДПодборки, Параметры); Если Не ТипЗнч(Подборки) = Тип("Массив") Тогда Возврат Подборки; КонецЕсли; Если Не Подборки.Количество() = 0 Тогда ИДФото = Подборки[0]["photo"]["id"]; OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДФото); Параметры.Вставить(PhotoID, ИДФото); КонецЕсли; КонецЕсли; КонецЕсли; Возврат ""; КонецФункции Процедура ЗаполнитьПараметрыЗагрузкиФото(Знач Метод, Знач Ответ, Параметры) Response = "response"; Способ = Метод["Способ"]; СтандартныйСпособ = 1; НовыйСпособ = 2; Если Способ = СтандартныйСпособ Тогда Hash = "hash"; Serv = "server"; Aid = "aid"; Фото = Метод["Фото"]; Параметры.Вставить(Hash, Ответ[Hash]); Параметры.Вставить(Фото, Ответ[Фото]); СерверФото = Ответ.Получить(Serv); Если ЗначениеЗаполнено(СерверФото) Тогда СерверФото = OPI_Инструменты.ЧислоВСтроку(СерверФото); Параметры.Вставить(Serv, СерверФото); КонецЕсли; Идентификатор = Ответ.Получить(Aid); Если ЗначениеЗаполнено(Идентификатор) Тогда Идентификатор = OPI_Инструменты.ЧислоВСтроку(Идентификатор); Параметры.Вставить(Aid , Идентификатор); КонецЕсли; ИначеЕсли Способ = НовыйСпособ Тогда ОтветСтрокой = OPI_Инструменты.JSONСтрокой(Ответ); Параметры.Вставить("upload_response", ОтветСтрокой); Иначе Параметры.Вставить("upload_results", Ответ[Response]["upload_result"]); КонецЕсли; КонецПроцедуры Процедура ЗаполнитьПоляЗапросаТовара(Знач ОписаниеТовара, Параметры) Response = "response"; ОсновноеФото = ОписаниеТовара["ОсновноеФото"]; ДопФото = ОписаниеТовара["ДополнительныеФото"]; Свойства = ОписаниеТовара["ЗначенияСвойств"]; Если ЗначениеЗаполнено(ОсновноеФото) Тогда Ответ = ЗагрузитьФотоНаСервер(ОсновноеФото, Параметры, "Товар"); Результат = Ответ[Response]; Если ЗначениеЗаполнено(Результат) Тогда ИДФото = Результат["photo_id"]; Если Не ЗначениеЗаполнено(ИДФото) Тогда Возврат; КонецЕсли; Иначе Возврат; КонецЕсли; ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото); Параметры.Вставить("main_photo_id", ИДФото); КонецЕсли; Если ТипЗнч(Свойства) = Тип("Массив") Тогда Свойства_ = Новый Массив; Для Каждого Свойство Из Свойства Цикл Свойства_.Добавить(OPI_Инструменты.ЧислоВСтроку(Свойство)); КонецЦикла; Свойства = СтрСоединить(Свойства_, ","); КонецЕсли; Если ЗначениеЗаполнено(Свойства) Тогда Параметры.Вставить("variant_ids", OPI_Инструменты.ЧислоВСтроку(Свойства)); КонецЕсли; ДобавитьДополнительныеФотоТовара(ДопФото, Параметры); Для Каждого Поле Из ПолучитьСоответствиеПараметровТовара() Цикл Значение = ОписаниеТовара[Поле.Ключ]; Если Значение <> Неопределено Тогда Параметры.Вставить(Поле.Значение, ОписаниеТовара[Поле.Ключ]); КонецЕсли; КонецЦикла; КонецПроцедуры Процедура ДобавитьДополнительныеФотоТовара(Знач МассивФото, Параметры) Если ТипЗнч(МассивФото) = Тип("Массив") Тогда Если МассивФото.Количество() > 0 Тогда СтрокаФотографий = ""; Для Каждого Фото Из МассивФото Цикл ИДФото = ПолучитьИДКартинки(Фото, Параметры, "Товар"); Если Не ТипЗнч(ИДФото) = Тип("Строка") Тогда Возврат; КонецЕсли; СтрокаФотографий = СтрокаФотографий + ИДФото + ","; КонецЦикла; СтрокаФотографий = Лев(СтрокаФотографий, СтрДлина(СтрокаФотографий) - 1); Параметры.Вставить("photo_ids", СтрокаФотографий); КонецЕсли; КонецЕсли; КонецПроцедуры Процедура ПолучитьСписокТоваровРекурсивно(МассивТоваров, Параметры, Сдвиг = 0) Response = "response"; МаксимумВЗапросе = 200; Ответ = OPI_Инструменты.Get("api.vk.com/method/market.get", Параметры); Товары = Ответ[Response]["items"]; Если Товары.Количество() = 0 Тогда Возврат; КонецЕсли; Для Каждого Товар Из Товары Цикл МассивТоваров.Добавить(Товар); КонецЦикла; Сдвиг = Сдвиг + МаксимумВЗапросе; Параметры.Вставить("offset", Сдвиг); ПолучитьСписокТоваровРекурсивно(МассивТоваров, Параметры, Сдвиг); КонецПроцедуры Процедура ПолучитьСписокАльбомовРекурсивно(МассивАльбомов, Параметры, Сдвиг = 0) Response = "response"; МаксимумВЗапросе = 100; Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getAlbums", Параметры); Альбомы = Ответ[Response]["items"]; Если Альбомы.Количество() = 0 Тогда Возврат; КонецЕсли; Для Каждого Альбом Из Альбомы Цикл МассивАльбомов.Добавить(Альбом); КонецЦикла; Сдвиг = Сдвиг + МаксимумВЗапросе; Параметры.Вставить("offset", Сдвиг); ПолучитьСписокАльбомовРекурсивно(МассивАльбомов, Параметры, Сдвиг); КонецПроцедуры Процедура ПолучитьСписокЗаказовРекурсивно(МассивЗаказов, Параметры, Сдвиг = 0) Response = "response"; МаксимумВЗапросе = 50; Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getGroupOrders", Параметры); Заказы = Ответ[Response]["items"]; Если Заказы.Количество() = 0 Тогда Возврат; КонецЕсли; Для Каждого Заказ Из Заказы Цикл МассивЗаказов.Добавить(Заказ); КонецЦикла; Сдвиг = Сдвиг + МаксимумВЗапросе; Параметры.Вставить("offset", Сдвиг); ПолучитьСписокЗаказовРекурсивно(МассивЗаказов, Параметры, Сдвиг); КонецПроцедуры #КонецОбласти