2017-04-24 47 views
2

我正在按照this指南将DateTime字段更新为Dynamics中的日期字段。当我在下面运行我的代码时,我没有收到错误,但我也没有看到我的日期字段有任何更改。如何将DynamicsTime中的DateTime字段转换为日期?


更新:基于帕维尔Gradecki的答案,this文章中,我检查了AsyncOperationBase表,其中我发现下面的消息,这似乎违背了实体定义(在屏幕截图所示)。

参数转换规则:SpecificTimeZone TimeZoneCode:35 自动转换:虚假的错误信息:指定的属性对于仅日期的行为日期 和时间属性:实体: ccseq_clientstatus,属性:ccseq_prospectstatusdate属性 处理

Entity Definition


using Microsoft.Xrm.Sdk; 
using Microsoft.Xrm.Sdk.Client; 
using Microsoft.Xrm.Sdk.Messages; 
using System; 
using System.Collections.Generic; 
using System.Collections.Specialized; 

namespace UpdateDateClientStatus1 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     var cred = new System.ServiceModel.Description.ClientCredentials(); 
     cred.Windows.ClientCredential.Domain = "DOMAIN"; 
     cred.Windows.ClientCredential.UserName = "USERNAME"; 
     cred.Windows.ClientCredential.Password = "PASSWORD"; 
     OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(new Uri("url"), null, cred,null); 
     ConvertDateAndTimeBehaviorRequest request = new ConvertDateAndTimeBehaviorRequest() 
     { 
      Attributes = new EntityAttributeCollection() 
     { 
      // ccseq_clientstatus is the entity I am updating and ccseq_prospectstatusdate is the field I am updating 
      new KeyValuePair<string, StringCollection>("ccseq_clientstatus", new StringCollection() 
      { "ccseq_prospectstatusdate" })  
     }, 
      ConversionRule = DateTimeBehaviorConversionRule.SpecificTimeZone.Value, 
      TimeZoneCode = 035,// Time zone code for EST in CRM 
      AutoConvert = false // Conversion must be done using ConversionRule 
     }; 

     // Execute the request 
     ConvertDateAndTimeBehaviorResponse response = (ConvertDateAndTimeBehaviorResponse)_serviceProxy.Execute(request); 
    } 
} 
} 
+0

原来是忘记发布我的更改后,我已经使他们 –

回答

2

根据文档:

当执行ConvertDateAndTimeBehaviorRequest消息, 系统作业(异步操作)被创建以运行转换 请求。 消息响应中的ConvertDateAndTimeBehaviorResponse.JobId属性显示作为转换请求结果创建为 的系统作业的ID。系统作业完成后, 检查作业详细信息(AsyncOperation.Message)以查看转换 的详细信息或错误(如果有)。

所以首先,转换将在一段时间后完成,因为它是异步的,这就是为什么你不会立即得到任何错误。其次,如果你想检查错误,你应该在给定JobId的AsyncOperation(系统作业)中执行此操作,只需查找最新的系统作业或使用SDK检索此系统作业。

+0

我更新了我的问题与我的尝试根据您的答案。如果您有任何额外的输入,我将不胜感激 –

相关问题