1C и работа с календарем в Outlook

В повседневной жизни учетная система не всегда находится под рукой, а информация в ней, порой, имеет критически важный статус. В таких случаях очень удобно когда эта самая информация дублируется в инструмент, с которым есть возможность работать здесь и сейчас. К такой информации может относится запись в календаре и сегодня на простом примере мы разберем работу с мероприятиями в 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();

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.