发布日期: 一月 1, 2008
提供已输入值的字段,可减少用户的输入时间并提高其准确性。如有必要,用户仍可覆盖默认值。
您可以通过编写在加载表单或更改字段值时触发的 JScript 代码,为 Microsoft Dynamics CRM 字段设置默认值。本文中的示例将介绍使用 JScript 进行的客户端编程。即使您以前从未编写过代码,这些代码示例也很容易理解、复制和修改。
第一个示例“设置约会的默认持续时间”将说明如何更改约会的默认持续时间。这种方法很简单,可防止员工因在输入约会时做出更改而导致的错误。
第二个示例“基于优先级设置截止日期”将说明如何基于用户在“任务”表单的“优先级”列表中选择的值,更改任务的“截止日期”字段中的值。使用一个字段中的值设置另一个字段的默认值,可确保员工遵照标准流程。此外,还可减少每位用户的点击次数和输入量。
若要做出本文建议的更改,您必须具有“系统管理员”或“系统定制员”安全角色, 或同等的特权。
|
|
设置约会的默认持续时间 |
|
|
基于优先级设置截止日期 |
|
|
修改 JScript 代码的相关提示 |
下例将说明如何使用 OnLoad 事件,在 Microsoft Dynamics CRM 加载表单时更改属性的默认值。打开表单时,Microsoft Dynamics CRM 会在显示表单之前运行您在 OnLoad 事件中指定的代码。这可确保员工始终可以看到自定义值。
在导航窗格中,依次单击“设置”、“自定义”,然后单击“自定义实体”。
双击“约会”。
在“详细信息”下,单击“表单和视图”,然后双击“表单”。
在“常规任务”区域,单击“表单属性”。
选择 “OnLoad”,然后单击“编辑”。将打开“事件详细信息属性”对话框。
将以下代码粘贴到“事件详细信息属性”对话框的框中。
// 在打开表单时,将默认持续时间设置为 60 分钟。
var CRM_FORM_TYPE_CREATE = "1";
var iMinutes = 60;
if (crmForm.FormType==CRM_FORM_TYPE_CREATE)
{
crmForm.all.scheduleddurationminutes.DataValue = iMinutes;
}
选中“事件已启用”复选框。
单击“确定”关闭“事件详细信息属性” 对话框,然后单击“确定”关闭“表单属性”对话框。
在“表单:约会”表单的“预览”菜单上,单击“创建表单”。
在“创建表单”表单中,确保已将“持续时间”设置为一小时,然后关闭此窗口。
在“预览”菜单上,单击“更新表单”。因为只有在用户打开表单以创建新记录时,此代码才会运行,所以在用户打开表单以更新记录时,“持续时间”值不会发生变化。关闭该窗口。
在“表单:约会”表单中,单击“保存并关闭”。
如果完成了更改,请单击“实体:约会”表单上的“保存并关闭”,选择 “自定义实体”列表中的“约会”, 然后在“操作”菜单中,单击“发布”。
因为会缓存网页,所以可能不会立即显示已发布的自定义项。如果出现这种情况,可以关闭并重新打开 Microsoft Dynamics CRM 也可以按 F5 刷新该页。
本示例将说明如何使用任务的优先级确定任务的截止日期。您将了解如何在另一个值发生更改时设置某个字段的默认值。
“任务”实体的“优先级”字段是一个下拉列表,而下拉列表具有默认值。打开新任务时,优先级会设置为“中”。本示例使用 OnLoad 事件在打开表单时设置截止日期。然后,对“优先级”字段使用 OnChange 事件,以便在“优先级”字段中的值发生更改时设置截止日期。
在导航窗格中,依次单击“设置”、“自定义”,然后单击“自定义实体”。
双击“任务”。
在“详细信息”下,单击“表单和视图”,然后双击“表单”。
在“常规任务”区域,单击“表单属性”。
选择“OnLoad”,然后单击“编辑”。
将以下代码粘贴到“事件详细信息属性”对话框的框中:
var CRM_FORM_TYPE_CREATE = "1";
var DUE;
var TODAY;
// 只有在“创建”模式下打开表单,才进行以下更改。
if (crmForm.FormType==CRM_FORM_TYPE_CREATE)
{
// 获取今天的日期。
TODAY = new Date();
// 将截止日期从今天设置为 3 天后的下午 5:00。
DUE = TODAY.setDate( TODAY.getDate() + 3);
DUE=TODAY.setHours(17,0,0);
crmForm.all.scheduledend.DataValue = DUE;
}
选中“事件已启用”复选框。
单击“确定”关闭“事件详细信息属性”对话框,然后单击“确定”关闭“表单属性”对话框。
在“表单:任务”表单的“预览”菜单上,单击“创建表单”。
验证“截止日期”字段的值是否已设置为今天起三天后的下午 5:00,然后关闭“创建表单”窗口。
单击“保存”,然后继续执行下一步骤。
在上一步骤中打开的“表单:任务”表单中,单击“优先级”,然后在“常规任务”区域中,单击“更改属性”。
在“事件”选项卡上,选择“onChange”,然后单击“编辑”。此时 将打开“事件详细信息属性” 对话框。
将以下代码粘贴到“事件详细信息属性”对话框的框中:
var CRM_FORM_TYPE_CREATE = "1";
var PRIORITY_HIGH="High";
var PRIORITY_NORMAL="Normal";
var PRIORITY_LOW="Low";
var DUE;
var TODAY;
// 只有在“创建”模式下打开表单,才进行以下更改。
if (crmForm.FormType==CRM_FORM_TYPE_CREATE)
{
TODAY = new Date();
// 如果“截止日期”为空,则将其设置为今天的日期。
DUE = crmForm.all.scheduledend.DataValue;
if (DUE == null)
{
DUE = new Date();
}
// 基于“优先级”字段的值设置截止日期。
// 在每个案例中,将时间设置为下午 5:00。
switch (crmForm.prioritycode.SelectedText) {
case PRIORITY_HIGH:
DUE = TODAY;
DUE = DUE.setHours(17,0,0);
break;
case PRIORITY_LOW:
DUE = TODAY.setDate( TODAY.getDate() + 7);
DUE = TODAY.setHours(17,0,0);
break;
case PRIORITY_NORMAL:
DUE = TODAY.setDate( TODAY.getDate() + 3);
DUE = TODAY.setHours(17,0,0);
break;
}
crmForm.all.scheduledend.DataValue = DUE;
}
选中“事件已启用”复选框。
单击“确定”关闭“事件详细信息属性”对话框,然后单击“确定”关闭“字段属性”对话框。
在“表单:任务”表单的“预览”菜单上,单击“创建表单”。
在“优先级”框中,选择各个值,然后验证“截止日期”字段内的值是否正确更改。
关闭“创建表单”表单。
在“预览”菜单上,单击“更新表单”,然后确定更改“优先级”框中的值并不会 更改“截止日期”字段中的值。
关闭“更新表单”表单。
在“表单:任务”表单中,单击“保存并关闭”。
如果完成了更改,请单击“实体:任务”表单上的“保存并关闭”。
在“自定义实体”列表中,选择“任务”,然后在“操作”工具栏上,单击“发布”。
因为会缓存网页,所以可能不会立即显示已发布的自定义项。如果出现这种情况,可以关闭并重新打开 Microsoft Dynamics CRM 也可以按 F5 刷新该页。
在 Microsoft Dynamics CRM 中创建默认值时,请牢记以下几点:
JScript 区分大小写。
注释以 // 开头。
因为“事件详细信息属性”对话框中用于输入代码的框只接受纯文本,所有它不具备“撤消”功能,而且无法检查 JScript 语法。如果在预览所做更改时代码中出现语法错误,则只会在状态栏上显示“此页面上存在错误”消息。
至少应在记事本中保留一份代码,以便每次添加并测试一行或两行代码。如果已安装 Microsoft Visual Studio 开发系统,请打开 .js 文件,并在其中编写代码。Microsoft Visual Studio 会检查 JScript 语法。
必须在代码中使用字段名称,而非显示名称。若要查找表单上某个字段的名称,请选择“更改属性”,然后单击“架构”选项卡。若要查找锁定字段的架构名称,请单击实体的“属性”选项卡,其中有一列可显示架构名称和显示名称。
Microsoft Dynamics CRM 表单具有一些属性和方法,您可以从 JScript 代码中加以调用,以确定诸如打开表单后是创建记录还是更新记录之类的内容。字段也具有属性和方法。不同类型的字段具有不同的属性。 所有字段类型都具有“DataValue”属性,可用于返回或设置字段的值。如需了解 Microsoft Dynamics CRM 表单和字段的属性及方法的相关信息,请参阅 Microsoft Dynamics CRM SDK 中的表单对象模型一节。
JScript 用户指南和 JScript 语言参考有助于查找 JScript 语法。