我写的一些插件(重新)计算了不同的价格,我使用Math.Round来保持结果与CRM中的默认2位设置一致。
但我想......如果用户决定将他的CRM设置为使用不同的精度会怎么样?
因此,我需要以编程方式访问CRM设置,以便我的功能可以使用用户选择的任何设置。
我如何从代码中访问常规(以及可能的其他)CRM设置?
答案 0 :(得分:2)
用户的设置存储在usersettings实体中。组织的设置存储在组织entity
中但是,特定属性的设置存储在元数据中(例如,精度为4位的十进制数)。您必须将元数据服务与RetrieveAttribute message结合使用,后者将返回属性的AttributeMetadata。对于CrmDecimal属性,它将是DecimalAttributeMetadata的实例,例如包含已配置的precision的属性。
HTH
答案 1 :(得分:0)
这是一个很好的技巧,可以用来解决这个问题......
使用向导创建空白报告,导出它执行RDP文件并在Visual Studio中打开它。检查创建的数据集,其中一个称为“DSNumberAndCurrencyInfo”。
这是该数据集背后的查询。
SELECT
DateFormat, DateFormat + ' ' + TimeFormat AS DateTimeFormat,
NumberLanguageCode, CalendarType,
NumberFormat_0_Precision, NumberFormat_1_Precision,
NumberFormat_2_Precision, NumberFormat_3_Precision,
NumberFormat_4_Precision, NumberFormat_5_Precision,
CurrencyFormat_0_Precision, CurrencyFormat_1_Precision,
CurrencyFormat_2_Precision, CurrencyFormat_3_Precision,
CurrencyFormat_4_Precision, CurrencyFormat_5_Precision
FROM
dbo.fn_GetFormatStrings()
这意味着有一个DB功能可以告诉您执行该功能的用户的各种格式设置。
您也可以深入挖掘并打开该功能,但您可能不需要。