2013-10-03 76 views

回答

0

我张贴的答案,但这里是一个副本,以防它被删除或移除:

lem.mallari的答案是一个巨大的痛苦,除非你能假设列表A中的金额永远不会改变,因为它没有跟踪一个项目是否已被添加到总和中。工作流无法遍历SharePoint列表,这意味着没有简单的方法可以计算多个列表项的总和或平均值。

正确的方法来实现这将需要一些发展。 SharePoint开发人员培训(2010,2013)实际上将为您带来大部分途径:在列表A和B中添加或更改项目时,事件接收器应该触发,这些项目使用SharePoint的API来通过列表A和按名称的平均值,然后更新列表B中的所有项目(或仅影响项目)。或者,只要所有数据都显示在您的列表中,则可以使用JavaScript来显示列表A中与列表B中的项目具有相同名称的所有项目的总和页。如果您在XPath和InfoPath中得心应手,则可以将列表A作为辅助数据源添加到列表B的表单中,并仅选择列表A中可用的项目进行汇总。

但是,如果我们正在讨论工作流程,以下是“仅工作流程”方法。这是测试,并成功在2010年创建具有下列列自定义列表C:

  • 标题(字符串,强制,强制执行唯一值)
  • TOTALITEMS(整数,强制性的,默认为0)
  • 总和(数,小数不过你想要的,强制性的,默认为0)
  • 平均数(计算方法,= IF(TOTALITEMS = 0,0,金额/ TOTALITEMS))(可选)

中列出更换名称列A和B查找列指向在列表C中删除列表B中的金额列,而不是将总和列作为附加列。将以下列添加到列表A,并确保用户不能直接更改它们。这可以通过制作InfoPath表单或制作其他视图和编辑表单来限制。

  • AmountArchive(数字,相同的金额,默认为0)
  • AmountHasBeenSubmitted(是/否,默认无)

创建工作流程的每个项目被创建或列表修改时间运行一个。使用这些命令(我使用可读性列表;当作为代码格式化它是越来越难看):

  • 如果当前项目:金额不等于当前项:AmountArchive
    • 设置变量:项目计数(数据源:列表C;字段来源:TotalItems;查找列表项目:字段标题;值:当前项目:名称(返回字段为:查找值(作为文本)))
    • 计算变量:ItemCount加1输出到变量:ItemCount)
    • 计算列表C:Sum(类似上面的设置;一定要使用Lookup Value(as Text)而不是String!)minus Curr五官科项目:AmountArchive(输出到变量:SumWithoutValue)
    • 计算变量:SumWithoutValue加上当前货品:金额(输出到变量:NewSum)
    • 如果当前项目:AmountHasBeenSubmitted等于没有
      • 设置AmountHasBeenSubmitted为是
      • 更新列表C中的项目(将TotalItems设置为Variable:ItemCount;将Sum设置为变量:NewSum;以与字段相同的方式查找列表项目:标题;值:当前项:姓名(返回字段:查找值(以文本))
    • 否则名单C(不要做任何TOTALITEMS
      • 更新的产品,使用相同的逻辑来设置总和到变量:NewSum)
    • 设置量为当前项目:AmountArchive
相关问题