我一直在发现自己想要将字段添加到实际上并不代表实体上的物理字段的CRM表单中。我希望在更新消息中发送这些字段,以便我的插件...
例如,想象一下开箱即用的联系人/地址功能。主要联系地址在“联系人”表单中显示为一组字段。然而,事实上,在幕后有一些神奇的事情会导致为包含地址详细信息的联系人创建地址记录。我实际上并不想重现这一点,但这是一个很好的例子......
现在,我知道如何编写一个插件,该插件接收在Create / Update消息中输入的地址字段,并实际将它们写入Address对象。这很简单。似乎硬件正在说服CRM在表单上显示字段,供用户输入地址数据。
我能看到的唯一方法是在Contact-equivilent表单中创建“假”字段,以便表单编辑器允许我将字段添加到对话框中。然后我必须在插件中过滤掉这些属性,因此伪字段实际上不会写入数据库。
这可行,但涉及使用假列填充数据库模式(或应该)从不在其中包含任何数据。这使得系统的未来结合更加混乱,因为在所有GUI中存在称为“不使用 - 地址1”的诱饵字段。当我需要一个假的Lookup字段时问题变得更糟 - 这涉及创建一个假的关系。
那么:有没有办法在不丢弃数据库模式中的假垃圾的情况下实现同样的目的?
是否有某种方法可以在表单上的Javascript中为任意属性创建表单字段,以便属性将包含在更新消息中?
当然,我意识到我可以使用IFrame或Silverlight来满足这一需求,但我宁愿使用真正的CRM表单字段,并处理更新/创建消息插件钩子中的数据。
答案 0 :(得分:1)
不幸的是,您已经提到了我能想到的两个选项:假字段或自定义IFrame。
我知道这感觉“很脏”,但实际上我做假场的事情并没有太多麻烦。标准化的命名约定是你的朋友。我更喜欢伪领域而不是IFrame,因为用户仍然可以在高级查找,报告,视图等中查询和过滤它们。
只需确保它们是只读的,并确保您的插件不会吞下异常 - 您希望异常冒泡并取消事务,而不是主记录在没有子项的情况下更新的可能性。