我在 Dynamics CRM 中的帐户和投资组合之间存在 1:N 的关系,即每个帐户都有多个投资组合,每个投资组合都有特定的资产。
我正在尝试在帐户表单上创建一个字段,该字段计算帐户的“所有相关投资组合的所有资产”的总和并将其显示在帐户表单上
作为一种解决方法,我尝试创建一个按帐户分组的投资组合视图,但它没有求和并将投资组合资产汇总到帐户级别。
因此,在帐户表单上,我试图创建一个文本字段,在此示例中计算总帐户资产为 25,000 美元
我在 Dynamics CRM 中的帐户和投资组合之间存在 1:N 的关系,即每个帐户都有多个投资组合,每个投资组合都有特定的资产。
我正在尝试在帐户表单上创建一个字段,该字段计算帐户的“所有相关投资组合的所有资产”的总和并将其显示在帐户表单上
作为一种解决方法,我尝试创建一个按帐户分组的投资组合视图,但它没有求和并将投资组合资产汇总到帐户级别。
因此,在帐户表单上,我试图创建一个文本字段,在此示例中计算总帐户资产为 25,000 美元
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。)
看看Gap Consulting 的 AutoSummary,物有所值。或者花时间建立自己的。您需要客户记录上的一个字段,每次您执行以下操作时都会更新该字段:
前两个很容易在投资组合的 onSave 事件中使用工作流或 javascript。第三只能通过工作流完成,而不是javascript(我认为)。最后一个需要 onLoad javascript 来存储 Account 查找的当前值,以便 onSave 可以进行比较,然后递减一个并递增另一个。这四个都可以通过插件完成。
尽管已经回答了这个问题,但我会为您提供第二个选项。也可以看看North 52 的FormulaManager。您可以免费获得一定数量的公式,因此它可能是一个更具成本效益的解决方案。
更新 补充一点,如果该字段仅用于报告一个值(并且不需要保存到数据库中),那么您可以构建一个执行 Aggregated FetchXml 查询的 Web 资源,而不是使用物理字段和插件只显示结果值。
同样,这是我知道 Formula Manager 开箱即用的东西。从未使用过自动摘要。