在AX2012使用F1快捷键获取上下文帮助时需要有安装Help server,Help server是一个web服务,部署在IIS站点上,web服务URL记录在System administration>Setup>System>Help system parameters>Help service URL。需要注意的是Help server不能和Sharepoint 2010运行在同一个站点上,所以你可能需要创建一个单独端口的IIS站点宿主Help server站点。在Client程序中F1时Client查找到帮助服务web service url后调用Help view程序中查看,Help view随Client程序一起安装。帮助Web服务默认安装在C:\inetpub\wwwroot\DynamicsAX6HelpServer,帮助内容相关的文件在C:\inetpub\wwwroot\DynamicsAX6HelpServer\Content可以找到,在Help view中左边的树形列表来自于content目录下TableOfContents.xml文件中定义的主题页面链接,右边内容则是来自于content目录下众多HTML文件。

编写帮助文件

我们可以创建新的帮助文件,也可以修改已有的html帮助文件。html帮助文件必须遵循一些固定的格式,一个典型的文件类似这样:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"[]>
<html dir="LTR" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dynHelp="http://schemas.microsoft.com/dynamicsHelp/2008/11" xmlns:dynHelpAx="http://schemas.microsoft.com/dynamicsHelpAx/2008/11" xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:mshelp="http://msdn.microsoft.com/mshelp" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:msxsl="urn:schemas-microsoft-com:xslt"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta NAME="save" content="history" /><title>temp testing </title><link rel="stylesheet" type="text/css" href="../local/presentation.css" /><link rel="stylesheet" type="text/css" href="../local/AX.css" /><script type="text/javascript" src="../local/EventUtilities.js"> </script><script type="text/javascript" src="../local/Dropdown.js"> </script><script type="text/javascript" src="../local/script_manifold.js"> </script><script type="text/javascript" src="../local/script_feedBack.js"> </script><script type="text/javascript" src="../local/CheckboxMenu.js"> </script><script type="text/javascript" src="../local/CommonUtilities.js"> </script><meta name="Title" content="temp testing" /><meta name="Microsoft.Help.Id" content="D88E71BE-19A0-41F8-91C1-75F7675097AB" /><meta name="ms.locale" content="EN-US" /><meta name="publisher" content="Contoso" /><meta name="documentSets" content="UserDocumentation" /><meta name="Microsoft.Help.Keywords" content="" /><meta name="suppressedPublishers" content="" /><meta name="Microsoft.Help.F1" content="Forms.CustTable" /><meta name="description" content="Insert introduction here. " /></head><body><input type="hidden" id="userDataCache" class="userDataStyle" /><input type="hidden" id="hiddenScrollOffset" /><img id="collapseImage" style="display:none; height:0; width:0;" src="../local/collapse_all.gif" alt="" title="" /><img id="expandImage" style="display:none; height:0; width:0;" src="../local/expand_all.gif" alt="" title="" /><img id="collapseAllImage" style="display:none; height:0; width:0;" src="../local/collapse_all.gif" /><img id="expandAllImage" style="display:none; height:0; width:0;" src="../local/expand_all.gif" /><img id="dropDownImage" style="display:none; height:0; width:0;" src="../local/dropdown.gif" /><img id="dropDownHoverImage" style="display:none; height:0; width:0;" src="../local/dropdownHover.gif" /><img id="copyImage" style="display:none; height:0; width:0;" src="../local/copycode.gif" alt="" title="" /><img id="copyHoverImage" style="display:none; height:0; width:0;" src="../local/copycodeHighlight.gif" alt="" title="" /><div id="header"><table id="topTable"><tr><td><span onclick="ExpandCollapseAll(toggleAllImage)" style="cursor:default;" onkeypress="ExpandCollapseAll_CheckKey(toggleAllImage, event)" tabindex="0"><img ID="toggleAllImage" class="toggleAll" src="../local/collapse_all.gif" /> <label id="collapseAllLabel" for="toggleAllImage" style="display: none;">Hide all</label><label id="expandAllLabel" for="toggleAllImage" style="display: none;">Show all</label> </span></td></tr></table><table id="bottomTable"><tr id="headerTableRow1"><td align="left"><span id="runningHeaderText" /></td></tr><tr id="headerTableRow2"><td align="left"><span id="nsrTitle">temp testing </span></td></tr></table><hr class="title-divider" /></div><div id="mainSection"><div id="mainBody"><div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()" /><div class="introduction"><p>Insert introduction here.</p></div><h1 class="heading"><span onclick="ExpandCollapse(sectionToggle0)" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey(sectionToggle0, event)" tabindex="0"><img id="sectionToggle0" class="toggle" name="toggleSwitch" src="../local/collapse_all.gif" />Section Heading</span></h1><div id="sectionSection0" class="section" name="collapseableSection" style=""><p>Insert section body here.</p><h3 class="subHeading">Subsection Heading</h3><div class="subsection"><p>Insert subsection body here.</p></div></div></div><div id="footer"><div class="footerLine"><img width="100%" height="3px" src="../local/footer.gif" alt="" title="" /></div><p />    <p class="build-date">Build date: 2011-06-08 [13:05]</p></div></div></body>
</html>

