1

我已经使用活动类型的自定义实体创建了自己的解决方案。我想在使用现有联系人创建新实例时显示一条消息,但不允许用户创建一个,如果只是尝试这样做而不通过 contact

基本上,我的目标是创建该活动并非不可能(除了一种方式外,任何尝试都会直接隐藏表单)。用户必须转到联系人(或潜在客户等)并在其中添加并创建自定义活动实体的实例。这样,我可以保证已经填写了“关于”字段。

我猜我需要以某种方式检测表单的打开是一种创造尝试。我怎样才能做到这一点?

此外,就像现在一样,用户无法创建自定义类型的非接触式活动,因为它不会与其他活动一起出现在菜单上。我必须以某种方式禁用它,但我不知道如何。有谁有吗?

4

3 回答 3

2

您可以通过多种方式做到这一点,但最简单的可能是:

  • 将相关字段设为只读。
  • 将相关字段设为必填项。

这样,如果用户打开一个创建新表单,他们将无法设置相关信息,并且因为它是强制性的,他们将无法保存记录。当他们通过现有联系人打开时,相关字段将自动映射。也就是说,在这种情况下,只要强制要求就足够了。

作为一个侧面,JavaScript 可用于识别当前表单状态,但我不确定这在这里有多大用处)。

就自定义活动出现的位置而言,默认情况下,我的活动显示在多个位置,例如:

  • CRM > 工作场所 > 活动 > 功能区 > 其他活动 > XXX。
  • CRM > 工作场所 > 活动 > 视图选择器 > XXX。

它们不会显示在工作场所的左侧导航下方,因为它们被分组在“活动”下。我很确定这些都是默认设置。

您可以通过编辑站点地图来进行更大的控制,您可以在其中放置几乎任何东西,任何地方。

于 2012-10-08T22:55:23.400 回答
0

除了 Wood 先生,我想向您展示一些代码。它按预期工作,但我不确定它是否是最佳的。

var foo = function () {

  var whatIsGoingOn = Xrm.Page.ui.getFormType();

  if (whatIsGoingOn === 1)
    alert("Let there be an entity!");
  else
    alert("Not a creation...");
}

此处列出了其他状态(删除、更新等)的数值。

于 2012-10-09T06:26:54.710 回答
0

回答你问题的第二部分:

创建自定义活动时,您可以通过选中实体表单右上角的框来选择是否将其显示在“正常”活动菜单中。据我所知,这是一次唯一的选择,以后无法更改。

对于您的设置,我建议不要选中此框,因此它不会出现在活动菜单中,以避免用户甚至被诱惑这样做。

相反,将活动 N:1 的显式关系添加到 Contact,并将另一个 N:1 的关系添加到 Lead。使用此关系将您的活动添加到联系人和潜在客户表单的左侧导航中,或为它们添加一个网格(取决于您希望如何使用它以及是否需要将视图过滤为默认的“关联视图”以外的其他内容)。

当用户导航到此部分时,他们将查看是否存在任何以前的此类活动,并能够添加新活动。但是这意味着子记录是通过这种关系的子记录,而不是使用“关于”,因此在活动的表单上使用脚本,以便如果填写了联系人,则将其复制到相关,如果填写了线索然后复制。如果两者都不是,则使用警报或其他方式警告用户出现问题(参见前面的评论)。如果您希望有关是只读但由脚本填写,则需要确保使用强制保存值:

Xrm.Page.getAttribute("regardingobjectid").setSubmitMode("always");

您必须在表单上查找联系人和潜在客户才能在脚本中使用它们,但您可以将它们设置为“默认不可见”,以便它们存在但用户看不到(并且不占用空间) .

于 2012-10-09T10:44:34.507 回答