CRM2011 - 更新帐户资金值 - 适用于一个字段 - 但不适用于其他字段

时间:2014-05-20 12:44:54

标签: c# crm

这有点过分但是这里......

我目前正在开发一个通过其XRMServices与Microsoft CRM 2011连接的项目。

我的问题是某些货币(a.k.a货币)值会在[AccountBase]表中更新,而其他货币则不会。 [revenue]字段已更新,但[aging30]值不是。这两个领域都有相同的主要属性:

  1. 两者都是Type Currency
  2. 它们都是默认字段。
  3. 他们似乎都没有任何数据库约束。 ! [aging30]似乎只是阅读!!
  4. 尽管该字段可能只读,但是可能导致这种情况的原因是什么?我认为我可能与字段级安全性或用户安全性有关,但似乎不是这样。我对系统拥有足够的权限,并且字段属性未设置为禁用此类操作。 我能想到的唯一另一件事是,它可能是一个禁止我更新此值的工作流程,但我再也看不到系统中与此相关的任何内容。在运行下面的代码之后,实体的收入值会更新,并且在dbo.AccountBase中可见,但[aging30]字段不是。 XRM Web服务不会生成任何异常。

    图1 - 检索帐户

     public Entity GetByAccountCode(string accountCode, bool allColumns = false)
        {
    
            if (string.IsNullOrEmpty(accountCode))
                return default(Entity);
            QueryExpression query = new QueryExpression("account");
            query.ColumnSet = new ColumnSet(allColumns);
            query.Criteria = new FilterExpression();
    
            query.Criteria.AddCondition("accountnumber", ConditionOperator.Equal, accountCode);
    
            EntityCollection results = _service.RetrieveMultiple(query);
            if (results.Entities.Count == 0)
                return default(Entity);
            if (results.Entities.Count > 1)
                throw new DuplicateRecordsOnAccountCodeException(accountCode, "Duplicate records on AccountCode found"); // needs to be changed appropriatly
    
            return results[0] as Entity;
    
        }
    

    图2 - 更新帐户**

     account.Attributes["revenue"] = new Money((decimal)100m); // This value is updated
     account.Attributes["aging30"] = new Money((decimal)200m); // This value is not
     _service.Update(entity);
    

1 个答案:

答案 0 :(得分:0)

基于SDK此字段(aging30)是一个平台,仅对读取有效。