1用友网络科技股份有限公司单据模板专题手册单据模板查询和分配主编人:罗嘉参与编辑人员:高端服务支持中心南昌团队单据模板分配和查询1.单据模板分配的优先级模板设置可以根据不同的显示要求来配置单据模板,系统预置的模板不能修改、删除和分配,我们可以新建模板,通过分配给职责、角色或用户来应用自定义单据模板。当一个用户分配了多个单据模板,系统只加载其中一个单据模板,如何区分系统加载的是那个模板?系统加载单据模板的优先顺序是什么?当一个用户拥有多个单据模板时,系统加载单据模板的优先顺序是:首先加载用户在个性化中心中设置的模板,如果没有就加载用户分配的模板,如果没有就加载用户关联角色分配的模板,如果没有就加载用户关联角色拥有职责分配的模板,如果没有则加载集团模板,如果没有则加载系统模板。即个性化中心>用户>角色>职责>集团默认模板>系统默认模板。以收款单录入单据模板依次加载为例进行验证,依次顺序是系统默认模板->集团默认模板->职责->角色->用户->个性化中心。解决方案:一、收款单录入节点没有分配模板时,系统使用的是系统模板如下:二、模板设置-集团中复制系统模板,保存模板名称为“收款单默认模板”并点击“设置默认模板”。点击“修改”进入模板编辑,将表头字段“单据日期”显示颜色设置为红色,“保存”。2应收单录入节点进入,验证集团默认模板已经加载生效。三、模板设置-集团中复制默认模板,保存模板名称为“收款单默认职责”。点击“修改”进入模板编辑,将表头字段“往来对象”显示颜色设置为红色,保存。3按职责分配模板在模板已分配用户报表中查看用户86601,按职责分配模板已经生效。用户86601进入应收单录入节点,验证按职责分配的模板已经分配加载生效。4四、模板设置-集团中复制模板“收款单默认职责”,保存模板名称为“收款单默认角色”。点击“修改”。进入模板编辑,将表头字段“客户”显示颜色设置为红色.按角色分配模板5在模板已分配用户报表中查看用户86601,按角色分配模板已经生效。用户86601进入应收单录入节点,验证按角色分配的模板已经分配生效。六、模板设置-集团中复制模板名称为“收款单默认角色”,点击“修改”进入模板编辑,将表头字段“部门”显示颜色设置为红色,保存模板名称为“收款单默认用6户”。按用户分配模板在模板已分配用户报表中查看用户86601,按用户分配模板已经生效。用户86601进入应收单录入节点,验证按用户分配的模板已经分配生效。7七、模板设置-集团中复制模板名称为“收款单默认用户”,点击“修改”进入模板编辑,将表头字段“业务员”显示颜色设置为红色,保存模板名称为“收款单默认个性化中心”,按职责分配给用户86601。个性化中心指定的默认模板在模板已分配用户报表中查看用户86601,个性化中心指定模板已经生效。8用户86601进入应收单录入节点,验证个性化中心指定的默认模板已经分配生效。八、综上,用户86601拥有如上多个单据模板,分别是个性化中心指定的默认模板、按用户、角色、职责、集团默认模板和系统默认模板,个性化中心的级别最高,第二优先级是按用户分配,第三优先级是按角色分配,第四优先级是按职责,最后是集团默认模板,如果没有分配以上的模板,用户使用系统默认模板。系统加载模板的优先顺序是:个性化中心>用户>角色>职责>集团默认模板>系统默认模板。功能节点【用户已分配模板报表】中查看用户86601拥有的单据模板,只显示用户、角色和职责分配的,不显示在个性化中心指定的默认模板、集团默认模板和系统预置的模板。9当用户分配有多个角色并分配多个模板时,可以按如下定位用户使用的模板:先个性化中心查看,如果没有勾选模板,再去【用户已分配模板报表】中按用户查询,按分配类型查看按用户分配的模板(因为按用户分配优先级第二,仅次于个性化中心),再找按角色和按职责,其次是模板设置-集团中找默认模板,如果均没有,是走预置的模板。2.单据模板查询分配方案当管理员已经不清楚单据模版的具体分配情况时,如何查询单据模板分配给了哪些用户?又或者用户的单据模板是从哪些分配过来的?解决方案:3.1查询单据模板的分配情况-前台查询如下图,如何查询【测试模板3-标题】模板分配给了哪些用户?10在客户化配置下,有个【模板已分配用户报表】节点,模板所属组织和模板类型按照实际选择过滤条件,选择到需要查询的模板进行查询就可以了。注意如果是普通用户查询,只能查询到该模板分配给了下级公司的哪个用户。11如果是集团管理员用户查询,可以查询到该模板在集团和下级公司里分配给了哪些角色和用户。虽然查询不到分配给了哪些职责,但职责一般都是集团的,直接在集团下看看就可以了。查询到分配的角色或者用户后,再根据角色和用户的所属组织查询到是在哪家业务单元做的分配。3.2查询单据模板的分配情况-通过后台查询使用这种模式查询的情景是前台无法查询到分配记录,但是删除模板仍然报错。3.2.1首先根据模板标题查询模板主键12selectpk_billtempletfrompub_billtempletwherebill_templetcaption='测试模板3-标题';取得单据模板的主键pk_billtemplet是:1002A3100000000064P13.2.2根据取得的模板主键,搜索出模板分配的相关信息selectOPERATOR,OPERATOR_TYPE,PK_CORP,PK_ORGfrompub_systemplatewheretemplateid='单据/打印/查询模板主键';选择这几个字段取出:OPERATOR:操作者主键OPERATOR_TYPE:操作者类型PK_CORP:集团主键PK_ORG:组织主键(PK_ORG)3.2.3根据查出的信息查询模板的分配情况。根据集团主键查询,分配到了哪个集团:selectNAMEfromorg_groupwherePK_GROUP='集团主键'13根据组织主键查询,分配到了哪个组织:selectNAMEfromorg_orgswherePK_ORG='组织主键'根据操作者类型主键,判断模板是按照用户/角色/职责分配的:当OPERATOR_TYPE=1时,表示分配给了用户;当OPERATOR_TYPE=2时,表示分配给了角色;当OPERATOR_TYPE=11时,表示分配给了职责;根据操作者主键,查询出用户编码和名称:用户:selectUSER_CODE,USER_NAMEfromsm_userwhereCUSERID='操作者主键';角色:selectROLE_CODE,ROLE_NAMEfromsm_rolewherePK_ROLE='操作者主键';职责:selectcode,namefromsm_responsibilitywherepk_responsibility='操作者主键';143.2.4取消所有分配后的后续处理。如果取消所有分配后,仍然不能删除模板,后台查询还有项目根据查出结果删除该记录(注意备份数据)deletefrompub_systemplatewherepk_systemplate='上图查出数据的相关PK';commit;删除后再查询就没有数据了。3.3查询用户分配模板情况要查询用户被分配了哪些模板,可以通过客户化配置下的用户已分配模板报表查询。15然后通过模板已分配用户表查询就能查询到模板所属组织和功能节点。之后就可以进行取消分配模板等操作了。16如果被查询的用户是集团用户的时候,需要用集团管理员登录查询。普通用户无集团权限。注意事项1.表名不一定和代码完全一致,要根据数据库实际情况进行调整。演示环境数据库的表前都加了nc.,所以实际执行命令的时候,也需要输入正确的表名。2.该案例不仅仅适用于单据模板,也同样适用于打印模板,查询模板。在前台查询时,可以选择其他模板类型。在后台查询的时候,查询模板主键的方式如下:selectpk_billtempletfrompub_billtempletwherebill_templetcaption='测试模板标题';selectCTEMPLATEIDfrompub_print_templatewhereVTEMPLATECODE='打印模板编码';select*fromnc.pub_query_templetwheremodel_code='查询模板编码';之后查询模板的分配情况同3.2.2后其他步骤。3.单据模版快速查询语句,整合案例语句,直接得到最后的结果。--用户【查询xx单据模板分配给哪些用户】SELECTUSER_NAMEFROMSM_USERWHERECUSERIDIN(SELECTOPERATORFROMPUB_SYSTEMPLATEWHERETEMPLATEID=(SELECTPK_BILLTEMPLETFROMPUB_BILLTEMPLETWHEREBILL_TEMPLETNAME='模板名称')ANDOPERATOR_TYPE='1');--职责【查询xx单据模板分配给哪些职责】SELECTNAMEFROMSM_RESPONSIBILITYWHEREPK_RESPONSIBILITYIN(SELECTOPERATOR17FROMPUB_SYSTEMPLATEWHERETEMPLATEID=(SELECTPK_BILLTEMPLETFROMPUB_BILLTEMPLETWHEREBILL_TEMPLETNAME='模板名称')ANDOPERATOR_TYPE='11');--角色【查询xx单据模板分配给哪些角色】SELECTROLE_NAMEFROMSM_ROLEWHEREPK_ROLEIN(SELECTOPERATORFROMPUB_SYSTEMPLATEWHERETEMPLATEID=(SELECTPK_BILLTEMPLETFROMPUB_BILLTEMPLETWHEREBILL_TEMPLETNAME='模板名称')ANDOPERATOR_TYPE='2');4.后台删除有的时候前台无法查询到进行了分配,但是后台查询有分配数据,那么在备份数据后,在后台直接删除数据解决模板被引用的问题。无论单据/打印/查询模板,删除方式都是通过下列语句进行删除。deletefrompub_systemplatewherepk_systemplate='systemplate的pk';commit;18