В повседневной жизни учетная система не всегда находится под рукой, а информация в ней, порой, имеет критически важный статус. В таких случаях очень удобно когда эта самая информация дублируется в инструмент, с которым есть возможность работать здесь и сейчас. К такой информации может относится запись в календаре и сегодня на простом примере мы разберем работу с мероприятиями в Outlook из 1С.
Для начала нужно создать COMОбъект
Outlook = Новый COMОбъект(“Outlook.Application”);
Хочу обозначить что разобранный пример работает это только под ОС Windows.
Чтобы создать событие в календаре выполняется следующая команда
Событие = Outlook.CreateItem(1);
В этом событии есть поле EntryID, с помощью которого можно в последующем найти это событие
Событие = Outlook.GetNameSpace(“MAPI”).GetItemFromID(EntryID);
Теперь разберем некоторые поля из нашего события
- Subject – тема
- Start – дата начала
- End – дата окончания
- Body – описание
- Location – место проведения
- ReminderMinutesBeforeStart – за сколько минут напомнить о предстоящем мероприятии участникам
- MeetingStatus – состояние события (1 – запланировано, 5 – отменено)
- Recipients – участники (методы add – добавить, remove – удалить, count – количество)
Основные методы, необходимые для простой интеграции:
- save() – сохранить событие
- send() – отправить оповещения
Пример кода для создания мероприятия
Попытка
Outlook = Новый COMОбъект(“Outlook.Application”);
Исключение
Сообщить(“Не удалось подключиться к Outlook”);
Возврат;
КонецПопытки;ИДМероприятия = ИнтеграцияВызовСервера.ПолучитьИдентификаторМероприятия(Объект.Ссылка);
Если ЗначениеЗаполнено(ИДМероприятия) Тогда
Событие = Outlook.GetNameSpace(“MAPI”).GetItemFromID(ИДМероприятия);
Иначе
Событие = Outlook.CreateItem(1);
КонецЕсли;Событие.Subject = Объект.Наименование;
Событие.Start = Формат(Объект.ДатаНачала, “ДЛФ=DT”); //в формате 01.01.0001 00:00:00
Событие.End = Формат(Объект.ДатаОкончания, “ДЛФ=DT”); //в формате 01.01.0001 00:00:00
Событие.Body = Объект.Описание;
Событие.Location = Строка(Объект.МестоПроведения);
Событие.ReminderMinutesBeforeStart = 15;
Событие.BusyStatus = 0;Если СостояниеМероприятия = ПредопределенноеЗначение(“Перечисление.СостоянияМероприятий.МероприятиеОтменено”) Тогда
Событие.MeetingStatus = 5;
Иначе
Событие.MeetingStatus = 1;
КонецЕсли;Событие.Sensitivity = 2;
тКоличествоУчастников = Событие.Recipients.Count();
Если тКоличествоУчастников > 0 ТогдаПока тКоличествоУчастников > 0 Цикл
Событие.Recipients.Remove(тКоличествоУчастников);
тКоличествоУчастников = тКоличествоУчастников – 1;
КонецЦикла;КонецЕсли;
Для Каждого тУчастник Из Участники Цикл
Если НЕ ПустаяСтрока(тУчастник.EMail) Тогда
Участник = Событие.Recipients.Add(тУчастник.EMail);
Иначе
Участник = Событие.Recipients.Add(Строка(тУчастник.Исполнитель));
КонецЕсли;
Участник.Type = 1;КонецЦикла;
Событие.Save();
ИнтеграцияВызовСервера.ДобавитьСоответствиеМероприятия(Объект.Ссылка, Событие.EntryID);
Событие.Send();
Вы должны авторизоваться чтобы опубликовать комментарий.