Как определить, хранит ли Поле в Salesforce.com целые числа? - PullRequest
2 голосов
/ 21 марта 2012

Я пишу интеграцию между Salesforce.com и другим сервисом, и у меня возникла проблема с целочисленными полями.В Salesforce.com я определил поле типа «Число», где «Десятичные знаки» установлены в «0».В другом сервисе он хранится окончательно как целое число.Эти два поля должны хранить одинаковые целочисленные числовые значения.

Проблема возникает, когда я сохраняю значение в варианте Salesforce.com этого поля.Salesforce.com вернет то же значение из своих операций Query() и QueryAll() с ошибочно добавленной точностью.

Например, если я добавлю значение "827" для этого поля в Salesforce.com, когда я извлекаю это число из Salesforce.com позже, он скажет, что значение равно «827.0».

Я не хочу жестко кодировать мою интеграцию, чтобы удалить эти десятичные значения из определенныхполя.Это не подлежит ремонту.Я хочу, чтобы он был достаточно умен, чтобы удалить десятичные значения из всех целочисленных полей до запуска остальной части кода интеграции.Используя SOAP API Salesforce.com, как мне это сделать?

Я предполагаю, что это будет связано со свойством DescribeSObject() «Поле», где я могу сканировать метаданные, но я нене вижу способа извлечь количество десятичных знаков из DescribeSObjectResult .

Ответы [ 2 ]

7 голосов
/ 21 марта 2012

Ах, ха! Количество десятичных разрядов находится в свойстве Scale объекта Field. Вы знаете, что у вас есть целочисленное поле, если оно равно "0".

3 голосов
/ 21 марта 2012

Технически поля sObject не являются целыми числами, даже если для свойства «Десятичные знаки» установлено значение 0. Они всегда являются десятичными числами с различными свойствами масштаба. Это важно помнить в APEX, поскольку доступные методы для десятичных чисел не такие же, как методы для целых чисел, и у вас есть другие потенциальные проблемы преобразования типов (не всегда, но в некоторых контекстах).

...