Повторяющиеся записи календаря в Lotus Notes - PullRequest
2 голосов
/ 21 октября 2011

Кто-нибудь знает, можно ли изменить один из документов в серии повторяющихся собраний?Я изменил один из них с помощью c # api, и он изменил все документы в серии (например, 5 документов в серии будут изменены во время одного вызова save ())

var document = view.GetFirstDocument();
if (document != null)
{
    do
    {
        var item = document.GetFirstItem("Repeats");
        var repeat = tmpItem != null ? Convert.ToInt32(tmpItem.Text) : 0;

        if(repeats)
        {
            document.ReplaceItemValue("myVal", "1"); //it change all my 5 docs after first save
            document.Save(true, false);
        }
        document = view.GetNextDocument(document);
    }
    while (document != null);
}

Ответы [ 3 ]

2 голосов
/ 22 октября 2011

Из " Lotus Notes Calendar and Scheduling объяснено! Часть 1 ":

документ экземпляра повторяющегося собрания может быть разбит на несколько документов, если председатель перенесет некоторые экземпляры. Рассмотрим повторяющуюся встречу, которая повторяется один раз в неделю в течение пяти недель. Если председатель продвигает первый и второй экземпляр на час, единый ответный документ для всех пяти экземпляров теперь разделяется на два ответных документа: один для первого и второго экземпляров, а другой для оставшихся экземпляров.

И из " Схемы календаря и планирования IBM Lotus Notes и Domino ":

Повторяющиеся события планируются более одного раза и представлены не менее чем двумя примечаниями в родительско-дочерних отношениях. Родительская заметка идентифицируется своим элементом ApptUNID (который является универсальным идентификатором заметки), а дочерняя заметка идентифицируется тем же ApptUNID, что и родительский элемент и исходные RepeatInstanceDates. Элементы ApptUNID и RepeatInstanceDates образуют пару ключей, которые однозначно идентифицируют конкретный повторяющийся экземпляр. Более подробная информация представлена ​​в разделе «Повторить модель» этого документа.

Итак, в основном вам нужно найти дочерний документ события ($ CSFlags conatins "i" и $ Ref родительский UNID) и создать новый (второй) дочерний документ для измененной даты / времени, удалив это конкретная дата / время записи из существующего дочернего документа, IIRC. В таких случаях я всегда делаю это вручную в Notes Client, а затем сравниваю поля, созданные таким образом, с полями, которые я создал с помощью своего кода.

1 голос
/ 21 октября 2011

В коде вы просматриваете представление и изменяете все документы, доступные в представлении.Вам нужно выбрать документ, который вы хотите изменить.

РЕДАКТИРОВАТЬ: повторяющаяся запись - это документ, который несколько раз отображается в виде.Поэтому возможно, что вы обновляете один и тот же документ несколько раз.Чтобы убедиться, сравните UniversalID всех документов серии.

Если вы измените одну из записей с помощью Lotus Client, он спросит, хотите ли вы обновить все, если вы выберете «только этот экземпляр»,Запись будет сохранена в новом документе.Таким образом, повторяющаяся запись может быть отдельным документом или комбинацией документов.

0 голосов
/ 22 октября 2011

Лучший совет, и действительно единственный совет, который я могу вам дать, это изучить код LotusScript в почтовом шаблоне и посмотреть, что именно он делает, когда пользователь меняет одну запись в повторяющейся встрече.Lotus не документировал это каким-либо иным образом, но код шаблона полностью открыт и является абсолютным авторитетом.Ваша задача - быть совместимым с тем, что они делают в шаблоне, иначе вполне вероятно, что ваш код будет иметь побочные эффекты, которые вызывают проблемы у пользователей, которые пытаются использовать клиент Notes для выполнения дополнительных действий в серии событий календаря послеваш код запущен.

...