生成画布应用
Power Apps 是一个高生产力的商业应用程序平台。 在 Power Apps Studio 中,您可以使用空白画布的功能创建量身定制的像素级完美的界面。 要与您的用户共享,请在浏览器中呈现应用程序,或者将其嵌入各种容器中,如 Teams 和 SharePoint 站点。
SAP 采购模板解决方案的核心最终用户体验是使用画布应用构建的,可以轻松扩展以支持您的本地业务要求。 要开始,请遵循本文中的模式和最佳实践。
遵从最佳做法和标准
所有应用都是使用已发布的最佳做法和标准开发的。 我们建议您在扩展或创建新应用时采用相同或相似的最佳做法和标准。
标准 | 注释 | 详细信息 |
---|---|---|
功能状态 | 默认打开或关闭的功能。 包括预览功能(试验功能除外)的子集。 | 了解画布应用中的实验性、预览版和停用功能 |
响应能力 | 响应单个设备类型,如平板电脑或移动设备。 允许应用与各个标准屏幕和容器大小保持一致,包括将应用嵌入 Microsoft Teams。 广泛地使用自动布局响应式容器控件。 | 构建响应式画布应用 |
命名和编码标准 | 将遵从控件、变量、集合和 Dataverse 命名标准,以便于发现和维护。 | Power Apps Canvas App 编码标准和准则 |
辅助功能 | 支持辅助功能的属性。 例如,Accessible Labels、Roles、Live、Focus Border Thickness、Color Contrast 和 Tab Orders。 这些属性可避免不支持辅助功能要求的已知设计模式。 | 创建可访问的画布应用 和 画布应用中的辅助功能限制 |
绩效 | 将遵从最佳做法以避免已知的性能限制。 | 提高画布应用性能的提示和最佳实践 |
全局应用颜色主题
所有应用都遵从自定义主题,且可以根据组织的首选颜色方案进行更改。 将在所有应用的 App.OnStart 属性中设置全局变量。 此变量由应用中所有控件的大多数与颜色相关的属性使用。 在运行 App.OnStart 事件后,在一个地方更改颜色全局主题变量将在整个应用中立即生效。
重要提示
虽然可以更改各个调色板属性,但我们建议仅更改全局主题变量中的主要颜色属性。
Set(
varThemeColors,
{
background: ColorValue("#FAF9F8"),
backgroundFill: ColorValue("#FFFFFF"),
backgroundFillDisabled: ColorValue("#F3F2F1"),
text: ColorValue("#201F1E"),
altText: ColorValue("#FFFFFF"),
disabledText: ColorValue("#A19F9D"),
primary: ColorValue("#0078D4"),
secondary: ColorValue("#EFF6FC"),
tertiary: ColorValue("#005A9E"),
primaryGray: ColorValue("#8A8886"),
secondaryGray: ColorValue ("#C8C6C4"),
tertiaryGray: ColorValue("#605E5C"),
requiredRed: ColorValue("#A80000"),
lookupBlue: ColorValue("#0078D4")
}
)
添加公司徽标
通过先将公司徽标图像文件上载到应用,然后将其添加到 ScreenHeader 组件,将公司徽标添加到应用。
更多信息:在画布应用中使用多媒体文件
本地化和全球性应用支持
所有画布应用默认都提供英语支持。 但是,所有应用都设计为本地化就绪,可以进行管理以支持更多语言。 控件宽度属性可能需要直接更改,具体取决于选择部署的语言。
字符串本地化模式
- 在应用启动期间,在第一个屏幕的 OnVisible 属性上,应用会读取用户的浏览器语言设置,确定相应的 ISO 语言代码选择值。
Set(
varISOUserLanguageCode,
Switch(
Left(
Language(),
2
),
"ar",
'ISO Language Code'.ar,
"de",
'ISO Language Code'.de,
"en",
'ISO Language Code'.en,
"es",
'ISO Language Code'.es,
"fr",
'ISO Language Code'.fr,
"he",
'ISO Language Code'.he,
"it",
'ISO Language Code'.it,
"ja",
'ISO Language Code'.ja,
"pt",
'ISO Language Code'.pt,
"zh",
'ISO Language Code'.zh,
'ISO Language Code'.en
)
)
备注
Label 和 input 控件属性将尝试预测本地化文本值的宽度,但考虑到该计算的复杂性,可能并不总会成功。 因此,我们建议您在创建本地化字符串和进行更改后,始终测试应用并对其进行小修改。
小费
可以通过向 SAP 基础解决方案中包含的 ISO 语言代码选择组件添加更多值,来添加和支持其他语言。
应用将向 SAP 本地化 Dataverse 实体查询已根据用户登录语言进行本地化的字符串,并将其本地缓存在集合中。
ClearCollect(
colUserLocalizedStrings,
Filter(
'SAP Localizations',
Language = varISOUserLanguageCode,
'SAP Localizations (Views)'.'Active SAP Localizations'
)
)
各个控件中的所有文本相关属性(如 Text、HintText、Accessible Label、InputTextPlaceholder、NoSelectionText 和 ToolTips)都具有首先查找等效本地化字符串的公式。 如果未找到等效项,将默认为英语,这在 With 块内的 Text 属性中设置。
With(
{Text: "Vendor name"},
If(
IsBlank(
LookUp(
colUserLocalizedStrings,
'English Value' = Text
).'Localized Value'
),
Text,
LookUp(
colUserLocalizedStrings,
'English Value' = Text
).'Localized Value'
)
)
对于从 SAP 值列表表中筛选值的 combo box 控件,用户从浏览器设置中映射的 ISO 语言代码始终应用于筛选条件,如果没有针对其语言管理值列表,将默认为英语。
Sort(
Filter(
'SAP List of Values',
Status = 'Status (SAP List of Values)'.Active,
Domain = 'Domain (SAP List of Values)'.Country,
Language = varISOUserLanguageCode
),
'Display Value'
)
浏览器区域设置
默认情况下,画布应用中的所有数字、日期和时间字段都遵循用户的浏览器区域设置。 例如,对使用美国区域设置的用户显示为 3/23/2023 的日期对使用德国区域设置的用户将显示为 23.03.2023。
详细信息:为画布应用构建全球支持
组件
组件是简化应用开发和维护过程并帮助提高性能的好方法。
对于内部或跨应用需要通用用户体验的区域,会配置组件。 考虑到组件库支持访问应用范围和嵌入式云端流等功能的限制,本地组件可以在所有应用中使用,然后可以导入到其他应用。
例如,VendorSearch 组件在所有支持采购到付款流程的应用中使用,它主要在 SAP 供应商管理应用中构建,然后导入以在其他采购到付款应用中使用。
警告
与组件库相比,使用本地应用组件的负面后果是,如果确定了更改,则需要在已导入该组件的所有应用中进行这些更改。
跨应用中使用的常见组件:
组件 | 说明 |
---|---|
ScreenHeader | 每个屏幕上的常见标头 |
LeftNavigation | 允许快速访问菜单项 Dataverse 源驱动的其他应用的主导航 |
CommandBar | 创建、更改、保存、取消、搜索、最近搜索或高级搜索对象的常用控件列表 |
ScreenTabs | 在选项卡中排列在一起以便于导航的逻辑组件组 |
NoItemsDisplay | 当没有记录时,项目显示在网格中 |
ObjectNameSearch | 常见的 SAP 对象搜索组件包含在使用组件的相应应用中,如果需要,可以导入其他应用。 示例有 VendorSearch、GLAccountSearch、MaterialSearch 和 RequisitionSearch |
详细信息:画布组件概述
其他 SAP 字段
每一个 SAP 实施都是不同的,您完全可以添加自己的字段来支持您的业务流程。 因此,提供了充足的屏幕空间和设计考量,让您能够轻松添加所需的字段。
常用控件容器
大多数控件包含在由 label 和 input 控件组成的容器中。 例如,在 SAP 供应商管理应用中捕获供应商名称的字段由 Label 和 Text Input 控件组成,如下面的屏幕截图所示。 要添加新字段,复制现有的容器控件并粘贴到相应的响应组件中,更新名称、文本和最终映射的字段。
备注
其他类型的 input 控件也有类似的容器,如 Combobox、Date Picker 和 Button。
响应容器
这些应用被设计为使用垂直和水平容器控件(如以下屏幕截图中所示)来响应平板电脑/桌面设备类型。 这些容器被配置为具有属性起点,如 height、width、LayoutMinHeight、LayoutMinWidth 和 Wrap。 当您向这些容器添加更多字段时,确保这些属性也得到更新,以继续正确处理响应。
详细信息:自动布局容器
连接其他数据
画布应用的强大之处在于,它们可以使用本机连接器库轻松、安全地连接到数百个其他系统和应用程序中的一个。
例如,如果您的 SAP 采购采购订单流程需要来自 CRM 中存在的上游预售机会的数据来完成该流程,您可以使用 Salesforce 或 Dataverse 连接器与 Dynamics 365 集成,这样您只需选择按钮即可轻松地将该数据添加到 SAP 采购订单应用中。
此外,如果您有一个内部专有系统或没有本机连接器的系统,您可以与 IT 团队合作创建一个自定义连接器,使 Power Apps 能够通过受支持的 API 轻松与该系统交互。
详细信息:
应用错误处理
默认情况下,所有嵌入的流调用都会评估流发回的响应状态字段,并通过 Notify 函数发出消息进行处理。 要了解更多信息,请参阅错误处理。
If(
!IsBlank(FirstError.Message),
Patch(
'SAP Integration Errors',
Defaults('SAP Integration Errors'),
{
Action: FirstError.Source,
'Additional Information': App.ActiveScreen.Name,
'Error Message': FirstError.Message,
Name: "SAP Vendor Management",
'Source Type': 'Source Type (SAP Integration Errors)'.'Power App',
'Workflow Status': 'Workflow Status (SAP Integration Errors)'.Failed
}
);
Trace(FirstError.Message);
Error(FirstError);
)
应用生成的所有意外异常都在 App.OnError 属性中处理,在重新引发和跟踪错误之前,将在该属性中创建 SAP 解决方案模板错误记录。 管理员可以查看错误详细信息,并可以放置触发器,来在出现监视错误文档中显示的应用未处理的异常时收到警报。
详细信息:OnError 属性
相关内容
- 什么是画布应用?
- 理解 Power Apps Studio
- 从解决方案中创建画布应用
- 使用 component framework 和 canvas apps 组件构建可重用的 Power Apps UI
- 管理 Microsoft Power Platform
- 面向企业开发人员、合作伙伴和 ISV 的画布应用