Создание ежегодно повторяющейся встречи, в которой используется шаблон YearNth
В этом примере показывается создание встречи с годовым шаблоном повторяемости, таким как первый понедельник июня.
Пример
Примечание.
Приведенный ниже пример кода представляет собой фрагмент из книги Программирование приложений для Microsoft Office Outlook 2007.
Если вы хотите создать ежегодную встречу, которая повторяется в определенный день недели определенного месяца (например, в первый понедельник июня), необходимо использовать повторения YearNth. Чтобы настроить повторение YearNth, требуется сначала установить значение olRecursYearNth для свойства RecurrenceType объекта RecurrencePattern. Затем задайте свойство DayOfWeekMask, чтобы указать, в какой день недели должна повторяться встреча, и свойство Instance, чтобы указать порядковый номер вхождения этого дня недели (например, третий вторник) в выбранном месяце для годового шаблона.
При работе с элементами повторяющейся встречи следует удалить все предыдущие ссылки, получить новые ссылки на элемент повторяющейся встречи перед обращением к элементу или его изменением и удалить эти ссылки сразу после завершения работы и сохранения изменений. Такой подход применяется к повторяющемуся объекту AppointmentItem и любому объекту Exception или RecurrencePattern. Чтобы удалить ссылку в Visual Basic, установите для существующего объекта значение Nothing. В C# следует явно освободить память для этого объекта.
Следует отметить, что даже после удаления ссылок при попытке получения новой ссылки, когда имеется активная ссылка (удерживаемая другой надстройкой в Outlook) на один из вышеупомянутых объектов, новая ссылка будет продолжать указывать на устаревшую копию объекта. Поэтому важно удалять ссылки сразу же по окончании работы с повторяющейся встречей.
В представленном ниже примере кода процедура RecurringYearNthAppointment создает встречу с шаблоном повторения YearNth. Процедура RecurringYearNthAppointment сначала создает повторяющуюся встречу путем создания объекта AppointmentItem. После этого она получает расписание повторения с помощью метода GetRecurrencePattern(). Затем задаются следующие свойства RecurrencePattern: RecurrenceType, DayOfWeekMask, MonthOfYear, Instance, Occurrences, Duration, PatternStartDate, StartTime и EndTime. Свойство MonthOfYear может принимать числовые значения от 1 до 12, где каждое число представляет соответствующий месяц. После задания свойств процедура RecurringYearNthAppointment сохраняет встречу и отображает ее с расписанием "Происходит в первый понедельник июня с 06.01.2007 по 06.06.2016 с 14:00 до 17:00".
Если вы используете Visual Studio для тестирования этого примера кода, сначала добавьте ссылку на компонент Microsoft Outlook 15.0 Object Library и задайте переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция using не должна находиться непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующей строке кода показано, как выполнить импорт и назначение в C#.
using Outlook = Microsoft.Office.Interop.Outlook;
private void RecurringYearNthAppointment()
{
Outlook.AppointmentItem appt = Application.CreateItem(
Outlook.OlItemType.olAppointmentItem)
as Outlook.AppointmentItem;
appt.Subject = "Recurring YearNth Appointment";
Outlook.RecurrencePattern pattern = appt.GetRecurrencePattern();
pattern.RecurrenceType = Outlook.OlRecurrenceType.olRecursYearNth;
pattern.DayOfWeekMask = Outlook.OlDaysOfWeek.olMonday;
pattern.MonthOfYear = 6;
pattern.Instance = 1;
pattern.Occurrences = 10;
pattern.Duration = 180;
pattern.PatternStartDate = DateTime.Parse("6/1/2007");
pattern.StartTime = DateTime.Parse("2:00:00 PM");
pattern.EndTime = DateTime.Parse("5:00:00 PM");
appt.Save();
appt.Display(false);
}