3

我正在编写 Salesforce.com 和其他服务之间的集成,但我遇到了整数字段的问题。在 Salesforce.com 中,我定义了一个“数字”类型的字段,其中“小数位数”设置为“0”。在另一个服务中,它被明确地存储为一个整数。这两个字段应该存储相同的整数数值。

一旦我将值存储在该字段的 Salesforce.com 变体中,就会出现问题。Salesforce.com 将从其Query()QueryAll()操作返回相同的值,并错误地附加了一定的精度。

例如,如果我在 Salesforce.com 中为该字段插入值“827”,当我稍后从 Salesforce.com 中提取该数字时,它会说该值为“827.0”。

我不想硬编码我的集成以从特定字段中删除这些十进制值。那是不可维护的。我希望它足够聪明,可以在其余集成代码运行之前从所有整数字段中删除十进制值。使用 Salesforce.com SOAP API,我将如何做到这一点?

我认为这与我可以扫描元数据的“字段”属性有关,但我看不到从DescribeSObjectResultDescribeSObject()中提取小数位数的方法。

4

2 回答 2

8

啊哈!小数位数在对象上调用的属性ScaleField。你知道你有一个整数字段,如果它等于“0”。

于 2012-03-21T18:58:17.450 回答
3

从技术上讲,sObject 字段不是整数,即使“小数位数”属性设置为 0。它们始终是具有不同比例属性的小数。在 APEX 中记住这一点很重要,因为可用于小数的方法与用于整数的方法不同,并且还有其他潜在的类型转换问题(并非总是如此,但在某些情况下)。

于 2012-03-21T19:17:35.823 回答