我正在编写Salesforce.com与其他服务之间的集成,我遇到了整数字段的问题。在Salesforce.com中,我定义了一个“Number”类型的字段,其中“Decimal Places”设置为“0”。在另一个服务中,它最终存储为整数。这两个字段应该存储相同的整数数值。
一旦我将值存储在此字段的Salesforce.com变体中,就会出现问题。 Salesforce.com将从Query()
和QueryAll()
操作中返回相同的值,但精度不正确。
例如,如果我在Salesforce.com中为此字段插入值“827”,那么当我稍后从Salesforce.com中提取该数字时,它会说该值为“827.0”。
我不想对我的集成进行硬编码以从特定字段中删除这些小数值。这是不可维护的。我希望它足够聪明,可以在集成代码的其余部分运行之前从所有整数字段中删除十进制值。使用Salesforce.com SOAP API,我将如何实现这一目标?
我认为这将与DescribeSObject()
的“Field”属性有关,我可以扫描元数据,但我没有看到从{{3}中提取小数位数的方法}。
答案 0 :(得分:7)
Scale
对象上名为Field
的属性上。你知道你有一个整数字段,如果它等于“0”。
答案 1 :(得分:3)
从技术上讲,即使“小数位数”属性设置为0,sObject字段也不是整数。它们始终是具有不同缩放属性的小数。这在APEX中很重要,因为可用于Decimal的方法与整数的方法不同,而且还有其他潜在的类型转换问题(并非总是如此,但在某些情况下)。