diff --git a/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl b/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl index 402dafb14..eef89c864 100644 --- a/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl +++ b/OPI/src/CommonModules/OPI_GoogleCalendar/Module.bsl @@ -31,6 +31,7 @@ // Параметры: // Токен - Строка - Токен // Наименование - Строка - Наименование создаваемого календаря +// ЧасовойПояс - Строка - Часовой пояс в формате IANA // // Возвращаемое значение: // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google @@ -40,7 +41,8 @@ URL = "https://www.googleapis.com/calendar/v3/calendars"; Параметры = Новый Структура; - Параметры.Вставить("summary", Наименование); + Параметры.Вставить("summary" , Наименование); + Параметры.Вставить("timeZone", ЧасовойПояс()); Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки); @@ -73,10 +75,14 @@ // Календарь - Строка - ID календаря // Наименование - Строка - Новое наименование // Описание - Строка - Новое описание календаря +// ЧасовойПояс - Строка - Часовой пояс в формате IANA // // Возвращаемое значение: // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google -Функция ИзменитьМетаданныеКалендаря(Знач Токен, Знач Календарь, Знач Наименование = "", Знач Описание = "") Экспорт +Функция ИзменитьМетаданныеКалендаря(Знач Токен + , Знач Календарь + , Знач Наименование = "" + , Знач Описание = "") Экспорт Заголовки = ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь; @@ -90,8 +96,8 @@ Если ЗначениеЗаполнено(Описание) Тогда Параметры.Вставить("description", Описание); КонецЕсли; - - Ответ = OPI_Инструменты.Put(URL, Параметры, Заголовки); + + Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина); Возврат Ответ; @@ -405,6 +411,10 @@ СтруктураДаты = Новый Структура; + Если Не ТипЗнч(Дата) = Тип("Дата") Тогда + Возврат Неопределено; + КонецЕсли; + Если Дата = НачалоДня(Дата) Тогда ФорматДаты = "ДФ=yyyy-MM-dd"; Поле = "date"; @@ -414,7 +424,8 @@ КонецЕсли; Дата = Формат(Дата, ФорматДаты); - СтруктураДаты.Вставить(Поле, Дата); + СтруктураДаты.Вставить(Поле , Дата); + СтруктураДаты.Вставить("timeZone", ЧасовойПояс()); Возврат СтруктураДаты; @@ -438,7 +449,11 @@ КонецЕсли; - Возврат МассивВложений; + Если МассивВложений.Количество() > 0 Тогда + Возврат МассивВложений; + Иначе + Возврат Неопределено; + КонецЕсли; КонецФункции @@ -455,7 +470,7 @@ Дата1 = ОписаниеСобытия["ДатаОкончания"]; Вложения = ОписаниеСобытия["МассивURLФайловВложений"]; Вложения = ПреобразоватьВложения(Вложения); - Уведомления = ОписаниеСобытия["ОтправлятьУведомления"]; + Уведомления = ?(ОписаниеСобытия["ОтправлятьУведомления"] = Неопределено, Ложь, ОписаниеСобытия["ОтправлятьУведомления"]); Параметры = Новый Структура; Параметры.Вставить("summary" , ОписаниеСобытия["Заголовок"]); @@ -467,10 +482,12 @@ ПараметрыURL = Новый Структура; ПараметрыURL.Вставить("sendUpdates" , ?(Уведомления, "all", "none")); - ПараметрыURL.Вставить("supportsAttachments" , ?(Вложения.Количество() > 0, "true", "false")); + ПараметрыURL.Вставить("supportsAttachments" , ?(ЗначениеЗаполнено(Вложения), "true", "false")); URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL); + OPI_Инструменты.УдалитьПустыеПоляКоллекции(Параметры); + Если Существующее Тогда Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина); Иначе diff --git a/OPI/src/CommonModules/OPI_Инструменты/Module.bsl b/OPI/src/CommonModules/OPI_Инструменты/Module.bsl index a93042a42..7d17e7cf7 100644 --- a/OPI/src/CommonModules/OPI_Инструменты/Module.bsl +++ b/OPI/src/CommonModules/OPI_Инструменты/Module.bsl @@ -119,6 +119,41 @@ КонецПроцедуры +Процедура УдалитьПустыеПоляКоллекции(Коллекция) Экспорт + + ТипКоллекции = ТипЗнч(Коллекция); + ВыходнаяКоллекция = Новый(ТипКоллекции); + + Если ТипКоллекции = Тип("Соответствие") Или ТипКоллекции = Тип("Структура") Тогда + + Для Каждого ЭлементКоллекции Из Коллекция Цикл + + Если Не ЭлементКоллекции.Значение = Неопределено И Не ЭлементКоллекции.Значение = NULL Тогда + ВыходнаяКоллекция.Вставить(ЭлементКоллекции.Ключ, ЭлементКоллекции.Значение); + КонецЕсли; + + КонецЦикла; + + ИначеЕсли ТипКоллекции = Тип("Массив") Тогда + + Для Каждого ЭлементКоллекции Из Коллекция Цикл + + Если Не ЭлементКоллекции = Неопределено И Не ЭлементКоллекции = NULL Тогда + ВыходнаяКоллекция.Добавить(ЭлементКоллекции); + КонецЕсли; + + КонецЦикла; + + Иначе + + ВыходнаяКоллекция = Коллекция; + + КонецЕсли; + + Коллекция = ВыходнаяКоллекция; + +КонецПроцедуры + #КонецОбласти #Область Служебные