From 9246746f4b6af1bdbc0be91c22dd41f1eafeef9e Mon Sep 17 00:00:00 2001 From: Anton Date: Wed, 21 Feb 2024 19:09:05 +0300 Subject: [PATCH 1/3] =?UTF-8?q?Google=20Calendar:=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=D1=8B=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OPI_GoogleCalendar/Module.bsl | 371 +++++++++++++++--- OPI/src/CommonModules/YAX_Тесты/Module.bsl | 104 ++++- 2 files changed, 422 insertions(+), 53 deletions(-) diff --git a/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl b/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl index 42fc32a7ea..3de35770cb 100644 --- a/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl +++ b/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl @@ -24,6 +24,116 @@ #Область ПрограммныйИнтерфейс +#Область РаботаСМетаданнымиКалендарей + +// Создать календарь. +// +// Параметры: +// Токен - Строка - Токен +// Наименование - Строка - Наименование создаваемого календаря +// +// Возвращаемое значение: +// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google +Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт + + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + URL = "https://www.googleapis.com/calendar/v3/calendars"; + + Параметры = Новый Структура; + Параметры.Вставить("summary", Наименование); + + Ответ = 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_Инструменты.Put(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 +176,62 @@ КонецФункции -#КонецОбласти - -#Область РаботаСКалендарями - -// Создать календарь. -// -// Параметры: -// Токен - Строка - Токен -// Наименование - Строка - Наименование создаваемого календаря -// -// Возвращаемое значение: -// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google -Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт - - Заголовки = ПолучитьЗаголовокАвторизации(Токен); - URL = "https://www.googleapis.com/calendar/v3/calendars"; - - Параметры = Новый Структура; - Параметры.Вставить("summary", Наименование); - - Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить календарь. +// Получить календарь списка. // // Параметры: // Токен - Строка - Токен // Календарь - Строка - 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, , Заголовки); Возврат Ответ; КонецФункции -// Изменить календарь. +// Удалить календарь из списка. // // Параметры: // Токен - Строка - Токен // Календарь - Строка - 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, Параметры, Заголовки); @@ -141,19 +239,128 @@ КонецФункции -// Удалить календарь. +#КонецОбласти + +#Область РаботаССобытиями + +// Получить описание события. +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Пустой макет события +Функция ПолучитьОписаниеСобытия() Экспорт + + СоответствиеСобытия = Новый Соответствие; + СоответствиеСобытия.Вставить("Описание" , ""); // Описание события + СоответствиеСобытия.Вставить("Заголовок" , "Новое событие"); // Заголовок события + СоответствиеСобытия.Вставить("МестоПроведения" , ""); // Строка описание места проведения + СоответствиеСобытия.Вставить("ДатаНачала" , ТекущаяДатаСеанса()); // Дата начала события + СоответствиеСобытия.Вставить("ДатаОкончания" , СоответствиеСобытия["ДатаНачала"] + 3600); // Дата окончания события + СоответствиеСобытия.Вставить("МассивURLФайловВложений" , Новый Соответствие); // Ключ - название, Значение - URL к файлу + СоответствиеСобытия.Вставить("ОтправлятьУведомления" , Истина); // Признак отправки уведомлений участникам + + Возврат СоответствиеСобытия; + +КонецФункции + +// Получить список событий. // // Параметры: // Токен - Строка - Токен // Календарь - Строка - ID календаря // // Возвращаемое значение: -// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google -Функция УдалитьКалендарь(Знач Токен, Знач Календарь) Экспорт +// Соответствие Из КлючИЗначение - Массив соответствий событий +Функция ПолучитьСписокСобытий(Знач Токен, Знач Календарь) Экспорт - Заголовки = ПолучитьЗаголовокАвторизации(Токен); - URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь; - Ответ = OPI_Инструменты.Delete(URL, , Заголовки); + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + МассивСобытий = Новый Массив; + + ПолучитьСписокСобытийРекурсивно(Заголовки, Календарь, МассивСобытий); + + Возврат МассивСобытий; + +КонецФункции + +// Создать событие. +// +// Параметры: +// Токен - Строка - Токен +// Календарь - Строка - ID календаря +// ОписаниеСобытия - Соответствие Из КлючИЗначение - Описание события. См. ПолучитьОписаниеСобытия +// +// Возвращаемое значение: +// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google +Функция СоздатьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия) Экспорт + + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + 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" , ?(Вложения.Количество() > 0, "true", "false")); + + URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL); + Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки, Истина); + + Возврат Ответ; + +КонецФункции + +// Получить событие. +// +// Параметры: +// Токен - Строка - Токен +// Календарь - Строка - ID календаря +// Событие - Строка - ID события +// +// Возвращаемое значение: +// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google +Функция ПолучитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт + + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + URL = "https://www.googleapis.com/calendar/v3/calendars/" + + Календарь + + "/events/" + + Событие; + + Ответ = OPI_Инструменты.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить событие. +// +// Параметры: +// Токен - Строка - Токен +// Календарь - Строка - ID календаря +// Событие - Строка - ID события +// +// Возвращаемое значение: +// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google +Функция УдалитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт + + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + URL = "https://www.googleapis.com/calendar/v3/calendars/" + + Календарь + + "/events/" + + Событие; + + Ответ = OPI_Инструменты.Delete(URL, , Заголовки); Возврат Ответ; @@ -174,6 +381,47 @@ КонецФункции +Функция ПреобразоватьДату(Знач Дата) + + СтруктураДаты = Новый Структура; + + Если Дата = НачалоДня(Дата) Тогда + ФорматДаты = "ДФ=yyyy-MM-dd"; + Поле = "date"; + Иначе + ФорматДаты = "ДФ=yyyy-MM-ddTHH:mm:ssZ"; + Поле = "dateTime"; + КонецЕсли; + + Дата = Формат(Дата, ФорматДаты); + СтруктураДаты.Вставить(Поле, Дата); + + Возврат СтруктураДаты; + +КонецФункции + +Функция ПреобразоватьВложения(Знач Вложения) + + МассивВложений = Новый Массив; + + Если ТипЗнч(Вложения) = Тип("Соответствие") Тогда + + Для Каждого Вложение Из Вложения Цикл + + ТекущеВложение = Новый Структура; + ТекущеВложение.Вставить("title" , Вложение.Ключ); + ТекущеВложение.Вставить("fileUrl", Вложение.Значение); + + МассивВложений.Добавить(ТекущеВложение); + + КонецЦикла; + + КонецЕсли; + + Возврат МассивВложений; + +КонецФункции + Процедура ПолучитьСписокКалендарейРекурсивно(Знач Заголовки, МассивКалендарей, Страница = "") Параметры = Новый Структура; @@ -199,4 +447,29 @@ КонецПроцедуры +Процедура ПолучитьСписокСобытийРекурсивно(Знач Заголовки, Знач Календарь, МассивСобытий, Страница = "") + + Параметры = Новый Структура; + + Если ЗначениеЗаполнено(Страница) Тогда + Параметры.Вставить("pageToken", Страница); + КонецЕсли; + + Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/calendars/" + Календарь + "/events" + , + , Заголовки); + + События = Результат["items"]; + Страница = Результат["nextPageToken"]; + + Для Каждого Событие Из События Цикл + МассивСобытий.Добавить(Событие); + КонецЦикла; + + Если События.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда + ПолучитьСписокСобытийРекурсивно(Заголовки, МассивСобытий, Страница); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти \ No newline at end of file diff --git a/OPI/src/CommonModules/YAX_Тесты/Module.bsl b/OPI/src/CommonModules/YAX_Тесты/Module.bsl index 51f806170f..23d874fa5e 100644 --- a/OPI/src/CommonModules/YAX_Тесты/Module.bsl +++ b/OPI/src/CommonModules/YAX_Тесты/Module.bsl @@ -65,7 +65,9 @@ .ДобавитьСерверныйТест("ГК_ПолучитьТокен" , "Получить токен") .ДобавитьСерверныйТест("ГК_ОбновитьТокен" , "Обновить токен") .ДобавитьСерверныйТест("ГК_ПолучитьСписокКалендарей" , "Получить список календарей") - .ДобавитьСерверныйТест("ГК_СоздатьУдалитьКалендарь" , "Создать/удалить календарь"); + .ДобавитьСерверныйТест("ГК_СоздатьУдалитьКалендарь" , "Создать/удалить календарь") + .ДобавитьСерверныйТест("ГК_СоздатьУдалитьСобытие" , "Создать/удалить событие") + .ДобавитьСерверныйТест("ГК_ПолучитьСписокСобытий" , "Получить список событий"); КонецПроцедуры @@ -1559,6 +1561,8 @@ ТипСоответствие = Тип("Соответствие"); ТипСтрока = Тип("Строка"); Summary = "summary"; + Черный = "#000000"; + Желтый = "#ffd800"; Результат = OPI_GoogleCalendar.СоздатьКалендарь(Токен, Наименование); @@ -1569,7 +1573,7 @@ Календарь = Результат["id"]; - Результат = OPI_GoogleCalendar.ИзменитьКалендарь(Токен + Результат = OPI_GoogleCalendar.ИзменитьМетаданныеКалендаря(Токен , Календарь , НаименованиеИзмененное , Описание); @@ -1580,7 +1584,7 @@ .Свойство("description").Равно(Описание) .Свойство("id").ИмеетТип(ТипСтрока).Заполнено(); - Результат = OPI_GoogleCalendar.ПолучитьКалендарь(Токен, Календарь); + Результат = OPI_GoogleCalendar.ПолучитьМетаданныеКалендаря(Токен, Календарь); ЮТест.ОжидаетЧто(Результат) .ИмеетТип(ТипСоответствие) @@ -1588,12 +1592,104 @@ .Свойство("description").Равно(Описание) .Свойство("id").ИмеетТип(ТипСтрока).Заполнено(); + Результат = OPI_GoogleCalendar.ДобавитьКалендарьВСписок(Токен, Календарь); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип(ТипСоответствие) + .Свойство(Summary).Равно(НаименованиеИзмененное) + .Свойство("description").Равно(Описание) + .Свойство("id").ИмеетТип(ТипСтрока).Заполнено(); + + + Результат = OPI_GoogleCalendar.ИзменитьКалендарьСписка(Токен, Календарь, Черный, Желтый, Ложь); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип(ТипСоответствие) + .Свойство(Summary).Равно(НаименованиеИзмененное) + .Свойство("foregroundColor").Равно(Черный) + .Свойство("backgroundColor").Равно(Желтый); + + Результат = OPI_GoogleCalendar.ПолучитьКалендарьСписка(Токен, Календарь); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип(ТипСоответствие) + .Свойство(Summary).Равно(НаименованиеИзмененное) + .Свойство("foregroundColor").Равно(Черный) + .Свойство("backgroundColor").Равно(Желтый); + + + Результат = OPI_GoogleCalendar.ОчиститьОсновнойКалендарь(Токен); + + ЮТест.ОжидаетЧто(Результат).НеЗаполнено(); + + Результат = OPI_GoogleCalendar.УдалитьКалендарьИзСписка(Токен, Календарь); + + ЮТест.ОжидаетЧто(Результат).НеЗаполнено(); + Результат = OPI_GoogleCalendar.УдалитьКалендарь(Токен, Календарь); ЮТест.ОжидаетЧто(Результат).НеЗаполнено(); КонецПроцедуры - + +Процедура ГК_СоздатьУдалитьСобытие() Экспорт + + Токен = ПолучитьПараметр("Google_Token"); + Календарь = ПолучитьПараметр("Google_Календарь"); + Наименование = "Новое событие"; + Описание = "Описание тестового события"; + ТипСоответствие = Тип("Соответствие"); + ТипСтрока = Тип("Строка"); + Summary = "summary"; + + Вложения = Новый Соответствие; + Вложения.Вставить("Картинка1", "https://opi.neocities.org/assets/images/logo_long-e8fdcca6ff8b32e679ea49a1ccdd3eac.png"); + Вложения.Вставить("Картинка2", "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/Media/logo.png?v1"); + + СоответствиеСобытия = Новый Соответствие; + СоответствиеСобытия.Вставить("Описание" , Описание); + СоответствиеСобытия.Вставить("Заголовок" , Наименование); + СоответствиеСобытия.Вставить("МестоПроведения" , "В офисе"); + СоответствиеСобытия.Вставить("ДатаНачала" , ТекущаяДатаСеанса()); + СоответствиеСобытия.Вставить("ДатаОкончания" , СоответствиеСобытия["ДатаНачала"] + 3600); + СоответствиеСобытия.Вставить("МассивURLФайловВложений" , Вложения); + СоответствиеСобытия.Вставить("ОтправлятьУведомления" , Истина); + + Результат = OPI_GoogleCalendar.СоздатьСобытие(Токен, Календарь, СоответствиеСобытия); + Событие = Результат["id"]; + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип(ТипСоответствие) + .Свойство(Summary).Равно(Наименование) + .Свойство("description").Равно(Описание) + .Свойство("id").ИмеетТип(ТипСтрока).Заполнено(); + + Результат = OPI_GoogleCalendar.ПолучитьСобытие(Токен, Календарь, Событие); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип(ТипСоответствие) + .Свойство(Summary).Равно(Наименование) + .Свойство("description").Равно(Описание) + .Свойство("id").ИмеетТип(ТипСтрока).Заполнено(); + + Результат = OPI_GoogleCalendar.УдалитьСобытие(Токен, Календарь, Событие); + + ЮТест.ОжидаетЧто(Результат).НеЗаполнено(); + +КонецПроцедуры + +Процедура ГК_ПолучитьСписокСобытий() Экспорт + + Токен = ПолучитьПараметр("Google_Token"); + Календарь = ПолучитьПараметр("Google_Календарь"); + + Результат = OPI_GoogleCalendar.ПолучитьСписокСобытий(Токен, Календарь); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Массив"); + +КонецПроцедуры + #КонецОбласти #КонецОбласти From 3455cab9c676454df63ea3dbf19acc68ffd5ef8a Mon Sep 17 00:00:00 2001 From: Anton Date: Wed, 21 Feb 2024 19:29:27 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=94=D0=B5=D1=84=D1=84=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D1=8B=20SC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OPI_GoogleCalendar/Module.bsl | 20 ++++++++++--------- OPI/src/CommonModules/YAX_Тесты/Module.bsl | 17 ++++++++++------ 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl b/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl index 3de35770cb..6a8e2fd741 100644 --- a/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl +++ b/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl @@ -249,16 +249,18 @@ // Соответствие Из КлючИЗначение - Пустой макет события Функция ПолучитьОписаниеСобытия() Экспорт - СоответствиеСобытия = Новый Соответствие; - СоответствиеСобытия.Вставить("Описание" , ""); // Описание события - СоответствиеСобытия.Вставить("Заголовок" , "Новое событие"); // Заголовок события - СоответствиеСобытия.Вставить("МестоПроведения" , ""); // Строка описание места проведения - СоответствиеСобытия.Вставить("ДатаНачала" , ТекущаяДатаСеанса()); // Дата начала события - СоответствиеСобытия.Вставить("ДатаОкончания" , СоответствиеСобытия["ДатаНачала"] + 3600); // Дата окончания события - СоответствиеСобытия.Вставить("МассивURLФайловВложений" , Новый Соответствие); // Ключ - название, Значение - URL к файлу - СоответствиеСобытия.Вставить("ОтправлятьУведомления" , Истина); // Признак отправки уведомлений участникам + Час = 3600; + Событие = Новый Соответствие; + + Событие.Вставить("Описание" , ""); // Описание события + Событие.Вставить("Заголовок" , "Новое событие"); // Заголовок события + Событие.Вставить("МестоПроведения" , ""); // Строка описание места проведения + Событие.Вставить("ДатаНачала" , ТекущаяДатаСеанса()); // Дата начала события + Событие.Вставить("ДатаОкончания" , Событие["ДатаНачала"] + Час); // Дата окончания события + Событие.Вставить("МассивURLФайловВложений", Новый Соответствие); // Ключ - название, Значение - URL к файлу + Событие.Вставить("ОтправлятьУведомления" , Истина); // Признак отправки уведомлений участникам - Возврат СоответствиеСобытия; + Возврат Событие; КонецФункции diff --git a/OPI/src/CommonModules/YAX_Тесты/Module.bsl b/OPI/src/CommonModules/YAX_Тесты/Module.bsl index 23d874fa5e..c279dada7d 100644 --- a/OPI/src/CommonModules/YAX_Тесты/Module.bsl +++ b/OPI/src/CommonModules/YAX_Тесты/Module.bsl @@ -1560,6 +1560,7 @@ НаименованиеИзмененное = Наименование + " (изм.)"; ТипСоответствие = Тип("Соответствие"); ТипСтрока = Тип("Строка"); + Description = "description"; Summary = "summary"; Черный = "#000000"; Желтый = "#ffd800"; @@ -1581,7 +1582,7 @@ ЮТест.ОжидаетЧто(Результат) .ИмеетТип(ТипСоответствие) .Свойство(Summary).Равно(НаименованиеИзмененное) - .Свойство("description").Равно(Описание) + .Свойство(Description).Равно(Описание) .Свойство("id").ИмеетТип(ТипСтрока).Заполнено(); Результат = OPI_GoogleCalendar.ПолучитьМетаданныеКалендаря(Токен, Календарь); @@ -1589,7 +1590,7 @@ ЮТест.ОжидаетЧто(Результат) .ИмеетТип(ТипСоответствие) .Свойство(Summary).Равно(НаименованиеИзмененное) - .Свойство("description").Равно(Описание) + .Свойство(Description).Равно(Описание) .Свойство("id").ИмеетТип(ТипСтрока).Заполнено(); Результат = OPI_GoogleCalendar.ДобавитьКалендарьВСписок(Токен, Календарь); @@ -1597,7 +1598,7 @@ ЮТест.ОжидаетЧто(Результат) .ИмеетТип(ТипСоответствие) .Свойство(Summary).Равно(НаименованиеИзмененное) - .Свойство("description").Равно(Описание) + .Свойство(Description).Равно(Описание) .Свойство("id").ИмеетТип(ТипСтрока).Заполнено(); @@ -1641,17 +1642,21 @@ ТипСоответствие = Тип("Соответствие"); ТипСтрока = Тип("Строка"); Summary = "summary"; + Час = 3600; Вложения = Новый Соответствие; - Вложения.Вставить("Картинка1", "https://opi.neocities.org/assets/images/logo_long-e8fdcca6ff8b32e679ea49a1ccdd3eac.png"); - Вложения.Вставить("Картинка2", "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/Media/logo.png?v1"); + + Вложения.Вставить("Картинка1" + , "https://opi.neocities.org/assets/images/logo_long-e8fdcca6ff8b32e679ea49a1ccdd3eac.png"); + Вложения.Вставить("Картинка2" + , "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/Media/logo.png?v1"); СоответствиеСобытия = Новый Соответствие; СоответствиеСобытия.Вставить("Описание" , Описание); СоответствиеСобытия.Вставить("Заголовок" , Наименование); СоответствиеСобытия.Вставить("МестоПроведения" , "В офисе"); СоответствиеСобытия.Вставить("ДатаНачала" , ТекущаяДатаСеанса()); - СоответствиеСобытия.Вставить("ДатаОкончания" , СоответствиеСобытия["ДатаНачала"] + 3600); + СоответствиеСобытия.Вставить("ДатаОкончания" , СоответствиеСобытия["ДатаНачала"] + Час); СоответствиеСобытия.Вставить("МассивURLФайловВложений" , Вложения); СоответствиеСобытия.Вставить("ОтправлятьУведомления" , Истина); From 3be0194c65a575558efbbde16f287a2fc91ec52f Mon Sep 17 00:00:00 2001 From: Anton Date: Wed, 21 Feb 2024 19:36:17 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=94=D0=B5=D1=84=D1=84=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D1=8B=20SC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl | 6 +++++- OPI/src/CommonModules/YAX_Тесты/Module.bsl | 2 -- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl b/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl index 6a8e2fd741..708ae3124d 100644 --- a/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl +++ b/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl @@ -223,7 +223,11 @@ // // Возвращаемое значение: // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google -Функция ИзменитьКалендарьСписка(Знач Токен, Знач Календарь, Знач ОсновнойЦвет, Знач ДополнительныйЦвет, Знач Скрытый = Ложь) Экспорт +Функция ИзменитьКалендарьСписка(Знач Токен + , Знач Календарь + , Знач ОсновнойЦвет + , Знач ДополнительныйЦвет + , Знач Скрытый = Ложь) Экспорт Заголовки = ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь + "?colorRgbFormat=true"; diff --git a/OPI/src/CommonModules/YAX_Тесты/Module.bsl b/OPI/src/CommonModules/YAX_Тесты/Module.bsl index c279dada7d..6b95d95afa 100644 --- a/OPI/src/CommonModules/YAX_Тесты/Module.bsl +++ b/OPI/src/CommonModules/YAX_Тесты/Module.bsl @@ -1600,7 +1600,6 @@ .Свойство(Summary).Равно(НаименованиеИзмененное) .Свойство(Description).Равно(Описание) .Свойство("id").ИмеетТип(ТипСтрока).Заполнено(); - Результат = OPI_GoogleCalendar.ИзменитьКалендарьСписка(Токен, Календарь, Черный, Желтый, Ложь); @@ -1618,7 +1617,6 @@ .Свойство("foregroundColor").Равно(Черный) .Свойство("backgroundColor").Равно(Желтый); - Результат = OPI_GoogleCalendar.ОчиститьОсновнойКалендарь(Токен); ЮТест.ОжидаетЧто(Результат).НеЗаполнено();