From 3acdb5b062ed8e13b19cfd638ff253208e9cf2cf Mon Sep 17 00:00:00 2001 From: Anton Titovets Date: Tue, 2 Apr 2024 09:42:16 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OPI_GoogleCalendar/Module.bsl | 60 ++++- .../CommonModules/OPI_GoogleDrive/Module.bsl | 50 ++++ .../OPI_GoogleWorkspace/Module.bsl | 14 + OPI/src/CommonModules/OPI_Telegram/Module.bsl | 9 +- OPI/src/CommonModules/OPI_VK/Module.bsl | 251 +++++++++++++----- 5 files changed, 320 insertions(+), 64 deletions(-) diff --git a/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl b/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl index ec2f012cf6..4eaddac40a 100644 --- a/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl +++ b/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl @@ -42,6 +42,9 @@ // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/calendars"; @@ -65,6 +68,9 @@ // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google Функция ПолучитьМетаданныеКалендаря(Знач Токен, Знач Календарь) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь; Ответ = OPI_Инструменты.Get(URL, , Заголовки); @@ -88,6 +94,11 @@ , Знач Наименование = "" , Знач Описание = "") Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Описание); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь; @@ -116,6 +127,8 @@ // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google Функция ОчиститьОсновнойКалендарь(Знач Токен) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear"; Ответ = OPI_Инструменты.Post(URL, , Заголовки, Ложь); @@ -134,6 +147,9 @@ // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google Функция УдалитьКалендарь(Знач Токен, Знач Календарь) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь; Ответ = OPI_Инструменты.Delete(URL, , Заголовки); @@ -155,6 +171,8 @@ // Соответствие Из КлючИЗначение - Массив соответствий данных календарей Функция ПолучитьСписокКалендарей(Знач Токен) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); МассивКалендарей = Новый Массив; @@ -174,6 +192,9 @@ // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google Функция ДобавитьКалендарьВСписок(Знач Токен, Знач Календарь) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList"; @@ -196,6 +217,9 @@ // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google Функция ПолучитьКалендарьСписка(Знач Токен, Знач Календарь) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь; Ответ = OPI_Инструменты.Get(URL, , Заголовки); @@ -214,6 +238,9 @@ // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google Функция УдалитьКалендарьИзСписка(Знач Токен, Знач Календарь) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь; Ответ = OPI_Инструменты.Delete(URL, , Заголовки); @@ -239,6 +266,12 @@ , Знач ДополнительныйЦвет , Знач Скрытый = Ложь) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ОсновнойЦвет); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ДополнительныйЦвет); + OPI_ПреобразованиеТипов.ПолучитьБулево(Скрытый); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь + "?colorRgbFormat=true"; @@ -289,6 +322,9 @@ // Соответствие Из КлючИЗначение - Массив соответствий событий Функция ПолучитьСписокСобытий(Знач Токен, Знач Календарь) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); МассивСобытий = Новый Массив; @@ -309,6 +345,10 @@ // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google Функция ПолучитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь @@ -346,6 +386,11 @@ // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google Функция ПереместитьСобытие(Знач Токен, Знач КалендарьИсточник, Знач КалендарьПриемник, Знач Событие) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(КалендарьИсточник); + OPI_ПреобразованиеТипов.ПолучитьСтроку(КалендарьПриемник); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/calendars/" + КалендарьИсточник @@ -385,6 +430,10 @@ // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google Функция УдалитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь @@ -405,6 +454,8 @@ Функция ПреобразоватьДату(Знач Дата) + OPI_ПреобразованиеТипов.ПолучитьДату(Дата); + СтруктураДаты = Новый Структура; Если Не ТипЗнч(Дата) = Тип("Дата") Тогда @@ -429,9 +480,11 @@ Функция ПреобразоватьВложения(Знач Вложения) + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Вложения); + МассивВложений = Новый Массив; - Если ТипЗнч(Вложения) = Тип("Соответствие") Тогда + Если ТипЗнч(Вложения) = Тип("Соответствие") Или ТипЗнч(Вложения) = Тип("Структура") Тогда Для Каждого Вложение Из Вложения Цикл @@ -455,6 +508,11 @@ Функция УправлениеСобытием(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие = "") + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие); + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеСобытия); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); Существующее = ЗначениеЗаполнено(Событие); URL = "https://www.googleapis.com/calendar/v3/calendars/" diff --git a/OPI/src/CommonModules/OPI_GoogleDrive/Module.bsl b/OPI/src/CommonModules/OPI_GoogleDrive/Module.bsl index e7040b671c..996db0b4a1 100644 --- a/OPI/src/CommonModules/OPI_GoogleDrive/Module.bsl +++ b/OPI/src/CommonModules/OPI_GoogleDrive/Module.bsl @@ -42,6 +42,9 @@ // HTTPОтвет - Ответ сервера Google Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Идентификатор) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор; @@ -65,6 +68,10 @@ // Соответствие Из КлючИЗначение - Массив соответствий каталогов Функция ПолучитьСписокКаталогов(Знач Токен, Знач ИмяСодержит = "", Знач Подробно = Ложь) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяСодержит); + OPI_ПреобразованиеТипов.ПолучитьБулево(Подробно); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); МассивОбъектов = Новый Массив; Отбор = Новый Массив; @@ -96,6 +103,10 @@ // Соответствие Из КлючИЗначение - Массив соответствий файорв Функция ПолучитьСписокФайлов(Знач Токен, Знач ИмяСодержит = "", Знач Каталог = "") Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяСодержит); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Каталог); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); МассивОбъектов = Новый Массив; Отбор = Новый Массив; @@ -140,6 +151,10 @@ // HTTPОтвет - Ответ сервера Google Функция СоздатьПапку(Знач Токен, Знач Имя, Знач Родитель = "") Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Родитель); + Описание = Новый Соответствие; Описание.Вставить("MIME" , "application/vnd.google-apps.folder"); Описание.Вставить("Имя" , Имя); @@ -160,6 +175,9 @@ // HTTPОтвет - Ответ сервера Google Функция СкачатьФайл(Знач Токен, Знач Идентификатор) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор; @@ -184,6 +202,11 @@ // HTTPОтвет - Ответ сервера Google Функция СкопироватьОбъект(Знач Токен, Знач Идентификатор, Знач НовоеИмя = "", Знач НовыйРодитель = "") Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(НовоеИмя); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор); + OPI_ПреобразованиеТипов.ПолучитьСтроку(НовыйРодитель); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/copy"; @@ -219,6 +242,11 @@ // HTTPОтвет - Ответ сервера Google Функция ОбновитьФайл(Знач Токен, Знач Идентификатор, Знач Файл, Знач НовоеИмя = "") Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор); + OPI_ПреобразованиеТипов.ПолучитьСтроку(НовоеИмя); + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); + Если ЗначениеЗаполнено(НовоеИмя) Тогда Описание = Новый Соответствие; Описание.Вставить("Имя", НовоеИмя); @@ -240,6 +268,9 @@ // HTTPОтвет - Ответ сервера Google Функция УдалитьОбъект(Знач Токен, Знач Идентификатор) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор; Ответ = OPI_Инструменты.Delete(URL, , Заголовки); @@ -279,6 +310,10 @@ // HTTPОтвет - Ответ сервера Google Функция СоздатьКомментарий(Знач Токен, Знач Идентификатор, Знач Комментарий) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/comments?fields=*"; @@ -302,6 +337,10 @@ // HTTPОтвет - Получить комментарий Функция ПолучитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДКомментария); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария; @@ -324,6 +363,9 @@ // HTTPОтвет - Получить список комментариев Функция ПолучитьСписокКомментариев(Знач Токен, Знач ИДОбъекта) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments"; @@ -347,6 +389,10 @@ // HTTPОтвет - Удалить комментарий Функция УдалитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДКомментария); + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария; @@ -449,6 +495,10 @@ Функция УправлениеФайлом(Знач Токен, Знач Файл = "", Знач Описание = "", Знач Идентификатор = "") + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Описание); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор); + СоответствиеФайла = Новый Соответствие; MimeType = "mimeType"; diff --git a/OPI/src/CommonModules/OPI_GoogleWorkspace/Module.bsl b/OPI/src/CommonModules/OPI_GoogleWorkspace/Module.bsl index 84dde99f26..046b7e5382 100644 --- a/OPI/src/CommonModules/OPI_GoogleWorkspace/Module.bsl +++ b/OPI/src/CommonModules/OPI_GoogleWorkspace/Module.bsl @@ -41,6 +41,10 @@ // Строка - Сформировать ссылку получения кода Функция СформироватьСсылкуПолученияКода(Знач ClientID, Знач Calendar = Истина, Знач Drive = Истина) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID); + OPI_ПреобразованиеТипов.ПолучитьБулево(Calendar); + OPI_ПреобразованиеТипов.ПолучитьБулево(Drive); + URL = "https://accounts.google.com/o/oauth2/auth"; ПараметрыURL = Новый Структура; @@ -67,6 +71,10 @@ // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - Получить токен по коду Функция ПолучитьТокенПоКоду(Знач ClientID, Знач ClientSecret, Знач Code) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Code); + URL = "https://accounts.google.com/o/oauth2/token"; ПараметрыURL = Новый Структура; @@ -93,6 +101,10 @@ // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - Обновить токен Функция ОбновитьТокен(Знач ClientID, Знач ClientSecret, Знач RefreshToken) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret); + OPI_ПреобразованиеТипов.ПолучитьСтроку(RefreshToken); + URL = "https://accounts.google.com/o/oauth2/token"; ПараметрыURL = Новый Структура; @@ -113,6 +125,8 @@ Функция ПолучитьЗаголовокАвторизации(Знач Токен) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + Заголовки = Новый Соответствие; Заголовки.Вставить("Authorization", "Bearer " + Токен); diff --git a/OPI/src/CommonModules/OPI_Telegram/Module.bsl b/OPI/src/CommonModules/OPI_Telegram/Module.bsl index e3dc033f0c..7d2e4b9c42 100644 --- a/OPI/src/CommonModules/OPI_Telegram/Module.bsl +++ b/OPI/src/CommonModules/OPI_Telegram/Module.bsl @@ -108,6 +108,7 @@ URL = "api.telegram.org/bot" + Токен + "/deleteWebHook"; Ответ = OPI_Инструменты.Get(URL); + Возврат Ответ; КонецФункции @@ -720,9 +721,13 @@ Result = "result"; URL = "api.telegram.org/bot" + Токен + "/getForumTopicIconStickers"; - Ответ = OPI_Инструменты.Get(URL); - + Ответ = OPI_Инструменты.Get(URL); Иконки = Ответ[Result]; + + Если Не ЗначениеЗаполнено(Иконки) Тогда + Возврат Ответ; + КонецЕсли; + Коллекция = Новый Соответствие; Для Каждого Иконка Из Иконки Цикл diff --git a/OPI/src/CommonModules/OPI_VK/Module.bsl b/OPI/src/CommonModules/OPI_VK/Module.bsl index e14bd664aa..e11204eb5d 100644 --- a/OPI/src/CommonModules/OPI_VK/Module.bsl +++ b/OPI/src/CommonModules/OPI_VK/Module.bsl @@ -97,12 +97,29 @@ Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Ответ = ЗагрузитьФотоНаСервер(КартинкаПоста, Параметры_); - ОтветСоответствие = Ответ.Получить("response")[0]; + ОтветМассив = Ответ.Получить("response"); + + Если Не ЗначениеЗаполнено(ОтветМассив) Или Не ТипЗнч(ОтветМассив) = Тип("Массив") Тогда + Возврат Ответ; + Иначе + Если ОтветМассив.Количество() = 0 Тогда + Возврат Ответ; + Иначе + ОтветСоответствие = ОтветМассив[0]; + КонецЕсли; + КонецЕсли; + + OwnerId = ОтветСоответствие.Получить("owner_id"); + ObjectId = ОтветСоответствие.Получить("id"); + + Если Не ЗначениеЗаполнено(OwnerId) Или Не ЗначениеЗаполнено(ObjectId) Тогда + Возврат Ответ; + КонецЕсли; ФотоID = "photo" - + OPI_Инструменты.ЧислоВСтроку(ОтветСоответствие.Получить("owner_id")) + + OPI_Инструменты.ЧислоВСтроку(OwnerId) + "_" - + OPI_Инструменты.ЧислоВСтроку(ОтветСоответствие.Получить("id")); + + OPI_Инструменты.ЧислоВСтроку(ObjectId); СтрокаВложений = СтрокаВложений + ФотоID + ","; @@ -169,9 +186,15 @@ Фото = Ответ.Получить(Response); Если ЗначениеЗаполнено(Фото) Тогда - IDФото = Фото["id"]; + + IDФото = Фото["id"]; + + Если Не ЗначениеЗаполнено(IDФото) Тогда + Возврат Ответ; + КонецЕсли; + Иначе - ВызватьИсключение OPI_Инструменты.JSONСтрокой(Ответ); + Возврат Ответ; КонецЕсли; КонецЕсли; @@ -189,10 +212,21 @@ Опрос = OPI_Инструменты.Get("api.vk.com/method/polls.create", Параметры_); ОпросСоответствие = Опрос.Получить(Response); + Если Не ЗначениеЗаполнено(ОпросСоответствие) Тогда + Возврат Опрос; + КонецЕсли; + + OwnerId = ОпросСоответствие.Получить("owner_id"); + ObjectId = ОпросСоответствие.Получить("id"); + + Если Не ЗначениеЗаполнено(OwnerId) Или Не ЗначениеЗаполнено(ObjectId) Тогда + Возврат Опрос; + КонецЕсли; + ОпросID = "poll" - + OPI_Инструменты.ЧислоВСтроку(ОпросСоответствие.Получить("owner_id")) + + OPI_Инструменты.ЧислоВСтроку(OwnerId) + "_" - + OPI_Инструменты.ЧислоВСтроку(ОпросСоответствие.Получить("id")); + + OPI_Инструменты.ЧислоВСтроку(ObjectId); Параметры_.Вставить("attachments", ОпросID); @@ -593,9 +627,23 @@ Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_.Вставить("url", URL); - Ответ = OPI_Инструменты.Get("https://api.vk.com/method/utils.getShortLink", Параметры_); + Ответ = OPI_Инструменты.Get("https://api.vk.com/method/utils.getShortLink", Параметры_); + Результат = Ответ[Response]; + + Если ЗначениеЗаполнено(Результат) Тогда + + URL = Результат["short_url"]; + + Если ЗначениеЗаполнено(URL) Тогда + Возврат URL; + Иначе + Возврат Ответ; + КонецЕсли; + + Иначе + Возврат Ответ; + КонецЕсли; - Возврат Ответ[Response]["short_url"]; КонецФункции @@ -877,12 +925,36 @@ Response = "response"; Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getCategories", Параметры_); - Количество = Ответ[Response]["count"]; + Результат = Ответ[Response]; + + Если ЗначениеЗаполнено(Результат) Тогда + + Количество = Результат["count"]; + + Если Не ЗначениеЗаполнено(Количество) Тогда + Возврат Ответ; + КонецЕсли; + + Иначе + Возврат Ответ; + КонецЕсли; Параметры_.Вставить("count", Количество); - Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getCategories", Параметры_); - Категории = Ответ[Response]["items"]; + Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getCategories", Параметры_); + Результат = Ответ[Response]; + Если ЗначениеЗаполнено(Результат) Тогда + + Категории = Результат["items"]; + + Если Не ЗначениеЗаполнено(Категории) Тогда + Возврат Ответ; + КонецЕсли; + + Иначе + Возврат Ответ; + КонецЕсли; + СоответствиеКатегорий = Новый Соответствие; Для Каждого Категория Из Категории Цикл @@ -1588,48 +1660,47 @@ КонецФункции Функция ЗагрузитьФотоНаСервер(Знач Картинка, Знач Параметры, Знач Вид = "Пост") + + Метод = ОпределитьМетодЗагрузкиИзображений(Вид); + Файлы = Новый Соответствие; - Попытка - - Метод = ОпределитьМетодЗагрузкиИзображений(Вид); - Файлы = Новый Соответствие; - - 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(Сохранение, Параметры); - + Response = "response"; + URL = "api.vk.com/method/"; + Загрузка = URL + Метод["Загрузка"]; + Сохранение = URL + Метод["Сохранение"]; + + Если ТипЗнч(Картинка) = Тип("Строка") Тогда + КлючКартинка = СтрЗаменить(Картинка, ".", "___"); + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + Иначе + КлючКартинка = "image___jpeg"; + КонецЕсли; + + Файлы.Вставить(КлючКартинка, Картинка); + + Ответ = OPI_Инструменты.Get(Загрузка, Параметры); + Результат = Ответ[Response]; + + Если ЗначениеЗаполнено(Результат) Тогда + + URL = Результат["upload_url"]; + + Если Не ЗначениеЗаполнено(URL) Тогда + Возврат Ответ; + КонецЕсли; + + Иначе Возврат Ответ; + КонецЕсли; - Исключение + Параметры.Вставить("upload_url", URL); + + Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, Файлы); + ЗаполнитьПараметрыЗагрузкиФото(Метод, Ответ, Параметры); - Если ЗначениеЗаполнено(Ответ) Тогда - ПоследнийОтвет = OPI_Инструменты.JSONСтрокой(Ответ); - Иначе - ПоследнийОтвет = ""; - КонецЕсли; - - ВызватьИсключение ОписаниеОшибки() + Символы.ПС + ПоследнийОтвет; - - КонецПопытки; + Ответ = OPI_Инструменты.Get(Сохранение, Параметры); + + Возврат Ответ; КонецФункции @@ -1721,10 +1792,19 @@ Метод = "add"; КонецЕсли; - Ответ = OPI_Инструменты.Get("api.vk.com/method/market." + Метод, Параметры_); + Ответ = OPI_Инструменты.Get("api.vk.com/method/market." + Метод, Параметры_); + Результат = Ответ[Response]; - Если Не ЗначениеЗаполнено(ИДТовара) И ЗначениеЗаполнено(Ответ[Response]) Тогда - ИДТовара = Ответ[Response]["market_item_id"]; + Если Не ЗначениеЗаполнено(ИДТовара) И ЗначениеЗаполнено(Результат) Тогда + + ИДТовара = Результат["market_item_id"]; + + Если Не ЗначениеЗаполнено(ИДТовара) Тогда + Возврат Ответ; + КонецЕсли; + + Иначе + Возврат Ответ; КонецЕсли; Если ЗначениеЗаполнено(Подборка) И ЗначениеЗаполнено(ИДТовара) Тогда @@ -1755,9 +1835,20 @@ Если ЗначениеЗаполнено(Картинка) Тогда Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры_, "Товар"); - ИДФото = Ответ[Response][PhotoID]; - OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДФото); + Результат = Ответ[Response]; + Если ЗначениеЗаполнено(Результат) Тогда + ИДФото = Результат[PhotoID]; + + Если Не ЗначениеЗаполнено(ИДФото) Тогда + Возврат Ответ; + КонецЕсли; + + Иначе + Возврат Ответ; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДФото); Параметры_.Вставить(PhotoID, ИДФото); Иначе @@ -1765,8 +1856,20 @@ Если ЗначениеЗаполнено(ИДПодборки) Тогда Подборки = ПолучитьПодборкиПоИД(ИДПодборки, Параметры_); - Подборки = Подборки[Response]["items"]; + Результат = Подборки[Response]; + Если ЗначениеЗаполнено(Результат) Тогда + + Подборки = Результат["items"]; + + Если Не ЗначениеЗаполнено(Подборки) Тогда + Возврат Ответ; + КонецЕсли; + + Иначе + Возврат Ответ; + КонецЕсли; + Если Не Подборки.Количество() = 0 Тогда ИДФото = Подборки[0]["photo"]["id"]; OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДФото); @@ -1846,10 +1949,24 @@ Свойства = ОписаниеТовара["ЗначенияСвойств"]; Если ЗначениеЗаполнено(ОсновноеФото) Тогда - Ответ = ЗагрузитьФотоНаСервер(ОсновноеФото, Параметры, "Товар"); - ИДФото = Ответ[Response]["photo_id"]; + + Ответ = ЗагрузитьФотоНаСервер(ОсновноеФото, Параметры, "Товар"); + Результат = Ответ[Response]; + + Если ЗначениеЗаполнено(Результат) Тогда + ИДФото = Результат["photo_id"]; + + Если Не ЗначениеЗаполнено(ИДФото) Тогда + Возврат; + КонецЕсли; + + Иначе + Возврат; + КонецЕсли; + ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото); - Параметры.Вставить("main_photo_id", ИДФото); + Параметры.Вставить("main_photo_id", ИДФото); + КонецЕсли; Если ТипЗнч(Свойства) = Тип("Массив") Тогда @@ -1892,8 +2009,20 @@ Для Каждого Фото Из МассивФото Цикл - Ответ = ЗагрузитьФотоНаСервер(Фото, Параметры, "Товар"); - ИДФото = Ответ[Response]["photo_id"]; + Ответ = ЗагрузитьФотоНаСервер(Фото, Параметры, "Товар"); + Результат = Ответ[Response]; + + Если ЗначениеЗаполнено(Результат) Тогда + ИДФото = Результат["photo_id"]; + + Если Не ЗначениеЗаполнено(ИДФото) Тогда + Возврат; + КонецЕсли; + + Иначе + Возврат; + КонецЕсли; + ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото); СтрокаФотографий = СтрокаФотографий + ИДФото + ",";