Неоднозначная точность расчета поля в запросе #592594


#0 by geek
Добрый день! Я уже не знаю что мне делать, затуп жуткий. Существует такой сложный запрос из СКД: ОстаткиПоДоговорамДляРаспределенияОстатки.Организация, ОстаткиПоДоговорамДляРаспределенияОстатки.ДоговорКонтрагента.Владелец, ОстаткиПоДоговорамДляРаспределенияОстатки.ДоговорКонтрагента, ОстаткиПоДоговорамДляРаспределенияОстатки.ДоговорКонтрагента.Дата, ОстаткиПоДоговорамДляРаспределенияОстатки.ДоговорКонтрагента.ДатаНачалаРабот КАК ДатаНачалаРабот, ОстаткиПоДоговорамДляРаспределенияОстатки.ДоговорКонтрагента.ДатаОкончанияРабот КАК ДатаОкончанияРабот, ОстаткиПоДоговорамДляРаспределенияОстатки.СуммаОстаток КАК СуммаОстаток, ОстаткиПоДоговорамДляРаспределенияОстатки.ДоговорКонтрагента, ОстаткиПоДоговорамДляРаспределенияОстатки.ДоговорКонтрагента.Владелец, ОстаткиПоДоговорамДляРаспределенияОстатки.ДоговорКонтрагента.Дата, ОстаткиПоДоговорамДляРаспределенияОстатки.ДоговорКонтрагента.ДатаНачалаРабот, ОстаткиПоДоговорамДляРаспределенияОстатки.ДоговорКонтрагента.ДатаОкончанияРабот, ОстаткиПоДоговорамДляРаспределенияОстатки.СуммаОстаток, Вычисляемое поле Коэффициент расчитывается странно. К примеру, в ноябре оно считается с 10 знаками после запятой, а в декабре с 5-ю. Хотя числе везде выгружаются с одинаковой точностью. Как в запросе принудительно выставить Формат? Менял в настройках СКД (как в Наборе данных, так и в Настройках), подставляет цифру с 5 знаками точности, остальное добивает 0-ми.
#1 by PR
ВЫРАЗИТЬ
#2 by geek
Во как вставилось:(
#3 by geek
Пробовал, не помогает
#4 by PR
Неудачник
#5 by geek
Хотя может не так как нужно писал ВЫРАЗИТЬ ВЫРАЗИТЬ(ОстаткиПоДоговорамДляРаспределенияОстатки.СуммаОстаток/ОстаткиПоДоговорамДляРаспределенияОстатки1.СуммаОстаток, ЧИСЛО(15,9))
#6 by geek
Да не говори:(
#7 by PR
ВЫРАЗИТЬ для числа округляет, а не добивает нулями. Число — оно и есть число, его нельзя добить нулями, иначе получится строка.
#8 by geek
В смысле, я правильно написал? =)
#9 by PR
Если тебя нужно округлить до восьмого знака, то да. Остальное делается условным оформлением.
#10 by Ненавижу 1С
ВЫРАЗИТЬ(ОстаткиПоДоговорамДляРаспределенияОстатки.СуммаОстаток/ОстаткиПоДоговорамДляРаспределенияОстатки1.СуммаОстаток КАК ЧИСЛО(15,9)) но если значащих цифр нет, то это ничего не даст, форматируйте уже в СКД
#11 by geek
Там не запятая, а "КАК". ВЫРАЗИТЬ(ОстаткиПоДоговорамДляРаспределенияОстатки.СуммаОстаток/ОстаткиПоДоговорамДляРаспределенияОстатки1.СуммаОстаток КАК ЧИСЛО(15,9)) Нет, у меня в декабре коэффициент рассчитывается с 6-ю знаками после запятой. 0,004818 - к примеру. Мне надо чтобы хотя бы не 6, а девять знаков. Очевидно, что 2 350 500 / 487 760 411,94 = 0,0048189642755208, а запрос мне выдает 0,004818
#12 by Serg_1960
(старая шутка) ЧЯДН?
#13 by geek
В СКД есть механизм, где можно было бы рассчитать (поделить) два получившихся поля (результат запрос) и вывести форматированный результат в третье?
#14 by geek
Простите, мне, вероятно, не понять юмор.
#15 by Ненавижу 1С
формат есть у полей СКД
#16 by hhhh
а зачем вам 9 знаков? Вы что ФобосГРунт запускаете? ВЫ знаете, что если налоговая у вас найдет в расчетах такой коэффициент, будете штраф платить?
#17 by geek
Я же писал в первом посте, что менял Оформление в Наборе данных. Не помогает. Добивает число нулями. К примеру:
#18 by Ненавижу 1С
а в консоли сколько выдает?
#19 by geek
Консоли запросов? Выдает 0,004818. Хотя калькулятор показывает цифру 0,0048189642755208 Странно, но консоль за предыдущие месяцы выдает цифры с детализацией 6 чисел после запятой, а в отчет попадают цифры детальные. 1С, бл*дь надо мной издевается :( Или это первые признаки сумасшествия.
#20 by geek
Зайдем с другой стороны. Есть код в модуле ФормыОтчета СКД. Можно ли обратиться каким-то образом к процессору компоновки данных или еще чему-то и откорректировать данные перед методом Вывести?
#21 by Serg_1960
Сорри. Вам, наверное, не до моих шуток сейчас :) "Округлением" в запросах можно и нужно "управлять". Третий запрос - пример для Вас:
#22 by geek
{Форма.Форма.Форма}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса: Ошибка при выполнении операции над данными: Microsoft OLE DB Provider for SQL Server: Arithmetic overflow error converting numeric to data type numeric. О_____О
#23 by PR
Напиши в своем примере 13/13
#24 by Fragster
Выразить(0 как число 15,9)
#25 by Ненавижу 1С
SQL Server какой?
#27 by geek
Выводит пустую колонку 2008 R2 Ссылка по теме:
#28 by geek
Проблему решил, всем огромное спасибо. ВЫБОР Вот. Если оформить так, тогда на выходе мы число с, кажется, 15-ю знаками после запятой. Через формат в СКД я обрезал его до 10-ти знаков.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С