Имя: Пароль:
1C
1С v8
Искаженная сумма полученная через COM-соединение
,
0 Cube
 
27.08.12
10:04
Платформа 8.2.15.318.
Все базы файловые.

Запрос в УПП (релиз 1.3.26.1): http://storage7.static.itmages.ru/i/12/0827/h_1346046791_4026868_fa34e1ecba.png
В строке №3 сумма 874,69.
В строке №4 сумма 68,60

Подключаюсь к этой же базе УПП из ЗиУП (релиз 2.5.54.1) через v82.COMConnector и получаю: http://storage8.static.itmages.ru/i/12/0827/h_1346046964_6685415_a3062d5023.png
В строке №3 сумма 874,6900000000001
В строке №4 сумма 68,59999999999999

По остальным строкам всё нормально. Есть и другие документы с подобными финтами, но закономерности появления этой бороды я не выявил.
На боевых базах в клиент-серверном варианте та же проблема с теми же документами.
Кто-нибудь сталкивался с подобным? Есть идеи как это лечить?
1 andrewks
 
27.08.12
10:08
"Есть идеи как это лечить?"  Окр(), не?
2 andrewks
 
27.08.12
10:09
если в самом запросе - cast()
3 Cube
 
27.08.12
10:09
(1) Я хочу устранить причину, а не бороться со следствием... :)
4 andrewks
 
27.08.12
10:10
(3)  "Я хочу устранить причину"  неужто собрался ликвидировать 1С? :-)
5 Cube
 
27.08.12
10:11
(4) Ты думаешь, что причина в этом?))) Но тогда встанет другая проблема: где взять платформу :р
6 чувак
 
27.08.12
10:12
(4) огда ему надо перемещатся в 1960 год, искать Бориса
7 andrewks
 
27.08.12
10:12
не, а всё-таки, если в запросе прямо откастовать, всё равно по ком результат искажает, или нет?
8 Cube
 
27.08.12
10:14
(7) Я в английском синтаксисе запросов не бельмесо)) Ты предлагаешь выразить как число 15.2 что-ли?)
К тому же, запрос - это в УПП, а в ЗиУП я работаю уже с объектом... Запроса нет...
9 ДенисЧ
 
27.08.12
10:16
Это нормально
10 andrewks
 
27.08.12
10:16
"Ты предлагаешь выразить как число 15.2 что-ли?"  ага
11 ДенисЧ
 
27.08.12
10:16
(7) ага.
12 Cube
 
27.08.12
10:16
(9) Что именно? И почему? :)
13 andrewks
 
27.08.12
10:16
а вообще, насколько помню, 2+2=3,(9)
14 ДенисЧ
 
27.08.12
10:17
(12) Потому что по Оле данные передаются не в том виде, что их хранит 1с
15 Cube
 
27.08.12
10:17
(10) А если ПФР опять захочет точность пять знаков после запятой? Не, такой вариант отпадает :)
16 andrewks
 
27.08.12
10:18
(15) сделаешь (17,5)
17 Cube
 
27.08.12
10:18
(14) И какие варианты выхода, кроме как прострелить коленку?)
18 DailyLookingOn Sunset
 
27.08.12
10:18
(6)
Че это Бориса-то.
Билли и тех, кто придумал формат хранения вещественных чисел.
19 andrewks
 
27.08.12
10:18
(17) ну, много ещё. об стену там,  пузырёк с йадом, и т.д.
20 DailyLookingOn Sunset
 
27.08.12
10:18
(17)
Окр(X,Y)
21 Cube
 
27.08.12
10:20
(19) Нужно, чтобы ни одного программиста не пострадало)
22 Cube
 
27.08.12
10:20
(20) Уже предлагали.
23 Reset
 
27.08.12
10:20
(22) Других нет вариантов
24 ДенисЧ
 
27.08.12
10:20
(17) Использовать округление
25 Cube
 
27.08.12
10:21
(23) Плохой пост. Сделаю вид, что я его не заметил :))))
26 Cube
 
27.08.12
10:21
(24) Что-то как-то жиденько... :) Ещё варианты есть?
27 andrewks
 
27.08.12
10:23
(26) есть. не использовать округление
28 Reset
 
27.08.12
10:23
Ну другие варианты только через опу. На "той" стороне пихать в строку, передавать строкой например.
Округдение самое то. Учитывая, что всегда (вроде) известна точность, особых сложносностей не долдно вызывать
29 ДенисЧ
 
27.08.12
10:24
(26) Есть прострелить висок.
30 DailyLookingOn Sunset
 
27.08.12
10:24
31 Cube
 
27.08.12
10:25
Эх... Ладно, пойду округлю до 10 знаков после запятой... :)
32 Reset
 
27.08.12
10:26
Зачем до 10? До количества знаком после точки. По примеру из (0) - до 2х
33 Cube
 
27.08.12
10:31
(32) Потому что это заплатка (костыль), а не реальное округление. К тому же у меня это в обработке обмена, которая не знает, сумма это или ещё что, а в реальной базе 10 знаков после запятой никто реквизиты делать не будет.
Короче, чтобы не переписывать обмен потом, когда что-нибудь изменится.
34 Cube
 
27.08.12
10:32
Сделал округление до 10 знаков после запятой, проблема ушла (точнее суслик-то есть, просто его не видно :)).
Всем спасибо)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан