了解最新技术文章
VSADT 是 Microsoft Dynamics 365 Business Central 的甘特图控件插件,与 ERP 系统完全集成。ISV 在其业务解决方案中使用 VSADT 以交互式图形规划板的形式可视化其数据。您只能使用 AL 代码开发个人甘特图。
让我们来看看新版本 6.2 为您提供了哪些出色的功能。
到目前为止,PDF 导出无法在页面顶部或底部添加其他信息。到目前为止,尚未提供页眉或页脚。
因此,我们扩展了调用 SaveAsPDF 方法时可以传递的选项。有两种方法可以创建页眉和页脚。
首先,您可以使用选项的属性TopText和BottomText。两者都允许添加还可以包含动态内容的简单文本,例如当前日期、当前页码或总页数。特定关键字 - { { #Date}、{ {PageNo} }、{ { #PageCount} } - 作为这些动态元素的占位符提供。
其次,为了能够处理更复杂的内容,尤其是能够向页面添加符号或图像(例如徽标),可以使用TopHTML和BottomHTML属性。这样,您可以通过创建自己的 HTML 代码来设计页眉和页脚。这里另一个占位符 - { { @symbolID} } - 可用于嵌入符号对象。当然,您也可以使用 URL 指向位于任何地方的其他图像资源。
下图显示了在顶部和底部具有 HTML 设计内容的页面示例:
如果使用TopHTML或BottomHTML,则分别忽略TopText或BottomText的设置。
PDF 规范提供了多种使文档更安全的方法。VSADT 现在支持调用SaveAsPDF方法时可以传递的以下选项:
作者
标题
主题
关键词
所有者
密码
用户密码
访问内容的权限
批注权限
组装文档的权限
复制许可
修改权限
打印许可
有关简要概述,请参阅https://pdfkit.org/docs/guide.pdf(“加密和访问权限”一章)。
尽管 VSADT 具有非常强大的机制,可以通过创建层次结构和分组来可视化结构化数据,但我们的客户仍然错过了一个功能:预定义组。
假设您有按订单状态“已发布”、“计划”和“已完成”分类的生产订单。您可以使用HierarchySupplementaryDefinition对象定义按状态分组的这些订单的表示。让我们进一步假设您当前的数据不包含任何状态为“已完成”的订单。不幸的是,在这种情况下,到目前为止还没有生成“完成”组。
这当然是一个缺点,因为您无法将订单从显示的组之一拖到“已完成”组。为此,您至少需要一个空的“已完成”组。这就是HierarchyLevelSupplementaryDefinition对象的新属性PredefinedGroups发挥作用的地方。以下两个图显示了一个小示例以及如何应用此属性的相应 JSON 片段:
在资源视图中,VSADT 通过突出显示合适的目标来支持用户进行拖放交互。也就是说,对于每个分配,可以定义哪个资源行是允许的或合适的。拖动分配时,这些行会突出显示,而半透明的窗帘会覆盖其他行。通过这种方式,用户可以在拖动分配时看到他可能已经将分配放在哪里。请注意,这只是对用户的视觉帮助。他仍然可以在“禁止”区域中删除分配,如果需要,由应用程序来阻止它。
这个“合适的对象”的概念现在已经扩展到包括与实体的交互以及作为分配目标的活动。
对于实体对象,已添加了合适的活动 ID和合适的资源 ID 属性。下图以资源视图为例说明了这些属性在拖动实体时的效果:
为了在启用分配行时也为活动视图中的分配完全支持此概念,分配现在除了现有的合适资源 ID 属性外,还具有合适的活动 ID属性。在这种情况下,可以通过新设置PM_Suitable/Unsuitable ActivityOverlayColor自定义覆盖合适行和不合适行的颜色。
虽然迄今为止日期线的标注已经非常灵活,但在标题的呈现上总是存在冲突,尤其是当多个日期线彼此靠近显示时。然后字幕经常重叠。
这种视觉冲突现在可以通过设置PM_DateLineCaptionOptimizedPositioningEnabled启用的优化过程来解决。
文本是垂直还是水平方向都没有关系:
甚至会处理混合方向:
对于曲线区域,我们有两个有趣的增强。
您现在可以设置曲线对象的最小值(请参阅曲线属性ScaleMinimumValue)和最大值(请参阅曲线属性ScaleMaximumValue)以数字比例显示。当您想强制刻度使用最大值或最小值的特定值而不是计算值以提高可读性时,这很有用。例如,让我们看一下 VSADT 在没有任何干预的情况下计算刻度线的情况,如下所示:
如果我们现在将曲线的ScaleMaximumValue属性设置为 3,那么它看起来像这样:
如果我们另外将ScaleMinimumValue设置为 -3,我们得到:
曲线的另一个增强是新选项pm_linesShownInLoadCurvePanes。这使用户更容易“阅读”曲线。数值刻度中每个刻度线水平的浅色水平辅助线有助于他更好地估计曲线的 y 值,即使它们远离刻度。
以前,可以使用设置PM_CalendarGridColor仅更改整个日历网格的颜色。
现在,对于每个活动和每个资源对象,您都可以定义自己的网格颜色(请参阅属性PM_CalendarGridColor)。下图将常规外观的示例与对某些资源使用网格颜色的示例进行了比较:
以前,可以通过将ParentID属性更改为引用不存在的行对象的值来使资源或活动不可见。但这只是一种 hack,当与更大的行对象子树一起使用时会导致性能问题。
现在我们已经实现了新的布尔属性AddIn_Visible,它现在可以以官方方式使行对象(Activity、Resource、Allocation)不可见,即将行对象从视图中过滤掉。在内部,我们可以用更少的努力来处理这个属性,从而获得性能。当您使用设置UpdateMode来额外使用差异对象时,您可以使用从服务器上的页面发送到客户端上的 VSADT 的最小数据量来更新属性AddIn_Visible 。