我在Dynamics CRM中的帐户和投资组合之间存在1:N关系 即每个帐户都有多个投资组合,每个投资组合都有特定资产。
我正在尝试在帐户表单上创建一个字段,该字段计算帐户的“所有相关投资组合的所有资产”的总和,并将其显示在帐户表单上
作为一种解决方法,我尝试按帐户创建投资组合视图分组,但它不会将投资组合资产汇总并汇总到帐户级别。
因此,在帐户表单上,我正在尝试创建一个文本字段,在此示例中计算总帐户资产为25,000美元
答案 0 :(得分:3)
function setupGridRefresh() {
var targetgrid = document.getElementById("NAME OF SUBGRID");
// If already loaded
if (targetgrid.readyState == 'complete') {
targetgrid.attachEvent("onrefresh", subGridOnload);
}
else {
targetgrid.onreadystatechange = function applyRefreshEvent() {
var targetgrid = document.getElementById("NAME OF SUBGRID");
if (targetgrid.readyState == 'complete') {
targetgrid.attachEvent("onrefresh", subGridOnload);
}
}
}
subGridOnload();
}
function subGridOnload() {
//debugger;
var grid = Xrm.Page.ui.controls.get('NAME OF SUBGRID')._control;
var sum = 0.00;
if (grid.get_innerControl() == null) {
setTimeout(subGridOnload, 1000);
return;
}
else if (grid.get_innerControl()._element.innerText.search("Loading") != -1) {
setTimeout(subGridOnload, 1000);
return;
}
var ids = grid.get_innerControl().get_allRecordIds();
var cellValue;
for (i = 0; i < ids.length; i++) {
if (grid.get_innerControl().getCellValue('FIELD NAME LOWER CASE', ids[i]) != "") {
cellValue = grid.get_innerControl().getCellValue('FIELD NAME LOWER CASE', ids[i]);
cellValue = cellValue.substring(2);
cellValue = parseFloat(cellValue);
sum = sum + cellValue;
}
}
var currentSum = Xrm.Page.getAttribute('DESTINATION FIELD').getValue();
if (sum > 0 || (currentSum != sum && currentSum != null)) {
Xrm.Page.getAttribute('DESTINATION FIELD').setValue(sum);
}
}
我从几个来源拼凑了这个,现在用它作为我的解决方案之一。如果您需要更多帮助或者我误解了这个问题,请告诉我。 (顺便说一句,这个解决方案是基于这样的假设:当子网格添加或删除了条目时你需要更改总数。如果这不是要求,我会建议RetrieveMultiple OData调用。)
答案 1 :(得分:2)
看看AutoSummary from Gap Consulting,非常值得花钱。或者花时间建立自己的。您需要在帐户记录上添加一个字段,每次更新时都会更新:
前两个很容易在投资组合上的onSave事件中使用工作流程或javascript。第三个只能通过工作流来完成,而不是javascript(我认为)。最后一个需要onLoad javascript来存储Account查找的当前值,以便onSave可以比较然后递减一个并递增另一个。所有四个都可以使用插件完成。
答案 2 :(得分:2)
虽然已经回答了这个问题,但我会为你准备第二个选项。从North 52看看FormulaManager。您可以免费获得一定数量的公式,因此它可能是一种更具成本效益的解决方案。
<强>更新强> 要添加到此,如果该字段仅用于报告值(并且不需要保存到数据库),那么您可以构建一个执行聚合FetchXml查询的Web资源,而不是使用物理字段和插件。显示结果值。
同样,这是我知道公式管理器开箱即用的东西。从未使用过Auto Summary。