我在安装了UR1的情况下使用CRM 2013内部部署
我有一个带有子网格的自定义实体,查看相关的“任务”,如下所示:
每当我使用子网格右上角的“+”按钮从子网格创建任务时;新创建的任务的“关注”字段保持空白。当它应该通过查找来创建时,它是从。
创建的
我在任务实体上有javascript,它检查“关注”字段以检查它是从哪个实体创建的(如果它是从一个创建的)并从调用实体获取某些字段值以填充任务上的字段
由于“关注”字段永远不会填充,因此Javascript永远不会触发 - 并且字段不会填充。
保存记录时,如果关联字段为空(我没有手动填写) - 如果刷新页面,最终将在10 - 15秒后填充正确的记录。然后将填充正确的字段,用户可以编辑选项集值并再次保存。这对用户来说并不理想,因为他们希望这是一个流畅的行动。
有没有解决这个问题的方法?
为此问题的未来浏览器编辑:
找到了部分工作。如果使用“活动”子网格而不是“任务”子网格,则将填充该字段。这有一个缺点,因为您无法编辑“活动”子网格的视图以显示“任务”特定字段。
答案 0 :(得分:1)
进入同样的问题。我解决它的方法是在表单上添加对自定义实体的查找(我们将其放在隐藏的选项卡上)。从自定义实体创建任务时,将填充查找。然后,您可以使用该查找来获取填充所需的值,包括关注字段。不是最优雅,但它的工作原理。
答案 1 :(得分:1)
我也遇到了这个问题,并采用纯JS方法解决。在加载任务表单时,调用populateRegarding()。
这是有效的,因为即使默认情况下不填充关于查找,查询字符串参数也包括_CreateFromType和_CreateFromId值。
这适用于2015年,没有在早期版本上测试。请注意,它不受支持。
function populateRegarding() {
var regarding = Xrm.Page.getAttribute("regardingobjectid"),
createFromType = Xrm.Page.context.getQueryStringParameters()._CreateFromType,
createFromId = Xrm.Page.context.getQueryStringParameters()._CreateFromId;
if (!createFromId || !createFromType ||
!regarding || regarding.getValue() !== null) {
return;
}
var entityLogicalName = getEntityLogicalNameFromObjectTypeCode(createFromType);
regarding.setValue([{
id: createFromId,
entityType: entityLogicalName,
name: "Hardcoded Name" // TODO: retrieve name dynamically
}]);
}
// This method uses an undocumented object and is therefore unsupported.
// You could implement a supported version of this function by querying for
// metadata, but that would be very expensive.
function getEntityLogicalNameFromObjectTypeCode(otc) {
var map = Mscrm.EntityPropUtil.EntityTypeName2CodeMap,
logicalName;
otc = Number(otc); // convert string to number
for (logicalName in map) {
if (!map.hasOwnProperty(logicalName)) { continue; }
if (map[logicalName] === otc) {
return logicalName;
}
}
}