第一行和第二行原封不动的拷贝就行了,需要注意的是“<html”开始的第二行,必须完整的添加xmlns引入的多个命名空间,在测试中发现这些内容必须在一行上,中间不能有换行,否则帮助服务无法解析此文件。和帮助主题等相关的内容都在meta标记中:

  • Microsoft.Help.Id:标记帮助的主题,在主题Content table中通过这个ID找到相应的文件,可以是guid字符串,或者自定义的更有含义的字符串,只是两个文件的help Id不能相同,否则只有第一个文件才会有效。
  • ms.locale:帮助内容的语言。
  • publisher:帮助的发布者,AX自带的内容都是Microsoft,如果是自定义的帮助文件可以使用自己公司的名称。在Help view查找Options中我们可以指定搜索来自于特定Publsiher的帮助内容。
  • documentSets:帮助的文档集合,标识帮助文件的性质类别,比如说是用户文档、开发文档、词汇表等,所有的文档集合定义在AOT/Help document set下。Document set的ContentLocation属性指定帮助内容是来自于Help server还是微软MSDN等在线站点,比如DeveloperDocumentation是来自于在线站点。
  • Microsoft.Help.Keywords:搜索关键字
  • suppressedPublishers:如果你是修改AX自带的帮助文件,最好设置该项为Microsoft
  • Microsoft.Help.F1:F1请求帮助时所用的主题词,AX的Base Enums、Classes、Configuration keys、Data types、Forms、List Pages、Maps、Menu items、Parts、Reports、Tables、Views支持F1帮助,F1 ID不是随便取的,AOT中右键点击对象Add-ins>Help property可以看到对象的F1帮助ID,比如客户详细信息Form的F1 Id为Forms.CustTable。可以有多个帮助文件使用相同的F1 Id,在Help view中它们都会被列出。如果帮助文件不对应AOT的某个对象,可以设置为和Help Id相同。Content table中条目使用F1 Id索引帮助文件。
  • Title:帮助的标题,也可以作为关键字来搜索。
  • description:说明描述

AX自带帮助中提供了一些css,使用它们来格式化帮助内容以统一风格,此外还有一些js脚本,用来折叠内容章节等等,参照已有的帮助文件使用就可以了。css和js文件在C:\inetpub\wwwroot\DynamicsAX6HelpServer\Content\Microsoft\EN-US\Local可以找到。

对html不熟悉的人员可以使用Office word来编写帮助文件,在Help view中搜索“Templates for Help Documentation”,在结果帮助页中找到Dynamics Help Content Template.docm,这是word的模板文件,需要使用office 2007及以后的版本打开,打开时需要启用宏,宏会在Ribbon工具栏上添加一个名为“Microsoft Dynamics Help”的标签页:

在这里可以设置帮助文档标题、Top Id、Publisher等属性。选中“Automatically Save Properties”和“Save As Single File Webpage”,在保存帮助文件时会自动创建一个.htm和.mht的文件,.htm包含meta设定的帮助属性,也由它打开具体的帮助内容文件.mht。

与此类似,其他类型比如word的帮助文件我们也需要一个htm文件来间接引用,比如:

<html><head><meta name="Title" content="Sample content element" /><meta name="Microsoft.Help.Id" content="8D937F19-3A00-4F37-A316-0A48D052D627" /><meta name="ms.locale" content="EN-US" /><meta name="publisher" content="Microsoft" /><meta name="documentSets" content="UserDocumentation" /><meta name="Microsoft.Help.Keywords" content="" /><meta name="suppressedPublishers" content="" /><meta name="Microsoft.Help.F1" content="SampleContentElement" /><meta name="description" content="An example of a non-HTML content element that was published to the Help system." /><script type="text/javascript"><!-- window.location=" SampleContentElement.docx" //--></script></head>
</html>

