Как отменить удаление исключения повторения встречи в Outlook? - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь найти способ восстановить одно / одно исключение повторения Outlook AppointmentItem, не влияя на другие исключения повторения. Вот фрагмент:

Outlook.AppointmentItem oa = OutlookNameSpace.GetItemFromID(oid);
var rp = oa.GetRecurrencePattern();
var exceptions = rp.Exceptions;

//there are 5 recurrence exceptions
Assert.AreEqual(5, exceptions.Count);

var e = exceptions[1];

//first exception is deleted           
Assert.IsTrue(e.Deleted);

//how to undelete the first exception?

Я знаю решение "грубой силы", опубликованное здесь Удалить исключения из серии , но я бы хотел избежать изменений в других исключениях ...

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Объект Exception.AppointmentItem недоступен для удаленных элементов. Вам необходимо назначить новую встречу с помощью свойства Exception.OriginalDate .

0 голосов
/ 10 мая 2020

Ссылка, найденная Юджином, не является строго неправильной, но я подозреваю, что она вводит в заблуждение.

AppointmentItem может иметь четыре значения для свойства RecurrenceState:

Constant            Value   Significance
olApptNotRecurring  0       The appointment is not a recurring appointment.
olApptMaster        1       The appointment is a master appointment.
olApptOccurrence    2       The appointment is an occurrence of a recurring
                            appointment defined by a master appointment.
olApptException     3       The appointment is an exception to a recurrence
                            pattern defined by a master appointment.

From Мои собственные эксперименты, вы найдете только первые два значения, если будете искать в папке календаря. Я считаю, что olApptOccurrence можно найти только в результате вызова метода RecurrencePattern.GetOccurrence. Я считаю, что olApptException можно найти только в AppointmentItem с RecurrenceState из olApptMaster. Об этом позже.

Объект AppointmentItem содержит все свойства для единовременной встречи. Вы используете метод AppointmentItem.GetRecurrencePattern, чтобы получить дополнительные свойства для повторяющегося свойства.

AppointmentItem.GetRecurrencePattern возвращает RecurrencePattern. Повторное посещение может происходить один раз в год, один раз в месяц, один раз в неделю, один раз во вторник и четверг и многие другие повторения. Все детали выбранного повторения подробно описаны в RecurrencePattern.

Одним из свойств RecurrencePattern является коллекция Exceptions. Эта коллекция содержит один объект Exception на исключение. На еженедельное совещание по проекту вы можете отсутствовать на одну неделю или на одну неделю, это может быть класс sh с совещанием в отделе, и его дата, время и место изменены. Каждое из этих исключений подробно описано в объекте Exception.

Два свойства объекта Exception: Deleted и AppointmentItem. Для отсутствующей встречи по проекту Deleted будет True, а для Exception не будет свойства AppointmentItem. Для собрания по проекту, которое необходимо было перенести, Deleted будет False, и будет свойство AppointmentItem с RecurrenceState из olApptException для Exception, описывающее исключительную дату, время, место, продолжительность и и так далее.

Информация, которую я нашел, указывает на то, что вы не можете изменить Exception, но вы можете «стереть» один, используя методы, которые зависят от используемого языка.

From https://docs.microsoft.com/en-us/office/vba/api/Outlook.Exception:

Когда вы работаете с элементами повторяющихся встреч, вы должны освободить все предыдущие ссылки, получить новые ссылки на элемент повторяющихся встреч, прежде чем открывать или изменять элемент, и освобождать эти ссылки как только вы закончите и сохранили изменения. Эта практика применяется к повторяющемуся объекту AppointmentItem и любому объекту Exception или RecurrencePattern. Чтобы освободить ссылку в Visual Basi c для приложений (VBA) или Visual Basi c, установите для этого существующего объекта значение Nothing. В C# явно освободите память для этого объекта. Для примера кода см. Topi c для объекта AppointmentItem.

Обещанный код - VB, его можно найти в https://docs.microsoft.com/en-us/office/vba/api/outlook.appointmentitem.

В настоящее время у меня нет времени экспериментировать с удалением исключения удаления. Я добавлю его в список дел на потом. Теперь вы можете поэкспериментировать с sh. Мне был бы интересен результат вашего эксперимента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...