Добрый день, ситуация такая: есть файл Excel в котором есть ячейка с числом 1000. Данные загружаются в аксапту, и затем используются для создания журнала. И в при одном варианте загрузки мы получаем 1000,00, а при другом 1. Данные дергаем вот так :
X++:
Fields.itemIdx( ).Value()
Fields - это экземпляр класса CCADOField, соответственно метод value содержит :
X++:
anytype value()
{
COMVariant value;
real tmp;
value = field.value();
switch (value.variantType())
{
case COMVariantType::VT_I2:
return value.byte();
case COMVariantType::VT_I4:
return value.int();
case COMVariantType::VT_R4, COMVariantType::VT_R8:
//VSN003_FD_022_boss_import_dPul -->
tmp = value.double();
if (tmp == 0)
tmp = value.float();
//VSN003_FD_022_boss_import_dPul <--
return tmp;
case COMVariantType::VT_CY:
return value.currency();
case COMVariantType::VT_DATE:
return value.date();
case COMVariantType::VT_BSTR:
return value.bStr();
case COMVariantType::VT_BOOL:
return value.boolean();
case COMVariantType::VT_DECIMAL:
return value.decimal();
case COMVariantType::VT_I1:
return value.byte();
case COMVariantType::VT_UI1:
return value.uInt();
case COMVariantType::VT_UI2:
return value.uShort();
case COMVariantType::VT_UI4:
return value.uLong();
}
return '';
}
и при хорошем варианте мы получаем в switch - "1000"VT-R8, а в плохом - "1000"VT_BSTR. Год назад я решал похожую проблему, тем что удалял лишние пробелы в том что возвращал метод value(), но сейчас я натолкнулся на вариант который первоначально загружает в правильном формате, поэтому и пытаюсь разобраться в чем у них разница. Подскажите, куда копать!
P.S. Формат ячейки :

если поменять формат ячейки на числовой, то все работает правильно. Но это ведь не дает ответ, почему в одном варианте загрузки все работает и со старым форматом ячейки!