【问题标题】:Time Discrepancy after Exporting Report in CRM 2011在 CRM 2011 中导出报告后的时间差异
【发布时间】: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>&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;</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>&lt;fetch distinct="false" no-lock="false" mapping="logical"&gt;&lt;entity name="incident" enableprefiltering="1" prefilterparametername="CRM_FilteredIncident"&gt;&lt;attribute name="title" alias="title" /&gt;&lt;attribute name="createdon" alias="createdon" /&gt;&lt;attribute name="new_datereceived" alias="new_datereceived" /&gt;&lt;attribute name="new_dateclosed" alias="new_dateclosed" /&gt;&lt;attribute name="incidentid" /&gt;&lt;/entity&gt;&lt;/fetch&gt;</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>&lt;MSCRM xmlns="mscrm"&gt;&amp;lt;ReportFilter&amp;gt;&amp;lt;ReportEntity paramname="CRM_FilteredIncident" donotconvert="1"&amp;gt;&amp;lt;fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"&amp;gt;&amp;lt;entity name="incident"&amp;gt;&amp;lt;all-attributes /&amp;gt;&amp;lt;filter type="and"&amp;gt;&amp;lt;condition attribute="modifiedon" operator="last-x-days" value="60" /&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/entity&amp;gt;&amp;lt;/fetch&amp;gt;&amp;lt;/ReportEntity&amp;gt;&amp;lt;/ReportFilter&amp;gt;&lt;/MSCRM&gt;</Value>
    </CustomProperty>
  </CustomProperties>

【问题讨论】:

  • 也许您的报告中包含特定于 Excel 的逻辑?使用仅输出 DateTime 值的全新报告进行测试,看看会发生什么。如果值是从过滤视图中选择的,则它应该在执行用户的时区中。
  • 是的,我尝试了一个非常简单的报告,只添加了一个 CreatedOn 字段。它在 UR8 上运行良好,但在 UR18 中却不行。我的报告不包含任何 Excel 特定逻辑。这是使用 OOB 报告向导构建的简单报告。
  • 您可以在这里发布简化的报告文件吗?
  • 我之前也看到过相同的行为,并且不怀疑这是一个错误,这些日期时间值是 UTC 存储的,因此可以这样导出。您是直接从 MSCRM 表中选择还是使用filtered 视图? (CLUE:你的答案就在于此)
  • 添加了我的报告 XML 代码。此报告不包含任何 SQL 查询。它是使用报表向导创建的简单明了的报表。

标签: dynamics-crm-2011 dynamics-crm export-to-excel


【解决方案1】:

CRM 显示从 UTC 转换为您个人选项中列出的任何时区的时间。 Excel 不知道您的时区是什么,因此它会采用数据库中列出的任何内容而不进行转换。

奇怪的是,当您通过高级查找和导出到 excel 执行相同操作时,它会保持时区对齐(它会在您列出的任何时区导出)。我认为错误在于从报告与视图导出到 excel 之间存在不一致(任何一种行为本身都可以被认为是正确的)。

仅供参考,Shane_Yo 是对的,此报告正在访问 sql 数据库中的 FilteredIncident 视图,如报告 xml 末尾的“自定义属性”值节点中所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2012-04-03
    • 2012-07-09
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多