在帮助文件中我们可以使用AX的标签,如果找到相应的AX标签会替换掉标记中的缺省内容:

<dynHelpAx:label axtype="Label" id="@SYS21829">Bank Account</ dynHelpAx:label>

也可以使用AX表字段的标签:

<dynHelpAx:label axtype="Field" axtable="DirPartyTable" axfield="Name">Name</dynHelpAx:label>

还可以使用AX Menu item标签:

<a href="MenuItemDisplay://CustTableListPage"><dynHelpAx:label axtype="MenuItem" axmenutype="Display" axmenuitem="CustTableListPage">All customers</dynHelpAx:label></a>

上面的例子中同时创建了一个链接,在Help view中点击时会在Client中打开相应的菜单对象。

发布帮助文件

帮助文件需要发布到Help server上才能使用,首先需要更改help server的web.config添加publisher Id,否则Help server不会索引:

    <publishers><add publisherId="Microsoft" name="Microsoft" /><add publisherId="Contoso" name="Contoso" /></publishers>

这里Contoso是新添加的Publsiher,然后根据Publisher创建在Content下创建目录,然后根据语言创建相应的子目录:

C:\inetpub\wwwroot\DynamicsAX6HelpServer\Content\Contoso
C:\inetpub\wwwroot\DynamicsAX6HelpServer\Content\Contoso\EN-US

帮助文件可以直接放置到C:\inetpub\wwwroot\DynamicsAX6HelpServer\Content\Contoso\EN-US,也可以再创建子目录方便管理。把C:\inetpub\wwwroot\DynamicsAX6HelpServer\Content\Microsoft\EN-US\Local也拷贝到这个目录下以使用css和脚本。

Help server使用Windows search服务来索引帮助文件,确保该服务已经正常启动。帮助文件放置到Help server上后不需要太长时间就能在Help view中搜索到。

主题列表

要使帮助文件在Help view的主题列表中显示出来,需要创建主题列表文件TableOfContents.xml,典型的TableOfContents.xml类似:

<?xml version="1.0" encoding="utf-8"?>
<tableOfContents xmlns="http://schemas.microsoft.com/dynamicsHelp/2008/11" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><publisher>Contoso</publisher><documentSet>UserDocumentation</documentSet><ms.locale>EN-US</ms.locale><entries><entry><text>Contoso help topic</text><Microsoft.Help.F1>D7D800B6-93B3-4088-B214-722E503DE218</Microsoft.Help.F1><children><entry><text>test</text><Microsoft.Help.F1>D88E71BE-19A0-41F8-91C1-75F7675097AB</Microsoft.Help.F1></entry></children></entry></entries>
</tableOfContents>

entry标记引入一个帮助文件,使用F1 Id引用到帮助文件,Children标记引入子节点。F1 Id也可以使用AOT对象的F1 Id比如“Forms.CustTable”,如果多个帮助文件有相同的F1 Id,它们也都会被列出。TableOfContents.xml也需要发布到Help server,可以直接放到C:\inetpub\wwwroot\DynamicsAX6HelpServer\Content\Contoso\EN-US下,也可以创建一个子目录比如TOCResources来专门管理。发布TOCResources再打开Help view就能在左侧主题列表中看到相应的帮助文件。

总的来说AX2012的帮助服务还是很有用的,方便了帮助内容的管理,最大的好处是和Client的集成,在更新了AX程序功能后我们可以同时发布自定义的帮助内容,操作用户可以很方便的获取到帮助。

