• Dynamic CRM 2013学习笔记(十五)报表设计:报表入门、开发工具及注意事项


    本文是关于CRM 2013报表开发入门介绍,包括开发工具的使用,以及不同于普通Reporting service的相关注意事项。

    一、CRM报表简介

    报表有两种,SQL-based报表和Fetch-based报表,区别如下:

    区域 SQL-based 报表 Fetch-based 报表
    Data Provider

    <DataProvider> 元素的值设置为SQL. 示例如下:<DataProvider>SQL</DataProvider>

    报表RDL文件中的 <DataProvider> 元素的值设置为MSCRMFETCH. 示例如下:<DataProvider>MSCRMFETCH</D

    taProvider>

    Report query

    报表RDL文件中的<Query>元素下<CommandText>子元素获取数据用的查询语句是一个SQL查询语句。比如下面这个SQL语句就是查询所有客户的name列:<CommandText>SELECT name FROM FilteredAccount;</CommandText>

    报表RDL文件中的<Query>元素下<CommandText>子元素获取数据用的查询语句是一个SQL查询语句。比如下面这个查询语句就是查询所有客户的name列:<CommandText>&lt;fetch version="1.0" output-format="xml-platform" mapping="logical"&gt;

        &lt;entity name="account"&gt;

            &lt;attribute name="name" /&gt;

        &lt;/entity&gt;

    &lt;/fetch&gt;</CommandText>

    部署范围 仅能部署到on-premises Microsoft Dynamics CRM 能部署到Microsoft Dynamics CRM Online 和on-premises Microsoft Dynamics CRM

    创建SQL-based报表只能使用系统中的Filtered Views,自定义的实体也会自动创建和更新其对应的Filtered View,一般命名规则是Filtered 加上实体的架构名称,比如客户Account实体对应的Filtered view便是FilteredAccount。可以直接到名称为 <organization_name>_MSCRM 的数据库的View节点中去查看视图的定义,数据等等。Filtered Views会自动应用安全性,通过该视图查看数据只能看到你能看到的数据。对Filtered Views的说明如下:

    1. 所有的视图列名都是小写的。

    2. 对于数据类型是选项集的列,Filtered Views会有两列和这样的列对应,一个列是这个选项集的值,一个列是这个选项集的显示文本。比如潜在客户lead这个实体的属性LeadSource数据类型是选项集,Filtered Views会有leadsource列来对应选项集的值,leadsourcename列来对应选项集的显示文本。

    3. 对于数据类型是DateTime的列。Filtered Views会有两列和这样的列对应,一个列对应显示适合于你的时区的日期时间,另一个列对应的是UTC时间,一般会加上utc。比如记录创建时间字段createdon就记载的是适合你看的时间,我们默认是东八区,而createdonutc则是记载的是UTC时间,是东八区的时间减去8个小时。

    二、 开发工具

    1. 我们以前开发报表是用的Business Intelligence Development Studio,但SQL Server 2012里没有这个了,取而代之的是SQL Server Data Tools,实际上也是在vs里做开发:

    image

    2. 另外还可以用 Microsoft® SQL Server® 2012 报表生成器 来开发报表:

    image

    三、 注意事项

    下面就一个最简单的例子介绍下开发CRM报表时要注意的地方:

    1. 首先建立一个数据源:

    image

    2. 建立dataset:

    image

    3. 注意事项:

    SELECT TOP 1
              u.FullName ,
              mad.new_rate
    FROM      dbo.Filterednew_material_apply_order CRMAF_ma
              JOIN dbo.Filterednew_material_apply_details mad ON CRMAF_ma.new_material_apply_orderId = mad.new_material_apply_order
              LEFT JOIN dbo.FilteredSystemUser u ON CRMAF_ma.CreatedBy = u.SystemUserId
       
    • 这里的sql 语句用到的是filtered view,所以都是以Filtered开头的, 上段代码中标红色的地方
    • 其中主视图的别名是以CRMAF_开头,标蓝色的地方,这里表示只取当前数据行
    • 用上面的sql语句,你会发现没有数据出来,因为这时你没指定是哪个用户,为了测试,我们可以在这段sql之前,加上下面的语句以指定是哪个用户:
    DECLARE @binUserGuid VARBINARY(128)
    DECLARE @userGuid UNIQUEIDENTIFIER
    SELECT   @userGuid = ( SELECT TOP 1
                                     SystemUserId
                           FROM      SystemUser
                           WHERE     DomainName = 'CRM123456'
                         )
    SET @binUserGuid = CAST(@userGuid AS VARBINARY(128)) 
    SET context_info @binUserGuid 
    注意把上面的CRM123456换成你想要的用户名;另外测试完没问题后,记得把它去掉,再发布到CRM系统中。
     
    Dynamic CRM 2013学习笔记 系列汇总
     
     
  • 相关阅读:
    python---装饰器用法小结
    python---mysql事务
    python---sql语句集体更改数据
    python多继承中的深度优先与广度优先
    python---copy
    vue 主次页面区分
    css 过渡动画
    android web外壳
    cordova 打包 守护进程无法启动
    JavaScript 原生控制元素添加删除
  • 原文地址:https://www.cnblogs.com/fengwenit/p/4051402.html
Copyright © 2020-2023  润新知