Имя: Пароль:
1C
1С v8
Проблема округления при связи с Oracle 11
0 Julbars
 
09.06.14
10:34
Столкнулся с непонятной ситуацией.
Через "ВнешнийИсточникДанных" подключаюсь к базе Oracle 11.
Обычным 1С запросом из View получаю значение "91 211,203125"
Если посмотреть это значение в самой View из Developer'а, то оно хранится в базе как "91 211,2"

Откуда в 1С приходит это же число с хвостом ???
1 Apokalipsec
 
09.06.14
10:40
Просто в представлении вьюхи обрезано 2 символами, в базе число лежит как  "91 211,203125"
тебе обрезать религия не позволяет?)
2 Julbars
 
09.06.14
10:45
Позволяет, я посмотрел откуда берет данные вьюха, но и там число хранится уже обрезанным.
Что интересно хвост .003125 присутствует в очень многих "не округленных" значениях.
3 Julbars
 
09.06.14
11:20
Вот что пишут умные люди:
Причина описанного явления в том, что в OLE Automation нет типа данных с фиксированной точкой. Дробные числа 1С:Предприятия при передаче через COM преобразуются к типу с плавающей точкой (double), в котором не все десятичные дроби, даже с малой разрядностью, могут быть представлены точно. Для решения проблемы можно:
1) При получении дробных значений 1С:Предприятием выполнять округление до нужной разрядности дробной части (Окр).
2) Передавать через COM строковые представления чисел, для чего использовать функцию преобразования числа в XML-строку.
3) Передавать все данные через COM в виде единой XML-строки.
Это особенность числовых типов данных в модели COM. В ней нет точного соответствия числовым типам 1С, поэтому они так и передаются.