2

有人知道是否可以在一系列定期会议中更改其中一个文件?我用 c# api 更改了其中一个,它更改了系列中的所有文档(例如,在一次 save() 调用期间将修改 5 个系列文档)

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);
}
4

3 回答 3

2

来自“解释 Lotus Notes 日历和日程安排!第 1 部分”:

如果主席重新安排某些实例,则重复会议的实例文档可以拆分为多个文档。考虑一个重复会议,每周重复一次,持续五周。如果主席将一审和二审提前一个小时,则所有五个案件的单个响应文档现在将拆分为两个响应文档:一个用于一审和二审,另一个用于其余示例。

并且来自“ IBM Lotus Notes and Domino Calendaring & Scheduling Schema ”:

随着时间的推移,重复事件被安排不止一次,并且由父子关系中的至少两个注释表示。父笔记由其 ApptUNID 项(即其笔记通用 ID)标识,子笔记由与父笔记和原始 RepeatInstanceDates 相同的 ApptUNID 标识。ApptUNID 和RepeatInstanceDates 项形成唯一标识特定重复实例的键值对。本文的重复模型部分介绍了更多详细信息。

所以你基本上要做的是找到事件的子文档($CSFlags conatins "i" 和 $Ref 父 UNID)并为更改的日期/时间创建一个新的(第二个)子文档,删除这个特定的日期/来自现有子文档 IIRC 的时间条目。在这种情况下,我总是在 Notes 客户端中手动执行此操作,然后将以这种方式创建的字段与我通过代码创建的字段进行比较。

于 2011-10-22T10:43:41.720 回答
1

在代码中,您循环浏览视图并更改视图中可用的所有文档。您需要选择要更改的文档。

编辑:重复条目是在视图中多次显示的文档。因此,您可能会多次更新同一个文档。比较系列中所有文档的 UniversalID 以确定。

如果您使用 Lotus Client 更改其中一个条目,它将询问您是否要更新所有条目,如果您选择“仅此实例”,则该条目将保存在新文档中。因此,重复条目可以是单个文档或文档组合。

于 2011-10-21T11:59:51.940 回答
0

我能给您的最好的建议,也是唯一的建议是研究邮件模板中的 LotusScript 代码,并准确了解当用户在重复约会中更改一个条目时它会做什么。Lotus 没有以任何其他方式记录它,但模板代码是全部开源的,它是最终的权威。您的任务是与他们在模板中执行的操作兼容——否则您的代码很可能会产生副作用,从而导致尝试使用 Notes 客户端在日历事件系列上执行其他操作的用户遇到问题你的代码已经运行。

于 2011-10-21T23:32:59.017 回答