[AX]AX2012 帮助服务相关推荐

  1. [AX]AX2012 AIF(二):文档服务编程模型

    一个完整的文档服务包含很多对象,以Customer服务为例,它包含以下对象: 查询AxdCustomer:这个query的顶层表为CustTable,其下Datasource包含表DirParty,D ...

  2. [AX]AX2012 C#使用IIS宿主AIF服务的一些问题

    AIF的服务可以是宿主在AOS,使用NetTcp适配器:也可以是宿主在IIS,使用HTTP适配器,两种方式都可以在C#工程中添加Service reference来调用这些服务.配置及使用NetTcp ...

  3. [AX]AX2012 SSRS报表使用Report Data Method

    在AX2012的SSRS报表中可以使用c#或者Visual basic .net编写report data method来获取和操作数据,由report data method返回的数据可以用在报表的 ...

  4. [AX]AX2012 R2 出差申请和支出报告

    AX2012中有个模块叫做出差和支出,用于管理出差以及相关的费用,用户只能在员工自助服务EP站点上提交出差申请.费用报销报告,在Client程序中做审核以及后续的支付动作等,最后形成相关的财务分录. ...

  5. [AX]AX2012 使用.NET程序集部署

    在.NET Interop from X++一文中有提到X++可以引用的.NET程序集,这里就这个问题更加深入的探讨. 前文中说到X++所引用的.NET程序集需要手工拷贝到Client\bin目录下, ...

  6. [AX]AX2012 纪录缓存

    为了加快对AX表纪录的访问,可以把从数据库读取的纪录缓存在内存中,以减少对数据库的频繁读取提高性能.纪录缓存有两种,一是单条纪录缓存,二是集合缓存. 集合缓存可以在设计时将表的的CacheLookup ...

  7. [AX]AX2012开发新特性-全文索引

    全文索引在索引中识别字符串字段中使用空格隔开的单词,不像普通索引仅仅使用字符串的第一个单词,这样能加快对字符串字段的搜索.AX2012支持每个表有一个且只能有一个全文索引,索引可以包含多个字段,对字段 ...

  8. 基于微信小程序的智能停车场管理系统的研究与设计

    前言 2017年一组数据显示, 我国停车位缺口率已经达到50%, 停车场的平均空置率也高达51. 3%. 区域拥堵. 乱停车.找车难. 收费难. 停车管理成本搞. 停车场管理效率底下.市政停车规划采集 ...

  9. 【计算机原理与接口技术(UNIX)⑱】——并行 I/O 接口 [ 芯片8255A ]

    ✅ 通过对 [计算机与UNIX汇编原理 ① ~ ⑫]的学习,我们已经大致掌握了汇编程序设计的相关知识 接下来,我将其分栏名改为 [计算机原理与接口技术(UNIX) ],重点将放在 "计算机原 ...

  10. redis和mysql的异步更新

    redis和mysql如何同步: 一定要确定好master --------  (上次实验server3是master) 从真机中把lib_mysqludf_json-master.zip传给serv ...

最新文章

  1. 【CVPR2022】语言引导与基于视觉的深度度量学习的集成
  2. 言论丨李开复:中国在AI领域的优势与机会,现阶段AI领域的挑战
  3. 12c oracle 修改内存_Oracle12c中性能优化功能增强新特性之重大突破——内存列存储新特性...
  4. C++ Primer 5th笔记(chap 19 特殊工具与技术)将成员函数用作可调用对象
  5. SAP中会计凭证和物料凭证的对应关系
  6. error C1189: #error : WINDOWS.H already included. MFC apps must not #include windows.h
  7. boost::hana::slice_c用法的测试程序
  8. 路由器选华硕还是tp_路由器的坑太多,就算写着“千兆”你也要当心丨618选购指南...
  9. Jupyter与PyCharm不可兼得?Jupytext就是你需要的!
  10. java.awt.headless 模式(Linux, java.awt.headless and the DISPLAY environment variable)
  11. [线程池] ------ 形象的描述线程池,用一个特好记的例子来记忆
  12. 面试官 | Java 对象不使用时为什么要赋值为 null?
  13. 能ping通工作组计算机 无法访问,可以ping通不能访问共享,其他电脑可以访问
  14. 2017年单多晶市场竞争核心分析
  15. esp启动是什么感觉_第九章 ESP32上电后的启动过程
  16. Python必知必会:Classethod与Staticmethod方法
  17. 初识FL Studio中的FLEX插件
  18. xiao776php,《xiao 776》_xiao 776_NEWS下载网
  19. Android LocalServices解耦妙用: system_server进程中各个服务之间的连通器LocalServices
  20. 在.NET中进行AutoCAD二次开发(C#+ObjectArx) (二)

热门文章

  1. IT人士易犯4大职业病 鼠标手居第一位
  2. 移植oprofile到海思
  3. 移植oprofile到dm365
  4. 复合类型_22.scala的复合类型
  5. SimpleFs文件系统初步二(测试用的块设备构建)
  6. oracle 数据迁移跑批,Oracle数据库纯数据的导出与导入
  7. 【数据结构】严蔚敏版--学习复习笔记
  8. android tab 选中变色,Android 底部导航栏的Tab选中不变色?
  9. php oauth单点登陆,php单点登录
  10. spring中的@Bean是否一定要与@Configuration一起用