mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-12-16 11:38:11 +02:00
1891 lines
106 KiB
Plaintext
1891 lines
106 KiB
Plaintext
// 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
|
|
|
|
//@skip-check method-too-many-params
|
|
|
|
// Раскомментировать, если выполняется OneScript
|
|
#Использовать "../../tools"
|
|
|
|
#Область ПрограммныйИнтерфейс
|
|
|
|
#Область ПолучениеТокена
|
|
|
|
// Создать ссылку получения токена
|
|
// Получение ссылки для интерактивного получения токена (access_token), который необходим
|
|
// для дальнейших действий
|
|
//
|
|
// Параметры:
|
|
// app_id - Строка,Число - app_id из настроек приложения - app
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка - URL, по которому необходимо перейти в браузере
|
|
Функция СоздатьСсылкуПолученияТокена(Знач App_id) Экспорт
|
|
|
|
// access_token нужно будет забрать из параметра в строке адреса браузера
|
|
Возврат "https://oauth.vk.com/authorize?client_id=" + OPI_Инструменты.ЧислоВСтроку(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";
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#Область РаботаСГруппой
|
|
|
|
// Создать пост
|
|
// Создает пост с картинками
|
|
//
|
|
// Пример строки массива картинок:
|
|
// --pictures ""['C:\Картинка1.png', 'https:\\exemple.com\Картинка2.png']""
|
|
//
|
|
// Параметры:
|
|
// Текст - Строка - Текст поста - text
|
|
// МассивКартинок - Массив из Строка,ДвоичныеДанные - Массив картинок - pictures - Массив
|
|
// Рекламный - Булево - Признак ""Это реклама"" (Ложь по ум.) - ad
|
|
// СсылкаПодЗаписью - Строка - Ссылка (URL) под записью (необяз.) - url
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СоздатьПост(Знач Текст
|
|
, Знач МассивКартинок
|
|
, Знач Рекламный = Ложь
|
|
, Знач СсылкаПодЗаписью = ""
|
|
, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
СтрокаВложений = "";
|
|
|
|
Если Не ТипЗнч(МассивКартинок) = Тип("Массив") Тогда
|
|
|
|
ОднаКартинка = МассивКартинок;
|
|
МассивКартинок = Новый Массив;
|
|
МассивКартинок.Добавить(ОднаКартинка);
|
|
|
|
КонецЕсли;
|
|
|
|
Для Каждого КартинкаПоста Из МассивКартинок Цикл
|
|
|
|
Ответ = ЗагрузитьФотоНаСервер(КартинкаПоста, Параметры_);
|
|
|
|
ОтветСоответствие = Ответ.Получить("response")[0];
|
|
|
|
ФотоID = "photo"
|
|
+ OPI_Инструменты.ЧислоВСтроку(ОтветСоответствие.Получить("owner_id"))
|
|
+ "_"
|
|
+ OPI_Инструменты.ЧислоВСтроку(ОтветСоответствие.Получить("id"));
|
|
|
|
СтрокаВложений = СтрокаВложений + Фото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
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция УдалитьПост(Знач IDПоста, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("post_id", OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.delete", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Создать опрос
|
|
// Создает опрос с вариантами ответа
|
|
//
|
|
// Параметры:
|
|
// Вопрос - Строка - Вопрос опроса - question
|
|
// МассивОтветов - Массив из Строка - Массив вариантов ответа - options - Массив
|
|
// Картинка - Строка,ДвоичныеДанные - Картинка опроса - path
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СоздатьОпрос(Знач Вопрос, Знач МассивОтветов, Знач Картинка = "", Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/polls.getPhotoUploadServer", Параметры_);
|
|
Response = "response";
|
|
Hash = "hash";
|
|
Photo = "photo";
|
|
URL = Ответ[Response]["upload_url"];
|
|
IDФото = "";
|
|
|
|
Параметры_.Вставить("upload_url", URL);
|
|
|
|
Если Не Картинка = "" Тогда
|
|
|
|
Если ТипЗнч(Картинка) = Тип("Строка") Тогда
|
|
Путь = Картинка;
|
|
Картинка = OPI_Инструменты.ПолучитьДвоичныеДанные(Картинка);
|
|
Иначе
|
|
Путь = ("image.jpeg");
|
|
КонецЕсли;
|
|
|
|
Файлы = Новый Соответствие;
|
|
Файлы.Вставить(Путь, Картинка);
|
|
|
|
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, Файлы);
|
|
|
|
Параметры_.Вставить(Hash , Ответ[Hash]);
|
|
Параметры_.Вставить(Photo, Ответ[Photo]);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/polls.savePhoto", Параметры_);
|
|
IDФото = Ответ.Получить(Response)["id"];
|
|
|
|
КонецЕсли;
|
|
|
|
Параметры_.Вставить("is_anonymous", 1);
|
|
Параметры_.Вставить("is_multiple" , 0);
|
|
|
|
Ответы = "[";
|
|
Первый = Истина;
|
|
|
|
Для Каждого Ответ Из МассивОтветов Цикл
|
|
|
|
Если Первый Тогда
|
|
Первый = Ложь;
|
|
Иначе
|
|
Ответы = Ответы + ", ";
|
|
КонецЕсли;
|
|
|
|
Ответы = Ответы + """" + Ответ + """";
|
|
|
|
КонецЦикла;
|
|
|
|
Ответы = Ответы + "]";
|
|
|
|
Параметры_.Вставить("add_answers", Ответы);
|
|
Параметры_.Вставить("photo_id" , OPI_Инструменты.ЧислоВСтроку(IDФото));
|
|
Параметры_.Вставить("question" , Вопрос);
|
|
|
|
Опрос = OPI_Инструменты.Get("api.vk.com/method/polls.create", Параметры_);
|
|
ОпросСоответствие = Опрос.Получить(Response);
|
|
|
|
ОпросID = "poll"
|
|
+ OPI_Инструменты.ЧислоВСтроку(ОпросСоответствие.Получить("owner_id"))
|
|
+ "_"
|
|
+ OPI_Инструменты.ЧислоВСтроку(ОпросСоответствие.Получить("id"));
|
|
|
|
Параметры_.Вставить("attachments", ОпросID);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Создать альбом
|
|
// Создает альбом для хранения картинок
|
|
//
|
|
// Параметры:
|
|
// Наименование - Строка - Наименование альбома - name
|
|
// Описание - Строка - Описание альбома - description
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СоздатьАльбом(Знач Наименование, Знач Описание = "", Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
|
|
Параметры_.Вставить("title" , Наименование);
|
|
Параметры_.Вставить("description" , Описание);
|
|
Параметры_.Вставить("upload_by_admins_only", 1);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.createAlbum", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Удалить альбом
|
|
// Удаляет ранее созданный альбом
|
|
//
|
|
// Параметры:
|
|
// IDАльбома - Строка,Число - ID альбома - album
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция УдалитьАльбом(Знач IDАльбома, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("album_id", OPI_Инструменты.ЧислоВСтроку(IDАльбома));
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.deleteAlbum", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Создать историю
|
|
// Создает историю из картинки
|
|
//
|
|
// Параметры:
|
|
// Картинка - Строка,ДвоичныеДанные - Фон истории - path
|
|
// URL - Строка - URL для кнопки под историей (необяз.) - url
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СоздатьИсторию(Знач Картинка, Знач URL = "", Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("link_text" , "more");
|
|
Параметры_.Вставить("link_url" , URL);
|
|
Параметры_.Вставить("add_to_news", "1");
|
|
|
|
Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры_, "История");
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Сохранить картинку в альбом
|
|
// Сохраняет картинку в альбом сообщества
|
|
//
|
|
// Параметры:
|
|
// IDАльбома - Строка,Число - ID альбома - album
|
|
// Картинка - ДвоичныеДанные,Строка - Файл картинки - path
|
|
// Описание - Строка - Описание картинки - description
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СохранитьКартинкуВАльбом(Знач IDАльбома, Знач Картинка, Знач Описание = "", Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
|
|
Параметры_.Вставить("album_id", OPI_Инструменты.ЧислоВСтроку(IDАльбома));
|
|
Параметры_.Вставить("caption" , Описание);
|
|
|
|
Возврат ЗагрузитьФотоНаСервер(Картинка, Параметры_, "Альбом");
|
|
|
|
КонецФункции
|
|
|
|
// Удалить картинку
|
|
// Удалить картинку из альбома
|
|
//
|
|
// Параметры:
|
|
// IDКартинки - Строка,Число - ID картинки - picture
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция УдалитьКартинку(Знач IDКартинки, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("photo_id", OPI_Инструменты.ЧислоВСтроку(IDКартинки));
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.delete", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#Область РаботаСОбсуждениями
|
|
|
|
// Создать обсуждение
|
|
// Создает новое обсуждение
|
|
//
|
|
// Параметры:
|
|
// Наименование - Строка - Наименование обсуждения - name
|
|
// ТекстПервогоСообщения - Строка - Текст первого сообщения - message
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СоздатьОбсуждение(Знач Наименование, Знач ТекстПервогоСообщения, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("title", Наименование);
|
|
Параметры_.Вставить("text" , ТекстПервогоСообщения);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/board.addTopic", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Закрыть обсуждение
|
|
// Закрывает или удаляет обсуждение
|
|
//
|
|
// Параметры:
|
|
// IDОбсуждения - Строка,Число - ID обсуждения - topic
|
|
// УдалитьПолностью - Булево - Удалить полностью (Истина) или закрыть (Ложь, по ум.) - remove
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ЗакрытьОбсуждение(Знач IDОбсуждения, Знач УдалитьПолностью = Ложь, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("topic_id", OPI_Инструменты.ЧислоВСтроку(IDОбсуждения));
|
|
|
|
Метод = ?(УдалитьПолностью, "deleteTopic", "closeTopic");
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/board." + Метод, Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Открыть обсуждение
|
|
// Открывает ранее закрытое обсуждение
|
|
//
|
|
// Параметры:
|
|
// IDОбсуждения - Строка,Число - ID обсуждения - topic
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ОткрытьОбсуждение(Знач IDОбсуждения, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("topic_id", OPI_Инструменты.ЧислоВСтроку(IDОбсуждения));
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/board.openTopic", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Написать в обсуждение
|
|
// Добавляет сообщение в обсуждение от имени группы
|
|
//
|
|
// Параметры:
|
|
// IDОбсуждения - Строка,Число - ID обсуждения - topic
|
|
// Текст - Строка - Текст сообщения - message
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция НаписатьВОбсуждение(Знач IDОбсуждения, Знач Текст, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("topic_id", OPI_Инструменты.ЧислоВСтроку(IDОбсуждения));
|
|
Параметры_.Вставить("message" , Текст);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/board.createComment", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#Область ИнтерактивныеДействия
|
|
|
|
// Поставить лайк
|
|
// Ставит лайк на пост
|
|
//
|
|
// Параметры:
|
|
// IDПоста - Строка,Число - ID поста - post
|
|
// IDСтены - Строка,Число - ID стены расположения поста - wall
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ПоставитьЛайк(Знач IDПоста, Знач IDСтены = "", Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
IDСтены = ?(ЗначениеЗаполнено(IDСтены), IDСтены, Параметры_["owner_id"]);
|
|
ОбъектВК = "wall" + OPI_Инструменты.ЧислоВСтроку(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
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СделатьРепост(Знач IDПоста
|
|
, Знач IDСтены = ""
|
|
, Знач ЦелеваяСтена = ""
|
|
, Знач Рекламный = Ложь
|
|
, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
|
|
Источник = ?(ЗначениеЗаполнено(IDСтены)
|
|
, OPI_Инструменты.ЧислоВСтроку(IDСтены)
|
|
, OPI_Инструменты.ЧислоВСтроку(Параметры_["owner_id"]));
|
|
|
|
Приемник = ?(ЗначениеЗаполнено(ЦелеваяСтена)
|
|
, СтрЗаменить(OPI_Инструменты.ЧислоВСтроку(ЦелеваяСтена), "-", "")
|
|
, OPI_Инструменты.ЧислоВСтроку(Параметры_["group_id"]));
|
|
|
|
Параметры_.Вставить("object" , "wall" + Источник + "_" + OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
|
Параметры_.Вставить("group_id" , Приемник);
|
|
Параметры_.Вставить("mark_as_ads" , ?(Рекламный, 1, 0));
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.repost", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Написать сообщение
|
|
// Написать сообщение пользователю в диалоге сообщества
|
|
//
|
|
// Параметры:
|
|
// Текст - Строка - Текст сообщения - message
|
|
// IDПользователя - Строка - ID пользователя адресата - user
|
|
// Communitytoken - Строка - Токен бота чата сообщества, котрый можно получить в настройках - ct
|
|
// Клавиатура - Строка - JSON клавиатуры. См.СформироватьКлавиатуру - keyboard
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция НаписатьСообщение(Знач Текст
|
|
, Знач IDПользователя
|
|
, Знач Communitytoken
|
|
, Знач Клавиатура = ""
|
|
, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("access_token", Communitytoken);
|
|
|
|
Параметры_.Вставить("user_id" , OPI_Инструменты.ЧислоВСтроку(IDПользователя));
|
|
Параметры_.Вставить("peer_id" , OPI_Инструменты.ЧислоВСтроку(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
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция НаписатьКомментарий(Знач IDПоста, Знач IDСтены, Знач Текст, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
|
|
Параметры_.Вставить("owner_id" , OPI_Инструменты.ЧислоВСтроку(IDСтены));
|
|
Параметры_.Вставить("from_group" , OPI_Инструменты.ЧислоВСтроку(Параметры_["group_id"]));
|
|
Параметры_.Вставить("post_id" , OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
|
Параметры_.Вставить("message" , Текст);
|
|
|
|
Параметры_.Удалить("group_id");
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.createComment", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Сократить ссылку
|
|
// Создает сокращенный URL из обычного
|
|
//
|
|
// Параметры:
|
|
// URL - Строка - URL для сокращения - url
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка - Сокращенный URL
|
|
Функция СократитьСсылку(Знач URL, Знач Параметры = "") Экспорт
|
|
|
|
Response = "response";
|
|
Параметры_ = Новый Структура;
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("url", URL);
|
|
|
|
Ответ = OPI_Инструменты.Get("https://api.vk.com/method/utils.getShortLink", Параметры_);
|
|
|
|
Возврат Ответ[Response]["short_url"];
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#Область Статистика
|
|
|
|
// Получить статистику
|
|
// Получает общую статистику сообщества за период
|
|
//
|
|
// Параметры:
|
|
// ДатаНачала - Дата - Дата начала периода - datefrom
|
|
// ДатаОкончания - Дата - Дата окончания периода - dateto
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ПолучитьСтатистику(Знач ДатаНачала, Знач ДатаОкончания, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
|
|
ДатаНачала = Формат(ДатаНачала - Дата(1970, 1, 1, 1, 0, 0), "ЧГ=0");
|
|
ДатаОкончания = Формат(ДатаОкончания - дата(1970, 1, 1, 1, 0, 0), "ЧГ=0");
|
|
|
|
Параметры_.Вставить("timestamp_from", ДатаНачала);
|
|
Параметры_.Вставить("timestamp_to" , ДатаОкончания);
|
|
Параметры_.Вставить("stats_groups" , "visitors, reach, activity");
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/stats.get", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Получить статистику по постам
|
|
// Получает статистику в разрезе постов
|
|
//
|
|
// Пример строки массива постов:
|
|
// --posts ""['1111111','2222222']""
|
|
// Параметры:
|
|
// МассивИДПостов - Массив из Строка,Число - Массив ID постов - posts - Массив
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Массив из Произвольный - Массив данных статистики по постам
|
|
Функция ПолучитьСтатистикуПостов(Знач МассивИДПостов, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
МассивОтветов = Новый Массив;
|
|
МассивНабора = Новый Массив;
|
|
МаксимумПостов = 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
|
|
// Наименование - Строка - Наименование кампании - name
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СоздатьРекламнуюКампанию(Знач IDКабинета, Знач Наименование, Знач Параметры = "") Экспорт
|
|
|
|
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("account_id", OPI_Инструменты.ЧислоВСтроку(IDКабинета));
|
|
|
|
МассивСтруктур = Новый Массив;
|
|
ДатаСтарт = Формат(ТекущаяДата - Дата(1970, 1, 1, 1, 0, 0), "ЧГ=0");
|
|
ДатаСтоп = Формат(ДобавитьМесяц(ТекущаяДата, 24) - Дата(1970, 1, 1, 1, 0, 0), "ЧГ=0");
|
|
|
|
СтруктураКампании = Новый Структура;
|
|
СтруктураКампании.Вставить("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
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СоздатьРекламноеОбъявление(Знач НомерКампании
|
|
, Знач ДневнойЛимит
|
|
, Знач НомерКатегории
|
|
, Знач IDПоста
|
|
, Знач IDКабинета
|
|
, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Линк = "https://vk.com/wall-"
|
|
+ Параметры_["group_id"]
|
|
+ "_"
|
|
+ OPI_Инструменты.ЧислоВСтроку(IDПоста);
|
|
|
|
МассивСтруктур = Новый Массив;
|
|
СтруктураКампании = Новый Структура;
|
|
СтруктураКампании.Вставить("campaign_id" , OPI_Инструменты.ЧислоВСтроку(НомерКампании));
|
|
СтруктураКампании.Вставить("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" , OPI_Инструменты.ЧислоВСтроку(ДневнойЛимит));
|
|
СтруктураКампании.Вставить("all_limit" , "0");
|
|
СтруктураКампании.Вставить("category1_id" , OPI_Инструменты.ЧислоВСтроку(НомерКатегории));
|
|
СтруктураКампании.Вставить("age_restriction" , 0);
|
|
СтруктураКампании.Вставить("status" , 1);
|
|
СтруктураКампании.Вставить("name" , "Объявление");
|
|
СтруктураКампании.Вставить("link_url" , Линк);
|
|
|
|
МассивСтруктур.Добавить(СтруктураКампании);
|
|
|
|
JSONДата = OPI_Инструменты.JSONСтрокой(МассивСтруктур);
|
|
|
|
Параметры_.Вставить("data" , JSONДата);
|
|
Параметры_.Вставить("account_id" , OPI_Инструменты.ЧислоВСтроку(IDКабинета));
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.createAds", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Приостановить рекламное объявление
|
|
// Приостанавливает показ рекламного объявления
|
|
//
|
|
// Параметры:
|
|
// IDКабинета - Строка,Число - ID рекламного кабинета - cabinet
|
|
// IDОбъявления - Строка,Число - ID объявления - ad
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ПриостановитьРекламноеОбъявление(Знач IDКабинета, Знач IDОбъявления, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
|
|
Параметры_.Вставить("account_id", OPI_Инструменты.ЧислоВСтроку(IDКабинета));
|
|
|
|
МассивСтруктур = Новый Массив;
|
|
СтруктураКампании = Новый Структура;
|
|
|
|
СтруктураКампании.Вставить("ad_id" , OPI_Инструменты.ЧислоВСтроку(IDОбъявления));
|
|
СтруктураКампании.Вставить("status" , 0);
|
|
|
|
МассивСтруктур.Добавить(СтруктураКампании);
|
|
|
|
JSONДата = OPI_Инструменты.JSONСтрокой(МассивСтруктур);
|
|
|
|
Параметры_.Вставить("data", JSONДата);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.updateAds", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Получить список рекламных категорий
|
|
// Получает список id рекламных категорий для создания рекламного объявления
|
|
//
|
|
// Параметры:
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ПолучитьСписокРекламныхКатегорий(Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.getCategories", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#Область РаботаСТоварами
|
|
|
|
// Получить список категорий товаров
|
|
// Получает список ID товарных категорий для указания при создании товара
|
|
//
|
|
// Параметры:
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - 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 подборки, если нужен отбор - album
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - Массив соответствий товаров
|
|
Функция ПолучитьСписокТоваров(Знач Подборка = "", Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("count" , 200);
|
|
Параметры_.Вставить("extended" , 1);
|
|
Параметры_.Вставить("with_disabled", 1);
|
|
|
|
Если ЗначениеЗаполнено(Подборка) Тогда
|
|
Параметры_.Вставить("album_id", OPI_Инструменты.ЧислоВСтроку(Подборка));
|
|
КонецЕсли;
|
|
|
|
МассивТоваров = Новый Массив;
|
|
ПолучитьСписокТоваровРекурсивно(МассивТоваров, Параметры_);
|
|
|
|
Возврат МассивТоваров;
|
|
|
|
КонецФункции
|
|
|
|
// Получить товары по ID
|
|
// Получает информацию о товарах по массиву ID
|
|
//
|
|
// Пример строки массива товаров:
|
|
// --items ""['1111111','2222222']""
|
|
// Параметры:
|
|
// Товары - Строка, Массив Из Строка - Массив ID товаров - items - Массив
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ПолучитьТоварыПоИД(Знач Товары, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
СтрокаТоваров = "";
|
|
Owner = "owner_id";
|
|
|
|
Если ТипЗнч(Товары) <> Тип("Массив") Тогда
|
|
Товар = Товары;
|
|
Товары = Новый Массив;
|
|
Товары.Добавить(Товар);
|
|
КонецЕсли;
|
|
|
|
Для Каждого Товар Из Товары Цикл
|
|
ТекущийТовар = Параметры[Owner] + "_" + Товар;
|
|
ТекущийТовар = OPI_Инструменты.ЧислоВСтроку(ТекущийТовар);
|
|
СтрокаТоваров = СтрокаТоваров + ТекущийТовар + ",";
|
|
КонецЦикла;
|
|
|
|
СтрокаТоваров = Лев(СтрокаТоваров, СтрДлина(СтрокаТоваров) - 1);
|
|
Параметры_.Вставить("item_ids", СтрокаТоваров);
|
|
Параметры_.Вставить("extended", 1);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getById", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Добавить товар
|
|
// Добавляет новый товар в каталог сообщества
|
|
//
|
|
// Структура данных описания товара:
|
|
// {
|
|
// "Имя" : "Новый товар",
|
|
// "Описание" : "Описание товара",
|
|
// "Категория" : "20173",
|
|
// "Цена" : 1,
|
|
// "СтараяЦена" : "",
|
|
// "ОсновноеФото" : "",
|
|
// "URL" : "",
|
|
// "ДополнительныеФото" : [],
|
|
// "ЗначенияСвойств" : [],
|
|
// "ГлавныйВГруппе" : "Ложь",
|
|
// "Ширина" : "",
|
|
// "Высота" : "",
|
|
// "Глубина" : "",
|
|
// "Вес" : "",
|
|
// "SKU" : "",
|
|
// "ДоступныйОстаток" : "1"
|
|
//}
|
|
// Параметры:
|
|
// ОписаниеТовара - Соответствие Из КлючИЗначение - См.ПолучитьОписаниеТовара - data - JSON - JSON описание товара или путь к .json
|
|
// Подборка - Строка - ID подборка для помещения товара, если необходимо - album
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ДобавитьТовар(Знач ОписаниеТовара, Знач Подборка = "", Знач Параметры = "") Экспорт
|
|
Возврат УправлениеТоваром(ОписаниеТовара, , Подборка, Параметры);
|
|
КонецФункции
|
|
|
|
// Изменить товар
|
|
// Изменяет ранее созданный товар
|
|
//
|
|
// Структура данных описания товара:
|
|
// {
|
|
// "Имя" : "Новый товар",
|
|
// "Описание" : "Описание товара",
|
|
// "Категория" : "20173",
|
|
// "Цена" : 1,
|
|
// "СтараяЦена" : "",
|
|
// "ОсновноеФото" : "",
|
|
// "URL" : "",
|
|
// "ДополнительныеФото" : [],
|
|
// "ЗначенияСвойств" : [],
|
|
// "ГлавныйВГруппе" : "Ложь",
|
|
// "Ширина" : "",
|
|
// "Высота" : "",
|
|
// "Глубина" : "",
|
|
// "Вес" : "",
|
|
// "SKU" : "",
|
|
// "ДоступныйОстаток" : "1"
|
|
//}
|
|
// Параметры:
|
|
// Товар - Число,Строка - Идентификатор изменяемого товара - item
|
|
// ОписаниеТовара - Соответствие Из КлючИЗначение - См.ПолучитьОписаниеТовара - data - JSON - JSON описание товара или путь к .json
|
|
// Подборка - Строка - Идентификатор новой подборки, если необходимо - album
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ИзменитьТовар(Знач Товар, Знач ОписаниеТовара, Знач Подборка = "", Знач Параметры = "") Экспорт
|
|
Возврат УправлениеТоваром(ОписаниеТовара, Товар, Подборка, Параметры);
|
|
КонецФункции
|
|
|
|
// Удалить товар
|
|
// Удаляет ранее созданный товар
|
|
//
|
|
// Параметры:
|
|
// Товар - Строка,Число - ID товара - item
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция УдалитьТовар(Знач Товар, Знач Параметры = "") Экспорт
|
|
|
|
Товар = OPI_Инструменты.ЧислоВСтроку(Товар);
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("item_id", Товар);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.delete", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Сгруппировать товары
|
|
//
|
|
// Пример строки массива товаров:
|
|
// --items ""['1111111','2222222']""
|
|
// Параметры:
|
|
// МассивТоваров - Массив Из Строка - Массив ID товаров - items - Массив
|
|
// СуществующаяГруппа - Строка - ID существующей группы, если необходимо - group
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СгруппироватьТовары(Знач МассивТоваров, Знач СуществующаяГруппа = "", Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
МассивТоваров_ = Новый Массив;
|
|
|
|
Для Каждого Товар Из МассивТоваров Цикл
|
|
МассивТоваров_.Добавить(OPI_Инструменты.ЧислоВСтроку(Товар));
|
|
КонецЦикла;
|
|
|
|
Товары = СтрСоединить(МассивТоваров_, ",");
|
|
|
|
Параметры_.Вставить("item_ids", Товары);
|
|
|
|
Если ЗначениеЗаполнено(СуществующаяГруппа) Тогда
|
|
Параметры_.Вставить("item_group_id", OPI_Инструменты.ЧислоВСтроку(СуществующаяГруппа));
|
|
КонецЕсли;
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.groupItems", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Получить описание товара. !NOCLI
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - Пустое описание товара:
|
|
// *Имя - Строка - Имя товара
|
|
// *Описание - Строка - Описание товара
|
|
// *Категория - Строка - См. ПолучитьСписокКатегорийТоваров
|
|
// *Цена - Число - Цена товара
|
|
// *СтараяЦена - Число - Для отображения скидки/изменения цены
|
|
// *ОсновноеФото - Строка,ДвоичныеДанные - Двоичные данные или путь к фото
|
|
// *URL - Строка - Ссылка на страницу сайта магазина
|
|
// *ДополнительныеФото - Массив Из Строка - Двоичные данные или пути к фото
|
|
// *ЗначенияСвойств - Массив Из Строка - См.ДобавитьВариантСвойстваТовара
|
|
// *ГлавныйВГруппе - Булево - Главный в группе, если есть в группе
|
|
// *Ширина - Число - Ширина товара в мм.
|
|
// *Высота - Число - Высота товара в мм.
|
|
// *Глубина - Число - Глубина товара в мм.
|
|
// *Вес - Число - Вес в гр.
|
|
// *SKU - Строка - SKU
|
|
// *ДоступныйОстаток - Число - Остаток. -1 - не ограничено
|
|
Функция ПолучитьОписаниеТовара() Экспорт
|
|
|
|
Товар = Новый Соответствие();
|
|
Товар.Вставить("Имя" , "Новый товар"); // Имя товара
|
|
Товар.Вставить("Описание" , "Описание товара"); // Описание товара
|
|
Товар.Вставить("Категория" , "20173"); // См ПолучитьСписокКатегорийТоваров()
|
|
Товар.Вставить("Цена" , 1); // Цена.
|
|
Товар.Вставить("СтараяЦена" , Неопределено); // Для отражения изменения цены
|
|
Товар.Вставить("ОсновноеФото" , Неопределено); // ДД или путь к осн. фото
|
|
Товар.Вставить("URL" , Неопределено); // Ссылка на страницу магазина
|
|
Товар.Вставить("ДополнительныеФото" , Новый Массив); // Массив путей или ДД для доп. фото
|
|
Товар.Вставить("ЗначенияСвойств" , Новый Массив); // Значения свойств (варианты). Максимум 2
|
|
Товар.Вставить("ГлавныйВГруппе" , Ложь); // Сделать главным в своей группе
|
|
Товар.Вставить("Ширина" , Неопределено); // В миллиметрах
|
|
Товар.Вставить("Высота" , Неопределено); // В миллиметрах
|
|
Товар.Вставить("Глубина" , Неопределено); // В миллиметрах
|
|
Товар.Вставить("Вес" , Неопределено); // В граммах
|
|
Товар.Вставить("SKU" , Неопределено); // Артикул
|
|
Товар.Вставить("ДоступныйОстаток" , 1);
|
|
|
|
Возврат Товар;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#Область РаботаСПодборкамиТоваров
|
|
|
|
// Получить список подборок
|
|
// Получает список подборок товаров
|
|
//
|
|
// Параметры:
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - Массив соответствий подборок
|
|
Функция ПолучитьСписокПодборок(Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("count", 100);
|
|
|
|
МассивАльбомов = Новый Массив;
|
|
ПолучитьСписокАльбомовРекурсивно(МассивАльбомов, Параметры_);
|
|
|
|
Возврат МассивАльбомов;
|
|
|
|
КонецФункции
|
|
|
|
// Получить подборки по ID
|
|
// Получить список подборок по массиву ID
|
|
//
|
|
// Пример строки массива подборок:
|
|
// --items ""['1111111','2222222']""
|
|
// Параметры:
|
|
// Подборки - Строка, Массив Из Строка - ID подборок - items - Массив
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ПолучитьПодборкиПоИД(Знач Подборки, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
СтрокаПодборок = "";
|
|
|
|
Если ТипЗнч(Подборки) <> Тип("Массив") Тогда
|
|
|
|
Подборка = Подборки;
|
|
Подборки = Новый Массив;
|
|
Подборки.Добавить(Подборка);
|
|
|
|
КонецЕсли;
|
|
|
|
Для Каждого Подборка Из Подборки Цикл
|
|
|
|
ТекущаяПодборка = OPI_Инструменты.ЧислоВСтроку(Подборка);
|
|
СтрокаПодборок = СтрокаПодборок + ТекущаяПодборка + ",";
|
|
|
|
КонецЦикла;
|
|
|
|
СтрокаПодборок = Лев(СтрокаПодборок, СтрДлина(СтрокаПодборок) - 1);
|
|
Параметры_.Вставить("album_ids", СтрокаПодборок);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getAlbumById", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Создать подборку товаров
|
|
// Создает пустую подборку товаров
|
|
//
|
|
// Параметры:
|
|
// Название - Строка - Название подборки - name
|
|
// Картинка - Строка,ДвоичныеДанные - Файл картинки - picture
|
|
// Основная - Булево - Основная - main
|
|
// Скрытая - Булево - Скрытая - hidden
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СоздатьПодборкуТоваров(Знач Название
|
|
, Знач Картинка
|
|
, Знач Основная = Ложь
|
|
, Знач Скрытая = Ложь
|
|
, Знач Параметры = "") Экспорт
|
|
|
|
Возврат УправлениеПодборкой(Название, Картинка, , Основная, Скрытая, Параметры);
|
|
|
|
КонецФункции
|
|
|
|
// Изменить подборку товаров
|
|
// Изменяет свойства подборки товаров
|
|
//
|
|
// Параметры:
|
|
// Название - Строка - Новое название подборки - name
|
|
// Подборка - Строка - ID подборки - album
|
|
// Картинка - Строка,ДвоичныеДанные - Новая картинка подборки - picture
|
|
// Основная - Булево - Основная - main
|
|
// Скрытая - Булево - Скрытая - hidden
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ИзменитьПодборкуТоваров(Знач Название
|
|
, Знач Подборка
|
|
, Знач Картинка = ""
|
|
, Знач Основная = Ложь
|
|
, Знач Скрытая = Ложь
|
|
, Знач Параметры = "") Экспорт
|
|
|
|
Возврат УправлениеПодборкой(Название, Картинка, Подборка, Основная, Скрытая, Параметры);
|
|
|
|
КонецФункции
|
|
|
|
// Добавить товар в подборку
|
|
// Добавляет товар в подборку
|
|
//
|
|
// Пример строки массива подборок:
|
|
// --items ""['1111111','2222222']""
|
|
// Параметры:
|
|
// МассивТоваров - Строка, Число - Массив товаров или товар - items - Массив
|
|
// Подборка - Строка - ID подборки - album
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ДобавитьТоварВПодборку(Знач МассивТоваров, Знач Подборка, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Подборка = OPI_Инструменты.ЧислоВСтроку(Подборка);
|
|
МассивТовар_ = Новый Массив;
|
|
|
|
Если Не ТипЗнч(МассивТоваров) = Тип("Массив") Тогда
|
|
|
|
Товар = МассивТоваров;
|
|
МассивТовар = Новый Массив;
|
|
МассивТовар.Добавить(Товар);
|
|
|
|
КонецЕсли;
|
|
|
|
Для Каждого Товар Из МассивТовар Цикл
|
|
МассивТовар_.Добавить(OPI_Инструменты.ЧислоВСтроку(Товар));
|
|
КонецЦикла;
|
|
|
|
СписокТоваров = СтрСоединить(МассивТовар_, ",");
|
|
|
|
Параметры_.Вставить("item_ids" , СписокТоваров);
|
|
Параметры_.Вставить("album_ids", Подборка);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.addToAlbum", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Удалить товар из подборки
|
|
// Удаляет ранее добавленный товар из подборки
|
|
//
|
|
// Параметры:
|
|
// Товар - Строка - ID товара - item
|
|
// Подборка - Строка - ID подборки - album
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция УдалитьТоварИзПодборки(Знач Товар, Знач Подборка, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Подборка = OPI_Инструменты.ЧислоВСтроку(Подборка);
|
|
|
|
Параметры_.Вставить("item_id" , OPI_Инструменты.ЧислоВСтроку(Товар));
|
|
Параметры_.Вставить("album_ids", Подборка);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.removeFromAlbum", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Удалить подборку
|
|
// Удаляет подборку по ID
|
|
//
|
|
// Параметры:
|
|
// Подборка - Строка - ID подборки - album
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция УдалитьПодборку(Знач Подборка, Знач Параметры = "") Экспорт
|
|
|
|
Подборка = OPI_Инструменты.ЧислоВСтроку(Подборка);
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("album_id", Подборка);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.deleteAlbum", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#Область РаботаСоСвойствамиТоваров
|
|
|
|
// Получить список свойств
|
|
// Получает список свойств товаров группы
|
|
//
|
|
// Параметры:
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ПолучитьСписокСвойств(Знач Параметры = "") Экспорт
|
|
|
|
Response = "response";
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getProperties", Параметры_);
|
|
Свойства = Ответ[Response]["items"];
|
|
|
|
Возврат Свойства;
|
|
|
|
КонецФункции
|
|
|
|
// Создать свойство товара
|
|
// Создает новое свойство для использования в товарах
|
|
//
|
|
// Параметры:
|
|
// Название - Строка - Название свойства - name
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция СоздатьСвойствоТовара(Знач Название, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("title", Название);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.addProperty", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Изменить свойство товара
|
|
// Изменяет существующее свойство товара
|
|
//
|
|
// Параметры:
|
|
// Название - Строка - Новое название - name
|
|
// Свойство - Строка,Число - ID свойства - prop
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ИзменитьСвойствоТовара(Знач Название, Знач Свойство, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("title" , Название);
|
|
Параметры_.Вставить("property_id", OPI_Инструменты.ЧислоВСтроку(Свойство));
|
|
Параметры_.Вставить("type" , "text");
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.editProperty", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Удалить свойство товара
|
|
// Удаляет существующее свойство товара
|
|
//
|
|
// Параметры:
|
|
// Свойство - Строка,Число - ID свойства - prop
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция УдалитьСвойствоТовара(Знач Свойство, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("property_id", OPI_Инструменты.ЧислоВСтроку(Свойство));
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.deleteProperty", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Добавить вариант свойства товара
|
|
// Добавляет вариант для существующего свойства
|
|
//
|
|
// Параметры:
|
|
// Значение - Строка - Значение свойства - value
|
|
// Свойство - Строка,Число - ID свойства, куда добавляется вариант - prop
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ДобавитьВариантСвойстваТовара(Знач Значение, Знач Свойство, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("property_id", OPI_Инструменты.ЧислоВСтроку(Свойство));
|
|
Параметры_.Вставить("title" , Значение);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.addPropertyVariant", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Изменить вариант свойства товара.
|
|
//
|
|
// Параметры:
|
|
// Значение - Строка - Новое значение свойства - value
|
|
// Свойство - Строка,Число - ID свойства - prop
|
|
// Вариант - Строка,Число - ID варианта - option
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ИзменитьВариантСвойстваТовара(Знач Значение, Знач Свойство, Знач Вариант, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("property_id", OPI_Инструменты.ЧислоВСтроку(Свойство));
|
|
Параметры_.Вставить("variant_id" , OPI_Инструменты.ЧислоВСтроку(Вариант));
|
|
Параметры_.Вставить("title" , Значение);
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.editPropertyVariant", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Удалить вариант свойства товара
|
|
// Удаляет ранее созданный вариант свойства
|
|
//
|
|
// Параметры:
|
|
// Вариант - Строка,Число - ID варианта - option
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция УдалитьВариантСвойстваТовара(Знач Вариант, Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("variant_id", OPI_Инструменты.ЧислоВСтроку(Вариант));
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.deletePropertyVariant", Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#Область РаботаСЗаказами
|
|
|
|
// Получить список заказов
|
|
// Возвращает список заказов сообщества
|
|
//
|
|
// Параметры:
|
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON - JSON авторизации или путь к .json
|
|
//
|
|
// Возвращаемое значение:
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
|
|
Функция ПолучитьСписокЗаказов(Знач Параметры = "") Экспорт
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("count", 50);
|
|
|
|
МассивЗаказов = Новый Массив;
|
|
ПолучитьСписокЗаказовРекурсивно(МассивЗаказов, Параметры_);
|
|
|
|
Возврат МассивЗаказов;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#Область Прочие
|
|
|
|
// Сформировать клавиатуру
|
|
// Формирует клавиатуру по массиву кнопок
|
|
//
|
|
// Параметры:
|
|
// МассивКнопок - Массив из Строка - Массив заголовков кнопок - buttons - Массив
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка - JSON клавиатуры
|
|
Функция СформироватьКлавиатуру(Знач МассивКнопок) Экспорт
|
|
|
|
Клавиатура = Новый Структура;
|
|
МассивКлавиатуры = Новый Массив;
|
|
МассивБлока = Новый Массив;
|
|
|
|
Для Каждого Действие Из МассивКнопок Цикл
|
|
|
|
Кнопка = Новый Структура;
|
|
Выражение = Новый Структура;
|
|
|
|
Выражение.Вставить("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_Инструменты.ЧислоВСтроку(ПереданныйПараметр.Значение));
|
|
КонецЦикла;
|
|
КонецЕсли;
|
|
|
|
Возврат Параметры_;
|
|
|
|
КонецФункции
|
|
|
|
Функция ЗагрузитьФотоНаСервер(Знач Картинка, Параметры, Знач Вид = "Пост")
|
|
|
|
Response = "response";
|
|
Файлы = Новый Соответствие;
|
|
Метод = ОпределитьМетодЗагрузкиИзображений(Вид);
|
|
URL = "api.vk.com/method/";
|
|
Загрузка = URL + Метод["Загрузка"];
|
|
Сохранение = URL + Метод["Сохранение"];
|
|
|
|
Если ТипЗнч(Картинка) = Тип("Строка") Тогда
|
|
КлючКартинка = СтрЗаменить(Картинка, ".", "___");
|
|
ЗначениеКартинка = OPI_Инструменты.ПолучитьДвоичныеДанные(Картинка);
|
|
Иначе
|
|
КлючКартинка = "image___jpeg";
|
|
ЗначениеКартинка = Картинка;
|
|
КонецЕсли;
|
|
|
|
Файлы.Вставить(КлючКартинка, ЗначениеКартинка);
|
|
|
|
Ответ = OPI_Инструменты.Get(Загрузка, Параметры);
|
|
URL = Ответ[Response]["upload_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);
|
|
|
|
Иначе
|
|
|
|
СоответствиеМетодов.Вставить(Загрузка , "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");
|
|
|
|
Возврат Поля;
|
|
|
|
КонецФункции
|
|
|
|
Функция УправлениеТоваром(Знач ОписаниеТовара, Знач ИДТовара = "", Знач Подборка = "", Знач Параметры = "")
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
Параметры_.Вставить("v", "5.199");
|
|
|
|
Response = "response";
|
|
Подборка = OPI_Инструменты.ЧислоВСтроку(Подборка);
|
|
|
|
ЗаполнитьПоляЗапросаТовара(ОписаниеТовара, Параметры_);
|
|
|
|
Если ЗначениеЗаполнено(ИДТовара) Тогда
|
|
Параметры_.Вставить("item_id", OPI_Инструменты.ЧислоВСтроку(ИДТовара));
|
|
Метод = "edit";
|
|
Иначе
|
|
Метод = "add";
|
|
КонецЕсли;
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market." + Метод, Параметры_);
|
|
|
|
Если Не ЗначениеЗаполнено(ИДТовара) Тогда
|
|
ИДТовара = Ответ[Response]["market_item_id"];
|
|
ИДТовара = OPI_Инструменты.ЧислоВСтроку(ИДТовара);
|
|
КонецЕсли;
|
|
|
|
Если ЗначениеЗаполнено(Подборка) Тогда
|
|
ДобавитьТоварВПодборку(ИДТовара, Подборка, Параметры_);
|
|
КонецЕсли;
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
Функция УправлениеПодборкой(Знач Название
|
|
, Знач Картинка = ""
|
|
, Знач ИДПодборки = ""
|
|
, Знач Основная = Ложь
|
|
, Знач Скрытая = Ложь
|
|
, Знач Параметры = "")
|
|
|
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
PhotoID = "photo_id";
|
|
Response = "response";
|
|
|
|
Если ЗначениеЗаполнено(Картинка) Тогда
|
|
|
|
Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры_, "Товар");
|
|
ИДФото = Ответ[Response][PhotoID];
|
|
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
|
|
|
|
Параметры_.Вставить(PhotoID, ИДФото);
|
|
|
|
Иначе
|
|
|
|
Если ЗначениеЗаполнено(ИДПодборки) Тогда
|
|
|
|
Подборки = ПолучитьПодборкиПоИД(ИДПодборки, Параметры_);
|
|
Подборки = Подборки[Response]["items"];
|
|
|
|
Если Не Подборки.Количество() = 0 Тогда
|
|
ИДФото = Подборки[0]["photo"]["id"];
|
|
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
|
|
Параметры_.Вставить(PhotoID, ИДФото);
|
|
КонецЕсли;
|
|
|
|
КонецЕсли;
|
|
|
|
КонецЕсли;
|
|
|
|
Параметры_.Вставить("title" , Название);
|
|
Параметры_.Вставить("main_album" , ?(Основная, 1, 0));
|
|
Параметры_.Вставить("is_hidden" , ?(Скрытая, 1, 0));
|
|
|
|
Если ЗначениеЗаполнено(ИДПодборки) Тогда
|
|
Параметры_.Вставить("album_id", OPI_Инструменты.ЧислоВСтроку(ИДПодборки));
|
|
Метод = "editAlbum";
|
|
Иначе
|
|
Метод = "addAlbum";
|
|
КонецЕсли;
|
|
|
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market." + Метод, Параметры_);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
Процедура ЗаполнитьПараметрыЗагрузкиФото(Знач Метод, Знач Ответ, Параметры)
|
|
|
|
Response = "response";
|
|
Способ = Метод["Способ"];
|
|
СтандартныйСпособ = 1;
|
|
НовыйСпособ = 2;
|
|
|
|
Если Способ = СтандартныйСпособ Тогда
|
|
|
|
Hash = "hash";
|
|
Serv = "server";
|
|
Aid = "aid";
|
|
Фото = Метод["Фото"];
|
|
|
|
СерверФото = OPI_Инструменты.ЧислоВСтроку(Ответ[Serv]);
|
|
|
|
Параметры.Вставить(Hash, Ответ[Hash]);
|
|
Параметры.Вставить(Фото, Ответ[Фото]);
|
|
Параметры.Вставить(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 Тогда
|
|
|
|
СтрокаФотографий = "";
|
|
Response = "response";
|
|
|
|
Для Каждого Фото Из МассивФото Цикл
|
|
|
|
Ответ = ЗагрузитьФотоНаСервер(Фото, Параметры, "Товар");
|
|
ИДФото = Ответ[Response]["photo_id"];
|
|
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
|
|
СтрокаФотографий = СтрокаФотографий + ИДФото + ",";
|
|
|
|
КонецЦикла;
|
|
|
|
СтрокаФотографий = Лев(СтрокаФотографий, СтрДлина(СтрокаФотографий) - 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", Сдвиг);
|
|
ПолучитьСписокЗаказовРекурсивно(МассивЗаказов, Параметры, Сдвиг);
|
|
|
|
КонецПроцедуры
|
|
|
|
#КонецОбласти
|