积极答复者
请问下插件CRM用造测试合同实体正常通过,用CRM自带的合同实体,报错“无属性”,这个大概是什么原因呢

问题
答案
全部回复
-
Debug或者抓trace 就可以知道怎么回事了
刀客 | MSN:caims@techsun.com | BLOG:http://caims.cnblogs.com -
请问下应该怎样抓trace呢?
用Debug可以找到出错的行,是 contract = crmService.Retrieve(MyCrmService.EntityName.contract.ToString(), contractid, cols) as MyCrmService.contract;
出错的原因应该是没有找到合同 contractid,具体为什么没有找到就不清楚了主要代码是:
CrmMoney invoiceCash = entity.Properties["new_billmoney"] as CrmMoney;
MyCrmService.contract contract = new MyCrmService.contract();
MyCrmService.ColumnSet cols = new MyCrmService.ColumnSet();
cols.Attributes = new string[] { "new_contractid", "new_totalbillcash" };
Guid contractid = ((Lookup)entity.Properties["new_contractid"]).Value;
contract = crmService.Retrieve(MyCrmService.EntityName.contract.ToString(), contractid, cols) as MyCrmService.contract; -
// Verify that the entity represents a WorkItem.
if (context.PrimaryEntityName == MyCrmService.EntityName.new_billcash.ToString())
{
// Sum for the invoice
CrmMoney invoiceCash = entity.Properties["new_billmoney"] as CrmMoney;
MyCrmService.contract contract = new MyCrmService.contract();
MyCrmService.ColumnSet cols = new MyCrmService.ColumnSet();
cols.Attributes = new string[] { "new_contractid", "new_totalbillcash" };
Guid contractid = ((Lookup)entity.Properties["new_contractid"]).Value;
contract = crmService.Retrieve(MyCrmService.EntityName.contract.ToString(), contractid, cols) as MyCrmService.contract;
// Update the contract Total invoice
decimal totalInvoice = contract.new_totalbillcash.Value + invoiceCash.Value;
contract.new_totalbillcash.Value = totalInvoice;
}上面是更全的代码,这个插件的作用是将几张发票中的金额累加到合同表单的某个字段中,contract实体没有一个属性构架名称为new_contractid,new_billcash实体中有new_contractid。
在new_billcash实体中建一个N:1的关系、主要实体是contract、名称为new_contractid,然后在new_billcash实体中建一个lookup类型的、名称为new_contractid的字段,这样就可以在new_billcash实体中检索到对应的contract实体的new_totalbillcash字段。
这段代码用测试的合同(测试合同中只有少数相关的几个字段)可以测通,但是用系统自带的合同就测不通,报无属性的错误。