如何将DynamicsTime中的DateTime字段转换为日期?
我正在按照this指南将DateTime字段更新为Dynamics中的日期字段。当我在下面运行我的代码时,我没有收到错误,但我也没有看到我的日期字段有任何更改。如何将DynamicsTime中的DateTime字段转换为日期?
更新:基于帕维尔Gradecki的答案,this文章中,我检查了AsyncOperationBase表,其中我发现下面的消息,这似乎违背了实体定义(在屏幕截图所示)。
参数转换规则:SpecificTimeZone TimeZoneCode:35 自动转换:虚假的错误信息:指定的属性对于仅日期的行为日期 和时间属性:实体: ccseq_clientstatus,属性:ccseq_prospectstatusdate属性 处理
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);
}
}
}
根据文档:
当执行ConvertDateAndTimeBehaviorRequest消息, 系统作业(异步操作)被创建以运行转换 请求。 消息响应中的ConvertDateAndTimeBehaviorResponse.JobId属性显示作为转换请求结果创建为 的系统作业的ID。系统作业完成后, 检查作业详细信息(AsyncOperation.Message)以查看转换 的详细信息或错误(如果有)。
所以首先,转换将在一段时间后完成,因为它是异步的,这就是为什么你不会立即得到任何错误。其次,如果你想检查错误,你应该在给定JobId的AsyncOperation(系统作业)中执行此操作,只需查找最新的系统作业或使用SDK检索此系统作业。
我更新了我的问题与我的尝试根据您的答案。如果您有任何额外的输入,我将不胜感激 –
原来是忘记发布我的更改后,我已经使他们 –