【发布时间】:2015-09-02 06:09:41
【问题描述】:
我们在报告向导的“导出到 Excel”功能中遇到问题。我们使用 OOB 报告向导(不是 SSRS)创建了一个简单的报告,其中包含很少的 DateTime 字段,如 CreatedOn。 CRM 和报告查看器中显示的 DateTime 值与预期的登录用户的时区 (UTC+8) 相关。但是在将报告导出到 excel 后,它显示的时间有 8 小时延迟(UTC)。我们希望这些 DateTime 值与 CRM 中的值相同,即使在将其导出到 excel 后也是如此。
这是来自 CRM 的错误吗?谁能帮忙解决这个问题?
谢谢,
报告 XML:
<ReportParameters>
<ReportParameter Name="CRM_FullName">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<Prompt>CRM_FullName</Prompt>
<Hidden>true</Hidden>
<DefaultValue>
<Values>
<Value>administrator</Value>
</Values>
</DefaultValue>
</ReportParameter>
<ReportParameter Name="CRM_UserTimeZoneName">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value></Value>
</Values>
</DefaultValue>
<AllowBlank>true</AllowBlank>
<Prompt>CRM_UserTimeZoneName</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_UILanguageId">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>18441</Value>
</Values>
</DefaultValue>
<Prompt>CRM_UILanguageId</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_CurrencyDecimalPrecision">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>2</Value>
</Values>
</DefaultValue>
<Prompt>CRM_CurrencyDecimalPrecision</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_CurrencySymbol">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>$</Value>
</Values>
</DefaultValue>
<AllowBlank>true</AllowBlank>
<Prompt>CRM_CurrencySymbol</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_CurrencyPositivePattern">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>0</Value>
</Values>
</DefaultValue>
<Prompt>CRM_CurrencyPositivePattern</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_CurrencyNegativePattern">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>0</Value>
</Values>
</DefaultValue>
<Prompt>CRM_CurrencyNegativePattern</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_NumberDecimalDigits">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>2</Value>
</Values>
</DefaultValue>
<Prompt>CRM_NumberDecimalDigits</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_NumberDecimalSeparator">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>.</Value>
</Values>
</DefaultValue>
<Prompt>CRM_NumberDecimalSeparator</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_NumberNegativePattern">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>1</Value>
</Values>
</DefaultValue>
<Prompt>CRM_NumberNegativePattern</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_NumberGroupSizes">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>3</Value>
</Values>
</DefaultValue>
<Prompt>CRM_NumberGroupSizes</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_NumberGroupSeparator">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>,</Value>
</Values>
</DefaultValue>
<Prompt>CRM_NumberGroupSeparator</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_CalendarTypeCode">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>0</Value>
</Values>
</DefaultValue>
<Prompt>CRM_CalendarTypeCode</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_DateSeparator">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>/</Value>
</Values>
</DefaultValue>
<Prompt>CRM_DateSeparator</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_TimeSeparator">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>:</Value>
</Values>
</DefaultValue>
<Prompt>CRM_TimeSeparator</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_AMDesignator">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<DefaultValue>
<Values>
<Value>AM</Value>
</Values>
</DefaultValue>
<Prompt>CRM_AMDesignator</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_PMDesignator">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<DefaultValue>
<Values>
<Value>PM</Value>
</Values>
</DefaultValue>
<Prompt>CRM_PMDesignator</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_ShortDatePattern">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>d/M/yyyy</Value>
</Values>
</DefaultValue>
<Prompt>CRM_ShortDatePattern</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_LongDatePattern">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>dddd, d MMMM, yyyy</Value>
</Values>
</DefaultValue>
<Prompt>CRM_LongDatePattern</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_ShortTimePattern">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>h:mm tt</Value>
</Values>
</DefaultValue>
<Prompt>CRM_ShortTimePattern</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_MonthDayPattern">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>dd MMMM</Value>
</Values>
</DefaultValue>
<Prompt>CRM_MonthDayPattern</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_YearStartWeekCode">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>0</Value>
</Values>
</DefaultValue>
<Prompt>CRM_YearStartWeekCode</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_WeekStartDayCode">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>0</Value>
</Values>
</DefaultValue>
<Prompt>CRM_WeekStartDayCode</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_FilterText">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<Prompt>CRM_FilterText</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_FilteredIncident">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value><fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"><entity name="incident"><all-attributes /><filter type="and"><condition attribute="modifiedon" operator="last-x-days" value="60" /></filter></entity></fetch></Value>
</Values>
</DefaultValue>
<Prompt>CRM_FilteredIncident</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="CRM_URL">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<Prompt>CRM_URL</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
</ReportParameters>
<DataSources>
<DataSource Name="CRM">
<ConnectionProperties>
<DataProvider>MSCRMFETCH</DataProvider>
<ConnectString>http://serverName:5555/;orgName</ConnectString>
<IntegratedSecurity>true</IntegratedSecurity>
</ConnectionProperties>
</DataSource>
</DataSources>
<DataSets>
<DataSet Name="DSMain">
<Query>
<CommandText><fetch distinct="false" no-lock="false" mapping="logical"><entity name="incident" enableprefiltering="1" prefilterparametername="CRM_FilteredIncident"><attribute name="title" alias="title" /><attribute name="createdon" alias="createdon" /><attribute name="new_datereceived" alias="new_datereceived" /><attribute name="new_dateclosed" alias="new_dateclosed" /><attribute name="incidentid" /></entity></fetch></CommandText>
<DataSourceName>CRM</DataSourceName>
<QueryParameters>
<QueryParameter Name="CRM_FilteredIncident">
<Value>=Parameters!CRM_FilteredIncident.Value</Value>
</QueryParameter>
</QueryParameters>
</Query>
<Fields>
<Field Name="title">
<DataField>title</DataField>
</Field>
<Field Name="createdon">
<DataField>createdon</DataField>
</Field>
<Field Name="createdonValue">
<DataField>createdonValue</DataField>
</Field>
<Field Name="new_datereceived">
<DataField>new_datereceived</DataField>
</Field>
<Field Name="new_datereceivedValue">
<DataField>new_datereceivedValue</DataField>
</Field>
<Field Name="new_dateclosed">
<DataField>new_dateclosed</DataField>
</Field>
<Field Name="new_dateclosedValue">
<DataField>new_dateclosedValue</DataField>
</Field>
<Field Name="incidentid">
<DataField>incidentid</DataField>
</Field>
</Fields>
</DataSet>
</DataSets>
<CodeModules>
<CodeModule>Microsoft.Crm.Reporting.RdlHelper, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</CodeModule>
</CodeModules>
<CustomProperties>
<CustomProperty>
<Name>Custom</Name>
<Value><MSCRM xmlns="mscrm">&lt;ReportFilter&gt;&lt;ReportEntity paramname="CRM_FilteredIncident" donotconvert="1"&gt;&lt;fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"&gt;&lt;entity name="incident"&gt;&lt;all-attributes /&gt;&lt;filter type="and"&gt;&lt;condition attribute="modifiedon" operator="last-x-days" value="60" /&gt;&lt;/filter&gt;&lt;/entity&gt;&lt;/fetch&gt;&lt;/ReportEntity&gt;&lt;/ReportFilter&gt;</MSCRM></Value>
</CustomProperty>
</CustomProperties>
【问题讨论】:
-
也许您的报告中包含特定于 Excel 的逻辑?使用仅输出 DateTime 值的全新报告进行测试,看看会发生什么。如果值是从过滤视图中选择的,则它应该在执行用户的时区中。
-
是的,我尝试了一个非常简单的报告,只添加了一个 CreatedOn 字段。它在 UR8 上运行良好,但在 UR18 中却不行。我的报告不包含任何 Excel 特定逻辑。这是使用 OOB 报告向导构建的简单报告。
-
您可以在这里发布简化的报告文件吗?
-
我之前也看到过相同的行为,并且不怀疑这是一个错误,这些日期时间值是 UTC 存储的,因此可以这样导出。您是直接从 MSCRM 表中选择还是使用
filtered视图? (CLUE:你的答案就在于此) -
添加了我的报告 XML 代码。此报告不包含任何 SQL 查询。它是使用报表向导创建的简单明了的报表。
标签: dynamics-crm-2011 dynamics-crm export-to-excel