Dynamics crm 2011 使用联系人创建活动时,应如何实现“OnLoad”事件处理程序?

Dynamics crm 2011 使用联系人创建活动时,应如何实现“OnLoad”事件处理程序?,dynamics-crm-2011,Dynamics Crm 2011,我已经用类型为activity的自定义实体创建了自己的解决方案。每当使用现有联系人创建一个新实例时,我想显示一条消息,但不允许用户创建一个实例,如果仅尝试创建而不通过联系人创建 基本上,我的目标是,仅仅创建那个活动并不是不可能的(表单在任何尝试下都会被直接隐藏,只有一种方式除外)。用户必须转到contacts(或Lead等),然后在其中添加并创建自定义活动实体的实例。这样,我可以保证“关于”字段已经填写完毕 我猜我需要以某种方式检测表单的打开是一种创建尝试。我该怎么做 此外,正如现在一样,用户无

我已经用类型为activity的自定义实体创建了自己的解决方案。每当使用现有联系人创建一个新实例时,我想显示一条消息,但不允许用户创建一个实例,如果仅尝试创建而不通过联系人创建

基本上,我的目标是,仅仅创建那个活动并不是不可能的(表单在任何尝试下都会被直接隐藏,只有一种方式除外)。用户必须转到contacts(或Lead等),然后在其中添加并创建自定义活动实体的实例。这样,我可以保证“关于”字段已经填写完毕

我猜我需要以某种方式检测表单的打开是一种创建尝试。我该怎么做


此外,正如现在一样,用户无法创建自定义类型的非接触式活动,因为它不会与其他活动一起出现在菜单上。我一定是不知怎么把它弄坏了,但我不知道怎么弄的。任何人有一个吗?

你可以用多种方法来实现这一点,但最简单的方法可能是:

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

(,但我不确定这在这里有多有用)

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

  • CRM>工作场所>活动>功能区>其他活动>XXX
  • CRM>工作场所>活动>视图选择器>XXX
它们不会显示在工作场所的左侧导航下,因为它们被分组在“活动”下。我很确定这些都是默认设置


你可以通过编辑网站地图来行使更大的控制权,在那里你可以把几乎任何东西放在任何地方。

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

var foo=函数(){
var whatIsGoingOn=Xrm.Page.ui.getFormType();
如果(whatIsGoingOn==1)
警报(“存在实体!”);
其他的
警报(“不是创建…”);
}

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

回答问题的第二部分:

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

对于您的设置,我建议不要选中此框,这样它就不会出现在“活动”菜单中,以避免用户尝试这样做

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

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

Xrm.Page.getAttribute(“regardingobjectid”).setSubmitMode(“始终”);

您必须在表单上查找联系人和潜在客户,才能在脚本中使用它们,但您可以使它们“默认情况下不可见”,这样它们就在那里,但用户看不到(并且不占用空间)。

换句话说,如果没有对联系人或潜在客户的引用,系统中不可能存在此活动?完全正确!但我想我会通过要求填写字段来解决这个问题。我可能不必要地把事情复杂化了。但仅供将来参考-如果是创建时间,但字段未设置,我如何关闭这样的窗口?(这个条件,我已经知道了,但是强行关闭窗口对我来说有点不清楚……我确信javascript中有一种方法可以做到这一点,与Andreas提到的类似,但由于这是一个系统规则,我只想强调通过插件将客户机逻辑与服务器端逻辑复制的重要性,不幸的是,在一篇文章中没有提到这一点。)回答还没有。CRM上的服务器端?!我们不允许进入后台系统,是吗?SDK只允许我们使用少数DLL,没有DOM触摸,无法访问DB(我理解,即使查看它是一个皱眉制造者)…你建议我对服务器进行编程?我们中的一个人错过了一些东西(统计上,是我,呵呵)。呵呵,“插件是自定义业务逻辑(代码)您可以与Microsoft Dynamics CRM 2011和Microsoft Dynamics CRM Online集成,以修改或增强平台的标准行为。考虑插件的另一种方式是,它们是Microsoft Dynamics CRM触发的事件的处理程序。您可以订阅或注册一个已知事件集的插件,以便在n事件发生了。“SDK中有大量的示例和许多关于插件开发的问题@SO。我正考虑将“关于”字段设为必填字段,但我将在
选择列表中获取一些数据,供用户在创建新自定义时选择