You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
Merge pull request #5 from Bayselonarrend/dev
Финальная часть реализации Google Calendar
This commit is contained in:
@@ -24,6 +24,120 @@
|
|||||||
|
|
||||||
#Область ПрограммныйИнтерфейс
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
|
#Область РаботаСМетаданнымиКалендарей
|
||||||
|
|
||||||
|
// Создать календарь.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Наименование - Строка - Наименование создаваемого календаря
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
|
||||||
|
Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/calendar/v3/calendars";
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
Параметры.Вставить("summary" , Наименование);
|
||||||
|
Параметры.Вставить("timeZone", ЧасовойПояс());
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Получить календарь.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Календарь - Строка - ID календаря
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
|
||||||
|
Функция ПолучитьМетаданныеКалендаря(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
||||||
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Изменить календарь.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Календарь - Строка - ID календаря
|
||||||
|
// Наименование - Строка - Новое наименование
|
||||||
|
// Описание - Строка - Новое описание календаря
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
|
||||||
|
Функция ИзменитьМетаданныеКалендаря(Знач Токен
|
||||||
|
, Знач Календарь
|
||||||
|
, Знач Наименование = ""
|
||||||
|
, Знач Описание = "") Экспорт
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(Наименование) Тогда
|
||||||
|
Параметры.Вставить("summary", Наименование);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(Описание) Тогда
|
||||||
|
Параметры.Вставить("description", Описание);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Очистить основной календарь.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
||||||
|
Функция ОчиститьОсновнойКалендарь(Знач Токен) Экспорт
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear";
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, , Заголовки, Ложь);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Удалить календарь.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Календарь - Строка - ID календаря
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
|
||||||
|
Функция УдалитьКалендарь(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
||||||
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
#Область РаботаСоСпискомКалендарей
|
#Область РаботаСоСпискомКалендарей
|
||||||
|
|
||||||
// Получить список календарей.
|
// Получить список календарей.
|
||||||
@@ -66,74 +180,66 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
// Получить календарь списка.
|
||||||
|
|
||||||
#Область РаботаСКалендарями
|
|
||||||
|
|
||||||
// Создать календарь.
|
|
||||||
//
|
|
||||||
// Параметры:
|
|
||||||
// Токен - Строка - Токен
|
|
||||||
// Наименование - Строка - Наименование создаваемого календаря
|
|
||||||
//
|
|
||||||
// Возвращаемое значение:
|
|
||||||
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
|
|
||||||
Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт
|
|
||||||
|
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars";
|
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
|
||||||
Параметры.Вставить("summary", Наименование);
|
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
||||||
|
|
||||||
Возврат Ответ;
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
// Получить календарь.
|
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен
|
// Токен - Строка - Токен
|
||||||
// Календарь - Строка - ID календаря
|
// Календарь - Строка - ID календаря
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
||||||
Функция ПолучитьКалендарь(Знач Токен, Знач Календарь) Экспорт
|
Функция ПолучитьКалендарьСписка(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить календарь.
|
// Удалить календарь из списка.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен
|
// Токен - Строка - Токен
|
||||||
// Календарь - Строка - ID календаря
|
// Календарь - Строка - ID календаря
|
||||||
// Наименование - Строка - Новое наименование
|
|
||||||
// Описание - Строка - Новое описание календаря
|
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
||||||
Функция ИзменитьКалендарь(Знач Токен, Знач Календарь, Знач Наименование = "", Знач Описание = "") Экспорт
|
Функция УдалитьКалендарьИзСписка(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
|
||||||
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Изменить календарь списка.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Календарь - Строка - ID календаря
|
||||||
|
// ОсновнойЦвет - Строка - HEX основного цвета (#ffffff)
|
||||||
|
// ДополнительныйЦвет - Строка - HEX дополнительного цвета (#ffffff)
|
||||||
|
// Скрытый - Булево - Скрытый календарь
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
||||||
|
Функция ИзменитьКалендарьСписка(Знач Токен
|
||||||
|
, Знач Календарь
|
||||||
|
, Знач ОсновнойЦвет
|
||||||
|
, Знач ДополнительныйЦвет
|
||||||
|
, Знач Скрытый = Ложь) Экспорт
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Наименование) Тогда
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
Параметры.Вставить("summary", Наименование);
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь + "?colorRgbFormat=true";
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Описание) Тогда
|
Параметры = Новый Соответствие;
|
||||||
Параметры.Вставить("description", Описание);
|
Параметры.Вставить("hidden" , Скрытый);
|
||||||
КонецЕсли;
|
Параметры.Вставить("foregroundColor", ОсновнойЦвет);
|
||||||
|
Параметры.Вставить("backgroundColor", ДополнительныйЦвет);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Put(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Put(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
@@ -141,19 +247,144 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить календарь.
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область РаботаССобытиями
|
||||||
|
|
||||||
|
// Получить описание события.
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - Пустой макет события
|
||||||
|
Функция ПолучитьОписаниеСобытия() Экспорт
|
||||||
|
|
||||||
|
Час = 3600;
|
||||||
|
Событие = Новый Соответствие;
|
||||||
|
|
||||||
|
Событие.Вставить("Описание" , ""); // Описание события
|
||||||
|
Событие.Вставить("Заголовок" , "Новое событие"); // Заголовок события
|
||||||
|
Событие.Вставить("МестоПроведения" , ""); // Строка описание места проведения
|
||||||
|
Событие.Вставить("ДатаНачала" , ТекущаяДатаСеанса()); // Дата начала события
|
||||||
|
Событие.Вставить("ДатаОкончания" , Событие["ДатаНачала"] + Час); // Дата окончания события
|
||||||
|
Событие.Вставить("МассивURLФайловВложений", Новый Соответствие); // Ключ - название, Значение - URL к файлу
|
||||||
|
Событие.Вставить("ОтправлятьУведомления" , Истина); // Признак отправки уведомлений участникам
|
||||||
|
|
||||||
|
Возврат Событие;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Получить список событий.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен
|
// Токен - Строка - Токен
|
||||||
// Календарь - Строка - ID календаря
|
// Календарь - Строка - ID календаря
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
|
// Соответствие Из КлючИЗначение - Массив соответствий событий
|
||||||
Функция УдалитьКалендарь(Знач Токен, Знач Календарь) Экспорт
|
Функция ПолучитьСписокСобытий(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
МассивСобытий = Новый Массив;
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
|
||||||
|
ПолучитьСписокСобытийРекурсивно(Заголовки, Календарь, МассивСобытий);
|
||||||
|
|
||||||
|
Возврат МассивСобытий;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Получить событие.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Календарь - Строка - ID календаря
|
||||||
|
// Событие - Строка - ID события
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
||||||
|
Функция ПолучитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
|
+ Календарь
|
||||||
|
+ "/events/"
|
||||||
|
+ Событие;
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Создать событие.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Календарь - Строка - ID календаря
|
||||||
|
// ОписаниеСобытия - Соответствие Из КлючИЗначение - Описание события. См. ПолучитьОписаниеСобытия
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
||||||
|
Функция СоздатьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия) Экспорт
|
||||||
|
Возврат УправлениеСобытием(Токен, Календарь, ОписаниеСобытия);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Переместить событие.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// КалендарьИсточник - Строка - ID календаря источника
|
||||||
|
// КалендарьПриемник - Строка - ID календаря приемника
|
||||||
|
// Событие - Строка - ID события календаря источника
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
||||||
|
Функция ПереместитьСобытие(Знач Токен, Знач КалендарьИсточник, Знач КалендарьПриемник, Знач Событие) Экспорт
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
|
+ КалендарьИсточник
|
||||||
|
+ "/events/"
|
||||||
|
+ Событие
|
||||||
|
+ "/move?destination="
|
||||||
|
+ КалендарьПриемник;
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, , Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Изменить событие.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Календарь - Строка - ID календаря
|
||||||
|
// ОписаниеСобытия - Строка - Новое описание события
|
||||||
|
// Событие - Строка - ID события
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// HTTPОтвет - Изменить событие
|
||||||
|
Функция ИзменитьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие) Экспорт
|
||||||
|
Возврат УправлениеСобытием(Токен, Календарь, ОписаниеСобытия, Событие);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Удалить событие.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Календарь - Строка - ID календаря
|
||||||
|
// Событие - Строка - ID события
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
||||||
|
Функция УдалитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
|
+ Календарь
|
||||||
|
+ "/events/"
|
||||||
|
+ Событие;
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
@@ -174,8 +405,103 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ПреобразоватьДату(Знач Дата)
|
||||||
|
|
||||||
|
СтруктураДаты = Новый Структура;
|
||||||
|
|
||||||
|
Если Не ТипЗнч(Дата) = Тип("Дата") Тогда
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Дата = НачалоДня(Дата) Тогда
|
||||||
|
ФорматДаты = "ДФ=yyyy-MM-dd";
|
||||||
|
Поле = "date";
|
||||||
|
Иначе
|
||||||
|
ФорматДаты = "ДФ=yyyy-MM-ddTHH:mm:ssZ";
|
||||||
|
Поле = "dateTime";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Дата = Формат(Дата, ФорматДаты);
|
||||||
|
СтруктураДаты.Вставить(Поле , Дата);
|
||||||
|
СтруктураДаты.Вставить("timeZone", ЧасовойПояс());
|
||||||
|
|
||||||
|
Возврат СтруктураДаты;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ПреобразоватьВложения(Знач Вложения)
|
||||||
|
|
||||||
|
МассивВложений = Новый Массив;
|
||||||
|
|
||||||
|
Если ТипЗнч(Вложения) = Тип("Соответствие") Тогда
|
||||||
|
|
||||||
|
Для Каждого Вложение Из Вложения Цикл
|
||||||
|
|
||||||
|
ТекущеВложение = Новый Структура;
|
||||||
|
ТекущеВложение.Вставить("title" , Вложение.Ключ);
|
||||||
|
ТекущеВложение.Вставить("fileUrl", Вложение.Значение);
|
||||||
|
|
||||||
|
МассивВложений.Добавить(ТекущеВложение);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если МассивВложений.Количество() > 0 Тогда
|
||||||
|
Возврат МассивВложений;
|
||||||
|
Иначе
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция УправлениеСобытием(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие = "")
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
Существующее = ЗначениеЗаполнено(Событие);
|
||||||
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
|
+ Календарь
|
||||||
|
+ "/events"
|
||||||
|
+ ?(Существующее, "/" + Событие, "");
|
||||||
|
|
||||||
|
Дата0 = ОписаниеСобытия["ДатаНачала"];
|
||||||
|
Дата1 = ОписаниеСобытия["ДатаОкончания"];
|
||||||
|
Вложения = ОписаниеСобытия["МассивURLФайловВложений"];
|
||||||
|
Вложения = ПреобразоватьВложения(Вложения);
|
||||||
|
Уведомления = ?(ОписаниеСобытия["ОтправлятьУведомления"] = Неопределено
|
||||||
|
, Ложь
|
||||||
|
, ОписаниеСобытия["ОтправлятьУведомления"]);
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
Параметры.Вставить("summary" , ОписаниеСобытия["Заголовок"]);
|
||||||
|
Параметры.Вставить("description", ОписаниеСобытия["Описание"]);
|
||||||
|
Параметры.Вставить("location" , ОписаниеСобытия["МестоПроведения"]);
|
||||||
|
Параметры.Вставить("start" , ПреобразоватьДату(Дата0));
|
||||||
|
Параметры.Вставить("end" , ПреобразоватьДату(Дата1));
|
||||||
|
Параметры.Вставить("attachments", Вложения);
|
||||||
|
|
||||||
|
ПараметрыURL = Новый Структура;
|
||||||
|
ПараметрыURL.Вставить("sendUpdates" , ?(Уведомления, "all", "none"));
|
||||||
|
ПараметрыURL.Вставить("supportsAttachments" , ?(ЗначениеЗаполнено(Вложения), "true", "false"));
|
||||||
|
|
||||||
|
URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
||||||
|
|
||||||
|
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Параметры);
|
||||||
|
|
||||||
|
Если Существующее Тогда
|
||||||
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина);
|
||||||
|
Иначе
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки, Истина);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Процедура ПолучитьСписокКалендарейРекурсивно(Знач Заголовки, МассивКалендарей, Страница = "")
|
Процедура ПолучитьСписокКалендарейРекурсивно(Знач Заголовки, МассивКалендарей, Страница = "")
|
||||||
|
|
||||||
|
Items = "items";
|
||||||
|
NPT = "nextPageToken";
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Страница) Тогда
|
Если ЗначениеЗаполнено(Страница) Тогда
|
||||||
@@ -186,8 +512,8 @@
|
|||||||
,
|
,
|
||||||
, Заголовки);
|
, Заголовки);
|
||||||
|
|
||||||
Календари = Результат["items"];
|
Календари = Результат[Items];
|
||||||
Страница = Результат["nextPageToken"];
|
Страница = Результат[NPT];
|
||||||
|
|
||||||
Для Каждого Календарь Из Календари Цикл
|
Для Каждого Календарь Из Календари Цикл
|
||||||
МассивКалендарей.Добавить(Календарь);
|
МассивКалендарей.Добавить(Календарь);
|
||||||
@@ -199,4 +525,31 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПолучитьСписокСобытийРекурсивно(Знач Заголовки, Знач Календарь, МассивСобытий, Страница = "")
|
||||||
|
|
||||||
|
Items = "items";
|
||||||
|
NPT = "nextPageToken";
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(Страница) Тогда
|
||||||
|
Параметры.Вставить("pageToken", Страница);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/calendars/" + Календарь + "/events"
|
||||||
|
,
|
||||||
|
, Заголовки);
|
||||||
|
|
||||||
|
События = Результат[Items];
|
||||||
|
Страница = Результат[NPT];
|
||||||
|
|
||||||
|
Для Каждого Событие Из События Цикл
|
||||||
|
МассивСобытий.Добавить(Событие);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Если События.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
||||||
|
ПолучитьСписокСобытийРекурсивно(Заголовки, МассивСобытий, Страница);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
@@ -111,4 +111,5 @@
|
|||||||
Возврат СтрСоединить(МассивРазрешений, " ");
|
Возврат СтрСоединить(МассивРазрешений, " ");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
@@ -286,6 +286,7 @@
|
|||||||
|
|
||||||
МассивМедиа = Новый Массив;
|
МассивМедиа = Новый Массив;
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
|
MIS = "media_id_string";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(МассивФайлов) Тогда
|
Если ЗначениеЗаполнено(МассивФайлов) Тогда
|
||||||
|
|
||||||
@@ -301,7 +302,7 @@
|
|||||||
ФайлОтправки = Новый ДвоичныеДанные(ФайлОтправки);
|
ФайлОтправки = Новый ДвоичныеДанные(ФайлОтправки);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
IDМедиа = ЗагрузитьМедиафайл(ФайлОтправки, ТипВложений, Параметры_)["media_id_string"];
|
IDМедиа = ЗагрузитьМедиафайл(ФайлОтправки, ТипВложений, Параметры_)[MIS];
|
||||||
МассивМедиа.Добавить(IDМедиа);
|
МассивМедиа.Добавить(IDМедиа);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
@@ -320,6 +321,9 @@
|
|||||||
|
|
||||||
Функция ЗагрузитьМедиафайл(Знач Файл, Знач Тип, Знач Параметры)
|
Функция ЗагрузитьМедиафайл(Знач Файл, Знач Тип, Знач Параметры)
|
||||||
|
|
||||||
|
ProcessingInfo = "processing_info";
|
||||||
|
MediaKey = "media_key";
|
||||||
|
MIS = "media_id_string";
|
||||||
Command = "command";
|
Command = "command";
|
||||||
ВидЗапроса = "POST";
|
ВидЗапроса = "POST";
|
||||||
Единица = 1024;
|
Единица = 1024;
|
||||||
@@ -362,8 +366,8 @@
|
|||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
||||||
|
|
||||||
ОтветИнициализации = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
ОтветИнициализации = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
KeyИнициализации = ОтветИнициализации["media_key"];
|
KeyИнициализации = ОтветИнициализации[MediaKey];
|
||||||
IDИнициализации = ОтветИнициализации["media_id_string"];
|
IDИнициализации = ОтветИнициализации[MIS];
|
||||||
Счетчик = 0;
|
Счетчик = 0;
|
||||||
|
|
||||||
Для Каждого Часть Из МассивЧтения Цикл
|
Для Каждого Часть Из МассивЧтения Цикл
|
||||||
@@ -390,7 +394,7 @@
|
|||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
СтатусОбработки = Ответ["processing_info"]["state"];
|
СтатусОбработки = Ответ[ProcessingInfo]["state"];
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
|
|
||||||
Поля.Вставить(Command , "STATUS");
|
Поля.Вставить(Command , "STATUS");
|
||||||
@@ -400,7 +404,7 @@
|
|||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "GET", URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "GET", URL);
|
||||||
Ответ = OPI_Инструменты.Get(URL, Поля, Авторизация);
|
Ответ = OPI_Инструменты.Get(URL, Поля, Авторизация);
|
||||||
СтатусОбработки = Ответ["processing_info"]["state"];
|
СтатусОбработки = Ответ[ProcessingInfo]["state"];
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
|
@@ -141,6 +141,8 @@
|
|||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/polls.getPhotoUploadServer", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/polls.getPhotoUploadServer", Параметры_);
|
||||||
Response = "response";
|
Response = "response";
|
||||||
|
Hash = "hash";
|
||||||
|
Photo = "photo";
|
||||||
URL = Ответ[Response]["upload_url"];
|
URL = Ответ[Response]["upload_url"];
|
||||||
IDФото = "";
|
IDФото = "";
|
||||||
|
|
||||||
@@ -162,8 +164,8 @@
|
|||||||
|
|
||||||
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, Файлы);
|
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, Файлы);
|
||||||
|
|
||||||
Параметры_.Вставить("hash" , Ответ["hash"]);
|
Параметры_.Вставить(Hash , Ответ[Hash]);
|
||||||
Параметры_.Вставить("photo" , Ответ["photo"]);
|
Параметры_.Вставить(Photo , Ответ[Photo]);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/polls.savePhoto", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/polls.savePhoto", Параметры_);
|
||||||
IDФото = Ответ.Получить(Response)["id"];
|
IDФото = Ответ.Получить(Response)["id"];
|
||||||
@@ -543,13 +545,14 @@
|
|||||||
// Строка - Сокращенный URL
|
// Строка - Сокращенный URL
|
||||||
Функция СократитьСсылку(Знач URL, Знач Параметры = "") Экспорт
|
Функция СократитьСсылку(Знач URL, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
|
Response = "response";
|
||||||
Параметры_ = Новый Структура;
|
Параметры_ = Новый Структура;
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
Параметры_.Вставить("url", URL);
|
Параметры_.Вставить("url", URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://api.vk.com/method/utils.getShortLink", Параметры_);
|
Ответ = OPI_Инструменты.Get("https://api.vk.com/method/utils.getShortLink", Параметры_);
|
||||||
|
|
||||||
Возврат Ответ["response"]["short_url"];
|
Возврат Ответ[Response]["short_url"];
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
@@ -597,6 +600,7 @@
|
|||||||
МассивОтветов = Новый Массив;
|
МассивОтветов = Новый Массив;
|
||||||
МассивНабора = Новый Массив;
|
МассивНабора = Новый Массив;
|
||||||
МаксимумПостов = 30;
|
МаксимумПостов = 30;
|
||||||
|
Response = "response";
|
||||||
|
|
||||||
Для Каждого Пост Из МассивИДПостов Цикл
|
Для Каждого Пост Из МассивИДПостов Цикл
|
||||||
|
|
||||||
@@ -608,7 +612,7 @@
|
|||||||
Параметры_.Вставить("post_ids", СтрокаНомеров);
|
Параметры_.Вставить("post_ids", СтрокаНомеров);
|
||||||
|
|
||||||
Статистика = OPI_Инструменты.Get("api.vk.com/method/stats.getPostReach", Параметры_);
|
Статистика = OPI_Инструменты.Get("api.vk.com/method/stats.getPostReach", Параметры_);
|
||||||
МассивСтатистики = Статистика["response"];
|
МассивСтатистики = Статистика[Response];
|
||||||
|
|
||||||
Для Каждого ЭлементСтатистики Из МассивСтатистики Цикл
|
Для Каждого ЭлементСтатистики Из МассивСтатистики Цикл
|
||||||
МассивОтветов.Добавить(ЭлементСтатистики);
|
МассивОтветов.Добавить(ЭлементСтатистики);
|
||||||
@@ -624,7 +628,7 @@
|
|||||||
Параметры_.Вставить("post_ids", СтрокаНомеров);
|
Параметры_.Вставить("post_ids", СтрокаНомеров);
|
||||||
|
|
||||||
Статистика = OPI_Инструменты.Get("api.vk.com/method/stats.getPostReach", Параметры_);
|
Статистика = OPI_Инструменты.Get("api.vk.com/method/stats.getPostReach", Параметры_);
|
||||||
МассивСтатистики = Статистика["response"];
|
МассивСтатистики = Статистика[Response];
|
||||||
|
|
||||||
Для Каждого ЭлементСтатистики Из МассивСтатистики Цикл
|
Для Каждого ЭлементСтатистики Из МассивСтатистики Цикл
|
||||||
МассивОтветов.Добавить(ЭлементСтатистики);
|
МассивОтветов.Добавить(ЭлементСтатистики);
|
||||||
@@ -795,13 +799,14 @@
|
|||||||
// Соответствие Из Строка - Ключ - ID, Значение - Имя
|
// Соответствие Из Строка - Ключ - ID, Значение - Имя
|
||||||
Функция ПолучитьСписокКатегорийТоваров(Знач Параметры = "") Экспорт
|
Функция ПолучитьСписокКатегорийТоваров(Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
|
Response = "response";
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getCategories", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getCategories", Параметры_);
|
||||||
Количество = Ответ["response"]["count"];
|
Количество = Ответ[Response]["count"];
|
||||||
|
|
||||||
Параметры_.Вставить("count", Количество);
|
Параметры_.Вставить("count", Количество);
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getCategories", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getCategories", Параметры_);
|
||||||
Категории = Ответ["response"]["items"];
|
Категории = Ответ[Response]["items"];
|
||||||
|
|
||||||
СоответствиеКатегорий = Новый Соответствие;
|
СоответствиеКатегорий = Новый Соответствие;
|
||||||
|
|
||||||
@@ -1199,10 +1204,11 @@
|
|||||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера
|
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера
|
||||||
Функция ПолучитьСписокСвойств(Знач Параметры = "") Экспорт
|
Функция ПолучитьСписокСвойств(Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
|
Response = "response";
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getProperties", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getProperties", Параметры_);
|
||||||
Свойства = Ответ["response"]["items"];
|
Свойства = Ответ[Response]["items"];
|
||||||
|
|
||||||
Возврат Свойства;
|
Возврат Свойства;
|
||||||
|
|
||||||
@@ -1435,6 +1441,7 @@
|
|||||||
|
|
||||||
Функция ЗагрузитьФотоНаСервер(Знач Картинка, Параметры, Знач Вид = "Пост")
|
Функция ЗагрузитьФотоНаСервер(Знач Картинка, Параметры, Знач Вид = "Пост")
|
||||||
|
|
||||||
|
Response = "response";
|
||||||
Файлы = Новый Соответствие;
|
Файлы = Новый Соответствие;
|
||||||
Метод = ОпределитьМетодЗагрузкиИзображений(Вид);
|
Метод = ОпределитьМетодЗагрузкиИзображений(Вид);
|
||||||
URL = "api.vk.com/method/";
|
URL = "api.vk.com/method/";
|
||||||
@@ -1454,7 +1461,7 @@
|
|||||||
Файлы.Вставить(КлючКартинка, ЗначениеКартинка);
|
Файлы.Вставить(КлючКартинка, ЗначениеКартинка);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(Загрузка, Параметры);
|
Ответ = OPI_Инструменты.Get(Загрузка, Параметры);
|
||||||
URL = Ответ["response"]["upload_url"];
|
URL = Ответ[Response]["upload_url"];
|
||||||
Параметры.Вставить("upload_url", URL);
|
Параметры.Вставить("upload_url", URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, Файлы);
|
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, Файлы);
|
||||||
@@ -1532,7 +1539,8 @@
|
|||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
Параметры_.Вставить("v", "5.199");
|
Параметры_.Вставить("v", "5.199");
|
||||||
|
|
||||||
Подборка = OPI_Инструменты.ЧислоВСтроку(Подборка);
|
Response = "response";
|
||||||
|
Подборка = OPI_Инструменты.ЧислоВСтроку(Подборка);
|
||||||
|
|
||||||
ЗаполнитьПоляЗапросаТовара(ОписаниеТовара, Параметры_);
|
ЗаполнитьПоляЗапросаТовара(ОписаниеТовара, Параметры_);
|
||||||
|
|
||||||
@@ -1546,7 +1554,7 @@
|
|||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/market." + Метод, Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market." + Метод, Параметры_);
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(ИДТовара) Тогда
|
Если Не ЗначениеЗаполнено(ИДТовара) Тогда
|
||||||
ИДТовара = Ответ["response"]["market_item_id"];
|
ИДТовара = Ответ[Response]["market_item_id"];
|
||||||
ИДТовара = OPI_Инструменты.ЧислоВСтроку(ИДТовара);
|
ИДТовара = OPI_Инструменты.ЧислоВСтроку(ИДТовара);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -1568,11 +1576,12 @@
|
|||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
PhotoID = "photo_id";
|
PhotoID = "photo_id";
|
||||||
|
Response = "response";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Картинка) Тогда
|
Если ЗначениеЗаполнено(Картинка) Тогда
|
||||||
|
|
||||||
Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры_, "Товар");
|
Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры_, "Товар");
|
||||||
ИДФото = Ответ["response"][PhotoID];
|
ИДФото = Ответ[Response][PhotoID];
|
||||||
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
|
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
|
||||||
|
|
||||||
Параметры_.Вставить(PhotoID, ИДФото);
|
Параметры_.Вставить(PhotoID, ИДФото);
|
||||||
@@ -1582,7 +1591,7 @@
|
|||||||
Если ЗначениеЗаполнено(ИДПодборки) Тогда
|
Если ЗначениеЗаполнено(ИДПодборки) Тогда
|
||||||
|
|
||||||
Подборки = ПолучитьПодборкиПоИД(ИДПодборки, Параметры_);
|
Подборки = ПолучитьПодборкиПоИД(ИДПодборки, Параметры_);
|
||||||
Подборки = Подборки["response"]["items"];
|
Подборки = Подборки[Response]["items"];
|
||||||
|
|
||||||
Если Не Подборки.Количество() = 0 Тогда
|
Если Не Подборки.Количество() = 0 Тогда
|
||||||
ИДФото = Подборки[0]["photo"]["id"];
|
ИДФото = Подборки[0]["photo"]["id"];
|
||||||
@@ -1612,7 +1621,8 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ЗаполнитьПараметрыЗагрузкиФото(Знач Метод, Знач Ответ, Параметры)
|
Процедура ЗаполнитьПараметрыЗагрузкиФото(Знач Метод, Знач Ответ, Параметры)
|
||||||
|
|
||||||
|
Response = "response";
|
||||||
Способ = Метод["Способ"];
|
Способ = Метод["Способ"];
|
||||||
СтандартныйСпособ = 1;
|
СтандартныйСпособ = 1;
|
||||||
НовыйСпособ = 2;
|
НовыйСпособ = 2;
|
||||||
@@ -1644,7 +1654,7 @@
|
|||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Параметры.Вставить("upload_results", Ответ["response"]["upload_result"]);
|
Параметры.Вставить("upload_results", Ответ[Response]["upload_result"]);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -1652,13 +1662,14 @@
|
|||||||
|
|
||||||
Процедура ЗаполнитьПоляЗапросаТовара(Знач ОписаниеТовара, Параметры)
|
Процедура ЗаполнитьПоляЗапросаТовара(Знач ОписаниеТовара, Параметры)
|
||||||
|
|
||||||
|
Response = "response";
|
||||||
ОсновноеФото = ОписаниеТовара["ОсновноеФото"];
|
ОсновноеФото = ОписаниеТовара["ОсновноеФото"];
|
||||||
ДопФото = ОписаниеТовара["ДополнительныеФото"];
|
ДопФото = ОписаниеТовара["ДополнительныеФото"];
|
||||||
Свойства = ОписаниеТовара["ЗначенияСвойств"];
|
Свойства = ОписаниеТовара["ЗначенияСвойств"];
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(ОсновноеФото) Тогда
|
Если ЗначениеЗаполнено(ОсновноеФото) Тогда
|
||||||
Ответ = ЗагрузитьФотоНаСервер(ОсновноеФото, Параметры, "Товар");
|
Ответ = ЗагрузитьФотоНаСервер(ОсновноеФото, Параметры, "Товар");
|
||||||
ИДФото = Ответ["response"]["photo_id"];
|
ИДФото = Ответ[Response]["photo_id"];
|
||||||
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
|
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
|
||||||
Параметры.Вставить("main_photo_id", ИДФото);
|
Параметры.Вставить("main_photo_id", ИДФото);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -1699,11 +1710,12 @@
|
|||||||
Если МассивФото.Количество() > 0 Тогда
|
Если МассивФото.Количество() > 0 Тогда
|
||||||
|
|
||||||
СтрокаФотографий = "";
|
СтрокаФотографий = "";
|
||||||
|
Response = "response";
|
||||||
|
|
||||||
Для Каждого Фото Из МассивФото Цикл
|
Для Каждого Фото Из МассивФото Цикл
|
||||||
|
|
||||||
Ответ = ЗагрузитьФотоНаСервер(Фото, Параметры, "Товар");
|
Ответ = ЗагрузитьФотоНаСервер(Фото, Параметры, "Товар");
|
||||||
ИДФото = Ответ["response"]["photo_id"];
|
ИДФото = Ответ[Response]["photo_id"];
|
||||||
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
|
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
|
||||||
СтрокаФотографий = СтрокаФотографий + ИДФото + ",";
|
СтрокаФотографий = СтрокаФотографий + ИДФото + ",";
|
||||||
|
|
||||||
@@ -1718,9 +1730,10 @@
|
|||||||
|
|
||||||
Процедура ПолучитьСписокТоваровРекурсивно(МассивТоваров, Параметры, Сдвиг = 0)
|
Процедура ПолучитьСписокТоваровРекурсивно(МассивТоваров, Параметры, Сдвиг = 0)
|
||||||
|
|
||||||
|
Response = "response";
|
||||||
МаксимумВЗапросе = 200;
|
МаксимумВЗапросе = 200;
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.get", Параметры);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.get", Параметры);
|
||||||
Товары = Ответ["response"]["items"];
|
Товары = Ответ[Response]["items"];
|
||||||
|
|
||||||
Если Товары.Количество() = 0 Тогда
|
Если Товары.Количество() = 0 Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
@@ -1738,9 +1751,10 @@
|
|||||||
|
|
||||||
Процедура ПолучитьСписокАльбомовРекурсивно(МассивАльбомов, Параметры, Сдвиг = 0)
|
Процедура ПолучитьСписокАльбомовРекурсивно(МассивАльбомов, Параметры, Сдвиг = 0)
|
||||||
|
|
||||||
|
Response = "response";
|
||||||
МаксимумВЗапросе = 100;
|
МаксимумВЗапросе = 100;
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getAlbums", Параметры);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getAlbums", Параметры);
|
||||||
Альбомы = Ответ["response"]["items"];
|
Альбомы = Ответ[Response]["items"];
|
||||||
|
|
||||||
Если Альбомы.Количество() = 0 Тогда
|
Если Альбомы.Количество() = 0 Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
@@ -1758,9 +1772,10 @@
|
|||||||
|
|
||||||
Процедура ПолучитьСписокЗаказовРекурсивно(МассивЗаказов, Параметры, Сдвиг = 0)
|
Процедура ПолучитьСписокЗаказовРекурсивно(МассивЗаказов, Параметры, Сдвиг = 0)
|
||||||
|
|
||||||
|
Response = "response";
|
||||||
МаксимумВЗапросе = 50;
|
МаксимумВЗапросе = 50;
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getGroupOrders", Параметры);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.getGroupOrders", Параметры);
|
||||||
Заказы = Ответ["response"]["items"];
|
Заказы = Ответ[Response]["items"];
|
||||||
|
|
||||||
Если Заказы.Количество() = 0 Тогда
|
Если Заказы.Количество() = 0 Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
|
@@ -54,6 +54,7 @@
|
|||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
||||||
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
@@ -61,7 +62,7 @@
|
|||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ["href"];
|
URLОтвета = Ответ[Href];
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
@@ -125,6 +126,7 @@
|
|||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
||||||
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("from" , Оригинал);
|
Параметры.Вставить("from" , Оригинал);
|
||||||
@@ -134,7 +136,7 @@
|
|||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ["href"];
|
URLОтвета = Ответ[Href];
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
@@ -227,6 +229,7 @@
|
|||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
||||||
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("from" , Оригинал);
|
Параметры.Вставить("from" , Оригинал);
|
||||||
@@ -236,7 +239,7 @@
|
|||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ["href"];
|
URLОтвета = Ответ[Href];
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Файл, Знач Перезаписывать = Ложь) Экспорт
|
Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Файл, Знач Перезаписывать = Ложь) Экспорт
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
Href = "href";
|
||||||
|
|
||||||
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||||
Файл = Новый ДвоичныеДанные(Файл);
|
Файл = Новый ДвоичныеДанные(Файл);
|
||||||
@@ -268,7 +272,7 @@
|
|||||||
Параметры.Вставить("overwrite" , Перезаписывать);
|
Параметры.Вставить("overwrite" , Перезаписывать);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Параметры, Заголовки);
|
||||||
URL = Ответ["href"];
|
URL = Ответ[Href];
|
||||||
Ответ = OPI_Инструменты.PutMultipart(URL, , Файл, "multipart", Заголовки);
|
Ответ = OPI_Инструменты.PutMultipart(URL, , Файл, "multipart", Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
@@ -430,6 +434,7 @@
|
|||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Адрес = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
Адрес = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
||||||
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("public_key", URL);
|
Параметры.Вставить("public_key", URL);
|
||||||
@@ -445,7 +450,7 @@
|
|||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(Адрес + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(Адрес + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ["href"];
|
URLОтвета = Ответ[Href];
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
@@ -471,6 +476,7 @@
|
|||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Назначение = ?(ОбщийДоступ, "publish", "unpublish");
|
Назначение = ?(ОбщийДоступ, "publish", "unpublish");
|
||||||
|
Href = "href";
|
||||||
|
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Назначение;
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Назначение;
|
||||||
|
|
||||||
@@ -480,7 +486,7 @@
|
|||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ["href"];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
|
@@ -21,12 +21,13 @@
|
|||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
// BSLLS:Typo-off
|
||||||
|
|
||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
#Область HTTPМетоды
|
#Область HTTPМетоды
|
||||||
|
|
||||||
// Без тела
|
#Область ЗапросыБезТела
|
||||||
|
|
||||||
Функция Get(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "") Экспорт
|
Функция Get(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "") Экспорт
|
||||||
Возврат ВыполнитьЗапросБезТела(URL, "GET", Параметры, ДопЗаголовки);
|
Возврат ВыполнитьЗапросБезТела(URL, "GET", Параметры, ДопЗаголовки);
|
||||||
@@ -36,7 +37,9 @@
|
|||||||
Возврат ВыполнитьЗапросБезТела(URL, "DELETE", Параметры, ДопЗаголовки);
|
Возврат ВыполнитьЗапросБезТела(URL, "DELETE", Параметры, ДопЗаголовки);
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// С телом
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область ЗапросыСТелом
|
||||||
|
|
||||||
Функция Post(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина) Экспорт
|
Функция Post(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина) Экспорт
|
||||||
Возврат ВыполнитьЗапросСТелом(URL, "POST", Параметры, ДопЗаголовки, JSON);
|
Возврат ВыполнитьЗапросСТелом(URL, "POST", Параметры, ДопЗаголовки, JSON);
|
||||||
@@ -50,6 +53,10 @@
|
|||||||
Возврат ВыполнитьЗапросСТелом(URL, "PUT", Параметры, ДопЗаголовки, JSON);
|
Возврат ВыполнитьЗапросСТелом(URL, "PUT", Параметры, ДопЗаголовки, JSON);
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область ЗапросыMultipart
|
||||||
|
|
||||||
Функция PostMultipart(Знач URL
|
Функция PostMultipart(Знач URL
|
||||||
, Знач Параметры
|
, Знач Параметры
|
||||||
, Знач Файлы = ""
|
, Знач Файлы = ""
|
||||||
@@ -70,6 +77,8 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
Функция ПараметрыЗапросаВСоответствие(Знач СтрокаПараметров) Экспорт
|
Функция ПараметрыЗапросаВСоответствие(Знач СтрокаПараметров) Экспорт
|
||||||
|
|
||||||
СоответствиеВозврата = Новый Соответствие;
|
СоответствиеВозврата = Новый Соответствие;
|
||||||
@@ -110,6 +119,29 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура УдалитьПустыеПоляКоллекции(Коллекция) Экспорт
|
||||||
|
|
||||||
|
ТипКоллекции = ТипЗнч(Коллекция);
|
||||||
|
ВыходнаяКоллекция = Новый(ТипКоллекции);
|
||||||
|
|
||||||
|
Если ТипКоллекции = Тип("Соответствие") Или ТипКоллекции = Тип("Структура") Тогда
|
||||||
|
|
||||||
|
УдалитьПустыеКлючиЗначения(Коллекция, ВыходнаяКоллекция);
|
||||||
|
|
||||||
|
ИначеЕсли ТипКоллекции = Тип("Массив") Тогда
|
||||||
|
|
||||||
|
УдалитьПустыеЭлементыМассива(Коллекция, ВыходнаяКоллекция);
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
ВыходнаяКоллекция = Коллекция;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Коллекция = ВыходнаяКоллекция;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область Служебные
|
#Область Служебные
|
||||||
@@ -181,22 +213,6 @@
|
|||||||
Возврат СтрЗаменить(Строка(Число), Символы.НПП, "");
|
Возврат СтрЗаменить(Строка(Число), Символы.НПП, "");
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ВыполнитьСкрипт(Знач Текст) Экспорт
|
|
||||||
|
|
||||||
ИмяСкрипта = ПолучитьИмяВременногоФайла(".ps1");
|
|
||||||
ТекстСкрипта = Новый ТекстовыйДокумент;
|
|
||||||
|
|
||||||
ТекстСкрипта.УстановитьТекст(Текст);
|
|
||||||
|
|
||||||
ТекстСкрипта.Записать(ИмяСкрипта, КодировкаТекста.UTF8);
|
|
||||||
|
|
||||||
КодВозврата = 0;
|
|
||||||
ЗапуститьПриложение("powershell -file " + ИмяСкрипта + " -noexit", , Истина, КодВозврата);
|
|
||||||
|
|
||||||
УдалитьФайлы(ИмяСкрипта);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@@ -208,56 +224,26 @@
|
|||||||
Если Не ЗначениеЗаполнено(Параметры) Тогда
|
Если Не ЗначениеЗаполнено(Параметры) Тогда
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Переадресация = 300;
|
||||||
|
Ошибка = 400;
|
||||||
|
ТипДанных = ?(JSON, "application/json", "application/x-www-form-urlencoded");
|
||||||
|
СтруктураURL = РазбитьURL(URL);
|
||||||
|
Сервер = СтруктураURL["Сервер"];
|
||||||
|
Адрес = СтруктураURL["Адрес"];
|
||||||
|
|
||||||
|
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки, ТипДанных);
|
||||||
|
Соединение = СоздатьСоединение(Сервер);
|
||||||
|
|
||||||
|
УстановитьТелоЗапроса(Запрос, Параметры, JSON);
|
||||||
|
|
||||||
GZip = "gzip";
|
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||||
ТипДанных = ?(JSON, "application/json", "application/x-www-form-urlencoded");
|
ЭтоПереадресация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < Ошибка;
|
||||||
СтруктураURL = РазбитьURL(URL);
|
|
||||||
|
Если ЭтоПереадресация Тогда
|
||||||
Заголовки = Новый Соответствие;
|
Ответ = ВыполнитьЗапросСТелом(Ответ.Заголовки["Location"], Вид, Параметры, ДопЗаголовки, JSON);
|
||||||
Заголовки.Вставить("Content-Type", ТипДанных);
|
Иначе
|
||||||
Заголовки.Вставить("Accept-Encoding", GZip);
|
ОбработатьОтвет(Ответ);
|
||||||
Заголовки.Вставить("Accept", "*/*");
|
|
||||||
Заголовки.Вставить("Connection", "keep-alive");
|
|
||||||
|
|
||||||
Если ТипЗнч(ДопЗаголовки) = Тип("Соответствие") Тогда
|
|
||||||
|
|
||||||
Для Каждого Заголовок Из ДопЗаголовки Цикл
|
|
||||||
Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Соединение = Новый HTTPСоединение(СтруктураURL["Сервер"], 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL);
|
|
||||||
НовыйЗапрос = Новый HTTPЗапрос(СтруктураURL["Адрес"], Заголовки);
|
|
||||||
|
|
||||||
Если JSON Тогда
|
|
||||||
Данные = JSONСтрокой(Параметры);
|
|
||||||
Иначе
|
|
||||||
СтрокаПараметров = ПараметрыЗапросаВСтроку(Параметры);
|
|
||||||
Данные = Прав(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
НовыйЗапрос.УстановитьТелоИзСтроки(Данные);
|
|
||||||
|
|
||||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, НовыйЗапрос);
|
|
||||||
|
|
||||||
НужнаРаспаковка = Ответ.Заголовки.Получить("Content-Encoding") = GZip Или Ответ.Заголовки.Получить(
|
|
||||||
"content-encoding") = GZip;
|
|
||||||
|
|
||||||
Если НужнаРаспаковка Тогда
|
|
||||||
Ответ = РаспаковатьОтвет(Ответ);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Ответ = ?(ТипЗнч(Ответ) = Тип("HTTPОтвет"), Ответ.ПолучитьТелоКакДвоичныеДанные(), Ответ);
|
|
||||||
|
|
||||||
Если ТипЗнч(Ответ) = Тип("ДвоичныеДанные") Тогда
|
|
||||||
|
|
||||||
Попытка
|
|
||||||
Ответ = JsonВСтруктуру(Ответ);
|
|
||||||
Исключение
|
|
||||||
Ответ = ПолучитьСтрокуИзДвоичныхДанных(Ответ);
|
|
||||||
КонецПопытки;
|
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
@@ -270,40 +256,28 @@
|
|||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Заголовки = Новый Соответствие;
|
Переадресация = 300;
|
||||||
|
Ошибка = 400;
|
||||||
Если ТипЗнч(ДопЗаголовки) = Тип("Соответствие") Тогда
|
СтруктураURL = РазбитьURL(URL);
|
||||||
|
Сервер = СтруктураURL["Сервер"];
|
||||||
Для Каждого Заголовок Из ДопЗаголовки Цикл
|
Адрес = СтруктураURL["Адрес"] + ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
СтруктураURL = РазбитьURL(URL);
|
|
||||||
Соединение = Новый HTTPСоединение(СтруктураURL["Сервер"], 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL);
|
|
||||||
Запрос = Новый HTTPЗапрос(СтруктураURL["Адрес"] + ПараметрыЗапросаВСтроку(Параметры), Заголовки);
|
|
||||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
|
||||||
Переадресация = 300;
|
|
||||||
НеНайдено = 400;
|
|
||||||
|
|
||||||
Если Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < НеНайдено Тогда
|
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки);
|
||||||
Возврат ВыполнитьЗапросБезТела(Ответ.Заголовки["Location"], Вид, Параметры, ДопЗаголовки);
|
Соединение = СоздатьСоединение(Сервер);
|
||||||
|
|
||||||
|
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||||
|
ЭтоПереадрисация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < Ошибка;
|
||||||
|
|
||||||
|
Если ЭтоПереадрисация Тогда
|
||||||
|
Ответ = ВыполнитьЗапросБезТела(Ответ.Заголовки["Location"], Вид, Параметры, ДопЗаголовки);
|
||||||
|
Иначе
|
||||||
|
ОбработатьОтвет(Ответ);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Попытка
|
Возврат Ответ;
|
||||||
ТелоОтвета = JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные());
|
|
||||||
Исключение
|
|
||||||
ТелоОтвета = Ответ.ПолучитьТелоКакДвоичныеДанные();
|
|
||||||
КонецПопытки;
|
|
||||||
|
|
||||||
Возврат ТелоОтвета;
|
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// BSLLS:CognitiveComplexity-off
|
|
||||||
// BSLLS:Typo-off
|
|
||||||
|
|
||||||
Функция ВыполнитьЗапросМультипарт(Знач URL
|
Функция ВыполнитьЗапросМультипарт(Знач URL
|
||||||
, Знач Вид
|
, Знач Вид
|
||||||
, Знач Параметры
|
, Знач Параметры
|
||||||
@@ -319,44 +293,128 @@
|
|||||||
Файлы = Новый Соответствие;
|
Файлы = Новый Соответствие;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ЗаменаТочки = "___";
|
Переадресация = 300;
|
||||||
GZip = "gzip";
|
Ошибка = 400;
|
||||||
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
|
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
|
||||||
СтруктураURL = РазбитьURL(URL);
|
РазделительСтрок = Символы.ВК + Символы.ПС;
|
||||||
|
ТипДанных = "multipart/form-data; boundary=" + Boundary;
|
||||||
|
СтруктураURL = РазбитьURL(URL);
|
||||||
|
Сервер = СтруктураURL["Сервер"];
|
||||||
|
Адрес = СтруктураURL["Адрес"];
|
||||||
|
|
||||||
|
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки, ТипДанных);
|
||||||
|
Соединение = СоздатьСоединение(Сервер);
|
||||||
|
|
||||||
|
ТелоЗапроса = Запрос.ПолучитьТелоКакПоток();
|
||||||
|
ЗаписьТекста = Новый ЗаписьДанных(ТелоЗапроса, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, "", "", Ложь);
|
||||||
|
|
||||||
|
ЗаписатьПараметрыМультипарт(ЗаписьТекста, Boundary, Параметры);
|
||||||
|
ЗаписатьФайлыМультипарт(ЗаписьТекста, Boundary, ТипКонтента, Файлы);
|
||||||
|
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + "--" + РазделительСтрок);
|
||||||
|
ЗаписьТекста.Закрыть();
|
||||||
|
|
||||||
|
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||||
|
ЭтоПереадресация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < Ошибка;
|
||||||
|
|
||||||
|
Если ЭтоПереадресация Тогда
|
||||||
|
Ответ = ВыполнитьЗапросМультипарт(Ответ.Заголовки["Location"]
|
||||||
|
, Вид
|
||||||
|
, Параметры
|
||||||
|
, Файлы
|
||||||
|
, ТипКонтента
|
||||||
|
, ДопЗаголовки);
|
||||||
|
Иначе
|
||||||
|
ОбработатьОтвет(Ответ);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция СоздатьЗапрос(Знач Адрес, Знач ДопЗаголовки = "", Знач ТипДанных = "")
|
||||||
|
|
||||||
Заголовки = Новый Соответствие;
|
Заголовки = Новый Соответствие;
|
||||||
Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary);
|
Заголовки.Вставить("Accept-Encoding", "gzip");
|
||||||
Заголовки.Вставить("Accept-Encoding", GZip);
|
Заголовки.Вставить("Accept" , "*/*");
|
||||||
Заголовки.Вставить("Accept", "*/*");
|
Заголовки.Вставить("Connection" , "keep-alive");
|
||||||
Заголовки.Вставить("Connection", "keep-alive");
|
|
||||||
|
Если ЗначениеЗаполнено(ТипДанных) Тогда
|
||||||
|
Заголовки.Вставить("Content-Type", ТипДанных);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(ДопЗаголовки) = Тип("Соответствие") Тогда
|
Если ТипЗнч(ДопЗаголовки) = Тип("Соответствие") Тогда
|
||||||
|
|
||||||
Для Каждого Заголовок Из ДопЗаголовки Цикл
|
Для Каждого Заголовок Из ДопЗаголовки Цикл
|
||||||
Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
НовыйЗапрос = Новый HTTPЗапрос(Адрес, Заголовки);
|
||||||
|
|
||||||
Соединение = Новый HTTPСоединение(СтруктураURL["Сервер"], 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL);
|
Возврат НовыйЗапрос;
|
||||||
НовыйЗапрос = Новый HTTPЗапрос(СтруктураURL["Адрес"], Заголовки);
|
|
||||||
ТелоЗапроса = НовыйЗапрос.ПолучитьТелоКакПоток();
|
КонецФункции
|
||||||
ЗаписьТекста = Новый ЗаписьДанных(ТелоЗапроса, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, "", "", Ложь);
|
|
||||||
|
|
||||||
|
Функция СоздатьСоединение(Знач Сервер)
|
||||||
|
Возврат Новый HTTPСоединение(Сервер, 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ОбработатьОтвет(Ответ)
|
||||||
|
|
||||||
|
GZip = "gzip";
|
||||||
|
НужнаРаспаковка =
|
||||||
|
Ответ.Заголовки.Получить("Content-Encoding") = GZip
|
||||||
|
Или Ответ.Заголовки.Получить("content-encoding") = GZip;
|
||||||
|
|
||||||
|
Если НужнаРаспаковка Тогда
|
||||||
|
Ответ = РаспаковатьОтвет(Ответ);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Ответ = ?(ТипЗнч(Ответ) = Тип("HTTPОтвет"), Ответ.ПолучитьТелоКакДвоичныеДанные(), Ответ);
|
||||||
|
|
||||||
|
Если ТипЗнч(Ответ) = Тип("ДвоичныеДанные") Тогда
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
Ответ = JsonВСтруктуру(Ответ);
|
||||||
|
Исключение
|
||||||
|
Ответ = ПолучитьСтрокуИзДвоичныхДанных(Ответ);
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура УстановитьТелоЗапроса(Запрос, Знач Параметры, Знач JSON)
|
||||||
|
|
||||||
|
Если JSON Тогда
|
||||||
|
Данные = JSONСтрокой(Параметры);
|
||||||
|
Иначе
|
||||||
|
СтрокаПараметров = ПараметрыЗапросаВСтроку(Параметры);
|
||||||
|
Данные = Прав(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Запрос.УстановитьТелоИзСтроки(Данные);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ЗаписатьПараметрыМультипарт(ЗаписьТекста, Знач Boundary, Знач Параметры)
|
||||||
|
|
||||||
РазделительСтрок = Символы.ВК + Символы.ПС;
|
РазделительСтрок = Символы.ВК + Символы.ПС;
|
||||||
|
|
||||||
Для Каждого Параметр Из Параметры Цикл
|
Для Каждого Параметр Из Параметры Цикл
|
||||||
|
|
||||||
Если Параметр.Значение = Неопределено
|
Если Параметр.Значение = Неопределено
|
||||||
Или Параметр.Значение = NULL Тогда
|
Или Параметр.Значение = NULL Тогда
|
||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
|
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
|
||||||
ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""" + Параметр.Ключ + """");
|
ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""" + Параметр.Ключ + """");
|
||||||
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
|
||||||
Если ТипЗнч(Параметр.Значение) = Тип("Строка")
|
Если ТипЗнч(Параметр.Значение) = Тип("Строка")
|
||||||
Или ТипЗнч(Параметр.Значение) = Тип("Число") Тогда
|
Или ТипЗнч(Параметр.Значение) = Тип("Число") Тогда
|
||||||
|
|
||||||
@@ -366,28 +424,37 @@
|
|||||||
ИначеЕсли ТипЗнч(Параметр.Значение) = Тип("Булево") Тогда
|
ИначеЕсли ТипЗнч(Параметр.Значение) = Тип("Булево") Тогда
|
||||||
|
|
||||||
ЗаписьТекста.ЗаписатьСтроку(?(Параметр.Значение, "true", "false"));
|
ЗаписьТекста.ЗаписатьСтроку(?(Параметр.Значение, "true", "false"));
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
ЗаписьТекста.Записать(Параметр.Значение);
|
ЗаписьТекста.Записать(Параметр.Значение);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
Счетчик = 0;
|
Процедура ЗаписатьФайлыМультипарт(ЗаписьТекста, Знач Boundary, Знач ТипКонтента, Знач Файлы)
|
||||||
|
|
||||||
|
РазделительСтрок = Символы.ВК + Символы.ПС;
|
||||||
|
ЗаменаТочки = "___";
|
||||||
|
|
||||||
Для Каждого Файл Из Файлы Цикл
|
Для Каждого Файл Из Файлы Цикл
|
||||||
|
|
||||||
ПутьФайл = СтрЗаменить(Файл.Ключ, ЗаменаТочки, ".");
|
ПутьФайл = СтрЗаменить(Файл.Ключ, ЗаменаТочки, ".");
|
||||||
|
|
||||||
Если ТипКонтента = "image/jpeg" Тогда
|
Если ТипКонтента = "image/jpeg" Тогда
|
||||||
ИмяФайлаОтправки = "photo";
|
ИмяФайлаОтправки = "photo";
|
||||||
Иначе
|
Иначе
|
||||||
ИмяФайлаОтправки = СтрЗаменить(Файл.Ключ, ЗаменаТочки, ".");
|
ИмяФайлаОтправки = СтрЗаменить(Файл.Ключ, ЗаменаТочки, ".");
|
||||||
ИмяФайлаОтправки = Лев(ИмяФайлаОтправки, СтрНайти(ИмяФайлаОтправки, ".") - 1);
|
ИмяФайлаОтправки = Лев(ИмяФайлаОтправки, СтрНайти(ИмяФайлаОтправки, ".") - 1);
|
||||||
ИмяФайлаОтправки = ?(ЗначениеЗаполнено(ИмяФайлаОтправки), ИмяФайлаОтправки, СтрЗаменить(Файл.Ключ,
|
ИмяФайлаОтправки = ?(ЗначениеЗаполнено(ИмяФайлаОтправки), ИмяФайлаОтправки, СтрЗаменить(Файл.Ключ,
|
||||||
ЗаменаТочки, "."));
|
ЗаменаТочки, "."));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
|
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
|
||||||
ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name="""
|
ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name="""
|
||||||
+ ИмяФайлаОтправки
|
+ ИмяФайлаОтправки
|
||||||
@@ -400,32 +467,34 @@
|
|||||||
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
ЗаписьТекста.Записать(Файл.Значение);
|
ЗаписьТекста.Записать(Файл.Значение);
|
||||||
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
|
||||||
Счетчик = Счетчик + 1;
|
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + "--" + РазделительСтрок);
|
КонецПроцедуры
|
||||||
|
|
||||||
ЗаписьТекста.Закрыть();
|
Процедура УдалитьПустыеКлючиЗначения(Знач Коллекция, ВыходнаяКоллекция)
|
||||||
|
|
||||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, НовыйЗапрос);
|
Для Каждого ЭлементКоллекции Из Коллекция Цикл
|
||||||
|
|
||||||
НужнаРаспаковка = Ответ.Заголовки.Получить("Content-Encoding") = GZip Или Ответ.Заголовки.Получить(
|
|
||||||
"content-encoding") = GZip;
|
|
||||||
|
|
||||||
Если НужнаРаспаковка Тогда
|
|
||||||
Ответ = РаспаковатьОтвет(Ответ);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Возврат ?(ТипЗнч(Ответ) = Тип("ДвоичныеДанные")
|
|
||||||
, JsonВСтруктуру(Ответ)
|
|
||||||
, JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные()));
|
|
||||||
|
|
||||||
КонецФункции
|
Если Не ЭлементКоллекции.Значение = Неопределено И Не ЭлементКоллекции.Значение = NULL Тогда
|
||||||
|
ВыходнаяКоллекция.Вставить(ЭлементКоллекции.Ключ, ЭлементКоллекции.Значение);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
// BSLLS:Typo-on
|
Процедура УдалитьПустыеЭлементыМассива(Знач Коллекция, ВыходнаяКоллекция)
|
||||||
// BSLLS:CognitiveComplexity-on
|
|
||||||
|
Для Каждого ЭлементКоллекции Из Коллекция Цикл
|
||||||
|
|
||||||
|
Если Не ЭлементКоллекции = Неопределено И Не ЭлементКоллекции = NULL Тогда
|
||||||
|
ВыходнаяКоллекция.Добавить(ЭлементКоллекции);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#Область GZip
|
#Область GZip
|
||||||
|
|
||||||
@@ -632,6 +701,7 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// BSLLS:LatinAndCyrillicSymbolInWord-on
|
// BSLLS:LatinAndCyrillicSymbolInWord-on
|
||||||
|
// BSLLS:Typo-on
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
|
@@ -65,7 +65,9 @@
|
|||||||
.ДобавитьСерверныйТест("ГК_ПолучитьТокен" , "Получить токен")
|
.ДобавитьСерверныйТест("ГК_ПолучитьТокен" , "Получить токен")
|
||||||
.ДобавитьСерверныйТест("ГК_ОбновитьТокен" , "Обновить токен")
|
.ДобавитьСерверныйТест("ГК_ОбновитьТокен" , "Обновить токен")
|
||||||
.ДобавитьСерверныйТест("ГК_ПолучитьСписокКалендарей" , "Получить список календарей")
|
.ДобавитьСерверныйТест("ГК_ПолучитьСписокКалендарей" , "Получить список календарей")
|
||||||
.ДобавитьСерверныйТест("ГК_СоздатьУдалитьКалендарь" , "Создать/удалить календарь");
|
.ДобавитьСерверныйТест("ГК_СоздатьУдалитьКалендарь" , "Создать/удалить календарь")
|
||||||
|
.ДобавитьСерверныйТест("ГК_СоздатьУдалитьСобытие" , "Создать/удалить событие")
|
||||||
|
.ДобавитьСерверныйТест("ГК_ПолучитьСписокСобытий" , "Получить список событий");
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -1238,6 +1240,7 @@
|
|||||||
.ИмеетТип("Массив").Заполнено();
|
.ИмеетТип("Массив").Заполнено();
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область YandexDisk
|
#Область YandexDisk
|
||||||
@@ -1558,7 +1561,10 @@
|
|||||||
НаименованиеИзмененное = Наименование + " (изм.)";
|
НаименованиеИзмененное = Наименование + " (изм.)";
|
||||||
ТипСоответствие = Тип("Соответствие");
|
ТипСоответствие = Тип("Соответствие");
|
||||||
ТипСтрока = Тип("Строка");
|
ТипСтрока = Тип("Строка");
|
||||||
|
Description = "description";
|
||||||
Summary = "summary";
|
Summary = "summary";
|
||||||
|
Черный = "#000000";
|
||||||
|
Желтый = "#ffd800";
|
||||||
|
|
||||||
Результат = OPI_GoogleCalendar.СоздатьКалендарь(Токен, Наименование);
|
Результат = OPI_GoogleCalendar.СоздатьКалендарь(Токен, Наименование);
|
||||||
|
|
||||||
@@ -1569,7 +1575,7 @@
|
|||||||
|
|
||||||
Календарь = Результат["id"];
|
Календарь = Результат["id"];
|
||||||
|
|
||||||
Результат = OPI_GoogleCalendar.ИзменитьКалендарь(Токен
|
Результат = OPI_GoogleCalendar.ИзменитьМетаданныеКалендаря(Токен
|
||||||
, Календарь
|
, Календарь
|
||||||
, НаименованиеИзмененное
|
, НаименованиеИзмененное
|
||||||
, Описание);
|
, Описание);
|
||||||
@@ -1577,23 +1583,139 @@
|
|||||||
ЮТест.ОжидаетЧто(Результат)
|
ЮТест.ОжидаетЧто(Результат)
|
||||||
.ИмеетТип(ТипСоответствие)
|
.ИмеетТип(ТипСоответствие)
|
||||||
.Свойство(Summary).Равно(НаименованиеИзмененное)
|
.Свойство(Summary).Равно(НаименованиеИзмененное)
|
||||||
.Свойство("description").Равно(Описание)
|
.Свойство(Description).Равно(Описание)
|
||||||
.Свойство("id").ИмеетТип(ТипСтрока).Заполнено();
|
.Свойство("id").ИмеетТип(ТипСтрока).Заполнено();
|
||||||
|
|
||||||
Результат = OPI_GoogleCalendar.ПолучитьКалендарь(Токен, Календарь);
|
Результат = OPI_GoogleCalendar.ПолучитьМетаданныеКалендаря(Токен, Календарь);
|
||||||
|
|
||||||
ЮТест.ОжидаетЧто(Результат)
|
ЮТест.ОжидаетЧто(Результат)
|
||||||
.ИмеетТип(ТипСоответствие)
|
.ИмеетТип(ТипСоответствие)
|
||||||
.Свойство(Summary).Равно(НаименованиеИзмененное)
|
.Свойство(Summary).Равно(НаименованиеИзмененное)
|
||||||
.Свойство("description").Равно(Описание)
|
.Свойство(Description).Равно(Описание)
|
||||||
.Свойство("id").ИмеетТип(ТипСтрока).Заполнено();
|
.Свойство("id").ИмеетТип(ТипСтрока).Заполнено();
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.ДобавитьКалендарьВСписок(Токен, Календарь);
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат)
|
||||||
|
.ИмеетТип(ТипСоответствие)
|
||||||
|
.Свойство(Summary).Равно(НаименованиеИзмененное)
|
||||||
|
.Свойство(Description).Равно(Описание)
|
||||||
|
.Свойство("id").ИмеетТип(ТипСтрока).Заполнено();
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.ИзменитьКалендарьСписка(Токен, Календарь, Черный, Желтый, Ложь);
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат)
|
||||||
|
.ИмеетТип(ТипСоответствие)
|
||||||
|
.Свойство(Summary).Равно(НаименованиеИзмененное)
|
||||||
|
.Свойство("foregroundColor").Равно(Черный)
|
||||||
|
.Свойство("backgroundColor").Равно(Желтый);
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.ПолучитьКалендарьСписка(Токен, Календарь);
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат)
|
||||||
|
.ИмеетТип(ТипСоответствие)
|
||||||
|
.Свойство(Summary).Равно(НаименованиеИзмененное)
|
||||||
|
.Свойство("foregroundColor").Равно(Черный)
|
||||||
|
.Свойство("backgroundColor").Равно(Желтый);
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.ОчиститьОсновнойКалендарь(Токен);
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат).НеЗаполнено();
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.УдалитьКалендарьИзСписка(Токен, Календарь);
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат).НеЗаполнено();
|
||||||
|
|
||||||
Результат = OPI_GoogleCalendar.УдалитьКалендарь(Токен, Календарь);
|
Результат = OPI_GoogleCalendar.УдалитьКалендарь(Токен, Календарь);
|
||||||
|
|
||||||
ЮТест.ОжидаетЧто(Результат).НеЗаполнено();
|
ЮТест.ОжидаетЧто(Результат).НеЗаполнено();
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ГК_СоздатьУдалитьСобытие() Экспорт
|
||||||
|
|
||||||
|
Токен = ПолучитьПараметр("Google_Token");
|
||||||
|
Календарь = ПолучитьПараметр("Google_Календарь");
|
||||||
|
Наименование = "Новое событие";
|
||||||
|
Описание = "Описание тестового события";
|
||||||
|
ОписаниеИзм = "Описание тестового события (изм.)";
|
||||||
|
ТипСоответствие = Тип("Соответствие");
|
||||||
|
ТипСтрока = Тип("Строка");
|
||||||
|
Summary = "summary";
|
||||||
|
Description = "description";
|
||||||
|
UID = "id";
|
||||||
|
Час = 3600;
|
||||||
|
|
||||||
|
Вложения = Новый Соответствие;
|
||||||
|
|
||||||
|
Вложения.Вставить("Картинка1"
|
||||||
|
, "https://opi.neocities.org/assets/images/logo_long-e8fdcca6ff8b32e679ea49a1ccdd3eac.png");
|
||||||
|
Вложения.Вставить("Картинка2"
|
||||||
|
, "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/Media/logo.png?v1");
|
||||||
|
|
||||||
|
СоответствиеСобытия = Новый Соответствие;
|
||||||
|
СоответствиеСобытия.Вставить("Описание" , Описание);
|
||||||
|
СоответствиеСобытия.Вставить("Заголовок" , Наименование);
|
||||||
|
СоответствиеСобытия.Вставить("МестоПроведения" , "В офисе");
|
||||||
|
СоответствиеСобытия.Вставить("ДатаНачала" , ТекущаяДатаСеанса());
|
||||||
|
СоответствиеСобытия.Вставить("ДатаОкончания" , СоответствиеСобытия["ДатаНачала"] + Час);
|
||||||
|
СоответствиеСобытия.Вставить("МассивURLФайловВложений" , Вложения);
|
||||||
|
СоответствиеСобытия.Вставить("ОтправлятьУведомления" , Истина);
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.СоздатьСобытие(Токен, Календарь, СоответствиеСобытия);
|
||||||
|
Событие = Результат[UID];
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат)
|
||||||
|
.ИмеетТип(ТипСоответствие)
|
||||||
|
.Свойство(Summary).Равно(Наименование)
|
||||||
|
.Свойство(Description).Равно(Описание)
|
||||||
|
.Свойство(UID).ИмеетТип(ТипСтрока).Заполнено();
|
||||||
|
|
||||||
|
СоответствиеСобытия = Новый Соответствие;
|
||||||
|
СоответствиеСобытия.Вставить("Описание", ОписаниеИзм);
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.ИзменитьСобытие(Токен, Календарь, СоответствиеСобытия, Событие);
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат)
|
||||||
|
.ИмеетТип(ТипСоответствие)
|
||||||
|
.Свойство(Summary).Равно(Наименование)
|
||||||
|
.Свойство(Description).Равно(ОписаниеИзм)
|
||||||
|
.Свойство(UID).ИмеетТип(ТипСтрока).Заполнено();
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.ПолучитьСобытие(Токен, Календарь, Событие);
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат)
|
||||||
|
.ИмеетТип(ТипСоответствие)
|
||||||
|
.Свойство(Summary).Равно(Наименование)
|
||||||
|
.Свойство(Description).Равно(ОписаниеИзм)
|
||||||
|
.Свойство(UID).ИмеетТип(ТипСтрока).Заполнено();
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.ПереместитьСобытие(Токен, Календарь, Календарь, Событие);
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат)
|
||||||
|
.ИмеетТип(ТипСоответствие)
|
||||||
|
.Свойство(Summary).Равно(Наименование)
|
||||||
|
.Свойство(Description).Равно(ОписаниеИзм)
|
||||||
|
.Свойство(UID).ИмеетТип(ТипСтрока).Заполнено();
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.УдалитьСобытие(Токен, Календарь, Событие);
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат).НеЗаполнено();
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ГК_ПолучитьСписокСобытий() Экспорт
|
||||||
|
|
||||||
|
Токен = ПолучитьПараметр("Google_Token");
|
||||||
|
Календарь = ПолучитьПараметр("Google_Календарь");
|
||||||
|
|
||||||
|
Результат = OPI_GoogleCalendar.ПолучитьСписокСобытий(Токен, Календарь);
|
||||||
|
|
||||||
|
ЮТест.ОжидаетЧто(Результат)
|
||||||
|
.ИмеетТип("Массив");
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@@ -10,8 +10,9 @@
|
|||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
Проект состоит из общих модулей, каждый из которых отвечает за свой API, а также нескольких модулей-инструментов, общих для всех. Реализованные методы выполняют конечные задачи (вроде ОтправитьСообщение() или СоздатьПост()), что позволяет использовать их без углубления в реализацию. Однако, код, при этом, достаточно сильно декомпозирован - методы авторизации, получения данных и пр. по возможности вынесены в отдельные функции. Это позволяет легко добавлять новые методы, даже если они еще не реализованы в самой библиотеке на текущий момент. <br><br>
|
|
||||||
|
Проект состоит из общих модулей, каждый из которых отвечает за свой API, а также нескольких модулей-инструментов, общих для всех. Реализованные методы выполняют конечные задачи (вроде ОтправитьСообщение() или СоздатьПост()), что позволяет использовать их без углубления в реализацию. Однако, код, при этом, достаточно сильно декомпозирован - методы авторизации, получения данных и пр. по возможности вынесены в отдельные функции. Это позволяет легко добавлять новые методы, даже если они еще не реализованы в самой библиотеке на текущий момент. <br><br>
|
||||||
|
|
||||||
На данный момент реализованы методы для работы со следующими API:
|
На данный момент реализованы методы для работы со следующими API:
|
||||||
<br>
|
<br>
|
||||||
<div>
|
<div>
|
||||||
|
@@ -0,0 +1,78 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 6
|
||||||
|
---
|
||||||
|
|
||||||
|
# Изменить событие
|
||||||
|
Обновляет описание события
|
||||||
|
|
||||||
|
*Функция ИзменитьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие) Экспорт*
|
||||||
|
|
||||||
|
| Параметр | Тип | Назначение |
|
||||||
|
|-|-|-|
|
||||||
|
| Токен | Строка | Токен доступа |
|
||||||
|
| Календарь | Строка | ID календаря|
|
||||||
|
| ОписаниеТовара | Соответствие | Описание создаваемого события. См. [ПолучитьОписаниеТовара](./Poluchit-opisanye-sobytiya) |
|
||||||
|
| Событие | Строка | ID события для изменения |
|
||||||
|
|
||||||
|
Вовзращаемое значение: Соответствие - сериализованный JSON ответа от VK
|
||||||
|
|
||||||
|
```bsl title="Пример кода"
|
||||||
|
|
||||||
|
СоответствиеСобытия = Новый Соответствие;
|
||||||
|
СоответствиеСобытия.Вставить("Описание", "Описание тестового события (изм.)");
|
||||||
|
|
||||||
|
Ответ = OPI_GoogleCalendar.ИзменитьСобытие(Токен, "55868c32be16935f0...", СоответствиеСобытия, "j4nonfcc0m2...");
|
||||||
|
Ответ = OPI_Инструменты.JSONСтрокой(Ответ);
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```json title="Результат"
|
||||||
|
|
||||||
|
{
|
||||||
|
"eventType": "default",
|
||||||
|
"attachments": [
|
||||||
|
{
|
||||||
|
"iconLink": "",
|
||||||
|
"title": "Картинка2",
|
||||||
|
"fileUrl": "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/Media/logo.png?v1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"iconLink": "",
|
||||||
|
"title": "Картинка1",
|
||||||
|
"fileUrl": "https://opi.neocities.org/assets/images/logo_long-e8fdcca6ff8b32e679ea49a1ccdd3eac.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"reminders": {
|
||||||
|
"useDefault": true
|
||||||
|
},
|
||||||
|
"sequence": 0,
|
||||||
|
"start": {
|
||||||
|
"timeZone": "Europe/Minsk",
|
||||||
|
"dateTime": "2024-02-24T16:42:28+03:00"
|
||||||
|
},
|
||||||
|
"creator": {
|
||||||
|
"self": true,
|
||||||
|
"email": "bayselonarrend@gmail.com"
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"timeZone": "Europe/Minsk",
|
||||||
|
"dateTime": "2024-02-24T17:42:28+03:00"
|
||||||
|
},
|
||||||
|
"iCalUID": "7c2s6g3k6ib1mr2v1b7lnt9kfk@google.com",
|
||||||
|
"description": "Описание тестового события (изм.)",
|
||||||
|
"updated": "2024-02-24T10:42:42.401Z",
|
||||||
|
"created": "2024-02-24T10:42:32.000Z",
|
||||||
|
"htmlLink": "https://www.google.com/calendar/event?eid=N2MyczZnM2s2aWIxbXIydjFiN2xudDlrZmsgYmF5c2Vsb25hcnJlbmRAbQ",
|
||||||
|
"location": "В офисе",
|
||||||
|
"summary": "Новое событие",
|
||||||
|
"organizer": {
|
||||||
|
"self": true,
|
||||||
|
"email": "bayselonarrend@gmail.com"
|
||||||
|
},
|
||||||
|
"status": "confirmed",
|
||||||
|
"id": "7c2s6g3k6ib1mr2v1b7lnt9kfk",
|
||||||
|
"etag": "\"3417542724802000\"",
|
||||||
|
"kind": "calendar#event"
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
@@ -0,0 +1,75 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 5
|
||||||
|
---
|
||||||
|
|
||||||
|
# Переместить событие
|
||||||
|
Перемещает событие из одного календаря в другой
|
||||||
|
|
||||||
|
*Функция ПереместитьСобытие(Знач Токен, Знач КалендарьИсточник, Знач КалендарьПриемник, Знач Событие) Экспорт*
|
||||||
|
|
||||||
|
| Параметр | Тип | Назначение |
|
||||||
|
|-|-|-|
|
||||||
|
| Токен | Строка | Токен доступа |
|
||||||
|
| КалендарьИсточник | Строка | ID календаря-источника |
|
||||||
|
| КалендарьПриемник | Строка | ID календаря-приемника |
|
||||||
|
| Событие | Строка | ID события для перемещения |
|
||||||
|
|
||||||
|
Вовзращаемое значение: Соответствие - сериализованный JSON ответа от Google
|
||||||
|
|
||||||
|
```bsl title="Пример кода"
|
||||||
|
|
||||||
|
Ответ = OPI_GoogleCalendar.ПереместитьСобытие(Токен, "bayselonarrend@gmail.com", "55868c32be16935f0...", "j4nonfcc0m2..."); //Соответствие
|
||||||
|
Ответ = OPI_Инструменты.JSONСтрокой(Ответ); //Строка
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```json title="Результат"
|
||||||
|
|
||||||
|
{
|
||||||
|
"eventType": "default",
|
||||||
|
"attachments": [
|
||||||
|
{
|
||||||
|
"iconLink": "",
|
||||||
|
"title": "Картинка2",
|
||||||
|
"fileUrl": "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/Media/logo.png?v1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"iconLink": "",
|
||||||
|
"title": "Картинка1",
|
||||||
|
"fileUrl": "https://opi.neocities.org/assets/images/logo_long-e8fdcca6ff8b32e679ea49a1ccdd3eac.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"reminders": {
|
||||||
|
"useDefault": true
|
||||||
|
},
|
||||||
|
"sequence": 0,
|
||||||
|
"start": {
|
||||||
|
"timeZone": "Europe/Minsk",
|
||||||
|
"dateTime": "2024-02-24T16:20:49+03:00"
|
||||||
|
},
|
||||||
|
"creator": {
|
||||||
|
"self": true,
|
||||||
|
"email": "bayselonarrend@gmail.com"
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"timeZone": "Europe/Minsk",
|
||||||
|
"dateTime": "2024-02-24T17:20:49+03:00"
|
||||||
|
},
|
||||||
|
"iCalUID": "f9kkj2omsqtt67g12qh2jig8uk@google.com",
|
||||||
|
"description": "Описание тестового события",
|
||||||
|
"updated": "2024-02-24T10:20:51.234Z",
|
||||||
|
"created": "2024-02-24T10:20:49.000Z",
|
||||||
|
"htmlLink": "https://www.google.com/calendar/event?eid=Zjlra2oyb21zcXR0NjdnMTJxaDJqaWc4dWsgYmF5c2Vsb25hcnJlbmRAbQ",
|
||||||
|
"location": "В офисе",
|
||||||
|
"summary": "Новое событие",
|
||||||
|
"organizer": {
|
||||||
|
"self": true,
|
||||||
|
"email": "bayselonarrend@gmail.com"
|
||||||
|
},
|
||||||
|
"status": "confirmed",
|
||||||
|
"id": "f9kkj2omsqtt67g12qh2jig8uk",
|
||||||
|
"etag": "\"3417540102468000\"",
|
||||||
|
"kind": "calendar#event"
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 7
|
||||||
|
---
|
||||||
|
|
||||||
|
# Удалить событие
|
||||||
|
Удаляет событие по ID
|
||||||
|
|
||||||
|
*Функция УдалитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт*
|
||||||
|
|
||||||
|
| Параметр | Тип | Назначение |
|
||||||
|
|-|-|-|
|
||||||
|
| Токен | Строка | Токен доступа |
|
||||||
|
| Календарь | Строка | ID календаря |
|
||||||
|
| Событие | Строка | ID события |
|
||||||
|
|
||||||
|
Вовзращаемое значение: Пустая строка
|
||||||
|
|
||||||
|
```bsl title="Пример кода"
|
||||||
|
|
||||||
|
Ответ = OPI_GoogleCalendar.УдалитьСобытие(Токен, "55868c32be16935f0...", "j4nonfcc0m2..."); //Соответствие
|
||||||
|
Ответ = OPI_Инструменты.JSONСтрокой(Ответ); //Строка
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```json title="Результат"
|
||||||
|
|
||||||
|
""
|
||||||
|
|
||||||
|
```
|
Reference in New Issue
Block a user