Не правильно считается сумма в запросе (7.7)
13.07.2010
18:20
#1
Столкнулся с такой ситуацией: какой-то не хороший редиска $%^&@# создал документ в котором пара реквизитов табличной части имеют тип значения - строка, это реквизиты СуммаСтарая и Разница (как видно тип должен быть все же число). Второй раз наступаю именно на эти грабли, в запросе сумма по данным реквизитам округляется до целого числа и по некоторым группа товаров, соответственно, иногда получается расхождение в районе 10 руб., что не есть хорошо.
Собственно вопрос: как это можно победить, получать правильное, не округленное, значение суммы таких реквизитов в запросе?
Собственно вопрос: как это можно победить, получать правильное, не округленное, значение суммы таких реквизитов в запросе?
13.07.2010
19:45
#2
В 77 проблемы с "хитрыми" запросами решаются путем создания фиктивных объектов - документов с нужной разрядностью реквизитов. Этакий аналог временной таблицы.
В транзакции создается новый фиктивный документ. заполняется данными. затем по нему делается запрос. транзакция откатывается.
Не совсем понятен контекст Вашей задачи,но возможно и в Вашем случае это будет разумно.
В транзакции создается новый фиктивный документ. заполняется данными. затем по нему делается запрос. транзакция откатывается.
Не совсем понятен контекст Вашей задачи,но возможно и в Вашем случае это будет разумно.
13.07.2010
21:48
#3
Я бы делал так:
1. Переименовал бы СуммаСтарая и Разница в, например, нСуммаСтарая и нРазница
2. Сделал бы еще пару реквизитов СуммаСтарая и Разница все таки числового типа.
3. Написал бы обработку, которой перегнал бы символьные значения в числа и записал бы их в нормальные реквизиты
4. нСуммаСтарая и нРазница удалил бы совсем
5. Просмотрел бы алгоритмы, где обрабатывались символьные СуммаСтарая и Разница и переделал бы их
Может это долго, но зато все будет правильно
1. Переименовал бы СуммаСтарая и Разница в, например, нСуммаСтарая и нРазница
2. Сделал бы еще пару реквизитов СуммаСтарая и Разница все таки числового типа.
3. Написал бы обработку, которой перегнал бы символьные значения в числа и записал бы их в нормальные реквизиты
4. нСуммаСтарая и нРазница удалил бы совсем
5. Просмотрел бы алгоритмы, где обрабатывались символьные СуммаСтарая и Разница и переделал бы их
Может это долго, но зато все будет правильно
14.07.2010
10:36
#4
> Не совсем понятен контекст Вашей задачи
Пример: в документе реквизит Разница, тип строка, значение 100,56 в одной позиции и 55,02 в другой позиции
В запросе: |РазницаСумма = Сумма(Разница) должно быть 155,57, а получается 156
Пример: в документе реквизит Разница, тип строка, значение 100,56 в одной позиции и 55,02 в другой позиции
В запросе: |РазницаСумма = Сумма(Разница) должно быть 155,57, а получается 156
14.07.2010
10:37
#5
> Я бы делал так:
Наверное так и придется делать. В запросе (отчете) не могу придумать как выкрутиться...
Наверное так и придется делать. В запросе (отчете) не могу придумать как выкрутиться...
14.07.2010
10:55
#6
"Сама проблема понятна.
Речь идет о контексте решаемой задачи, то есть например зачем Вы сделали строку. Здесь уже предлагали изменить тип значения на число. Можно ли так сделать или нет из контекста задачи непонятно, хотя решение довольно здравое. Как и наше предложение тоже.
ПрофитСервис, Москва и сопровождение программ 1С:Предприятие
"
Речь идет о контексте решаемой задачи, то есть например зачем Вы сделали строку. Здесь уже предлагали изменить тип значения на число. Можно ли так сделать или нет из контекста задачи непонятно, хотя решение довольно здравое. Как и наше предложение тоже.
ПрофитСервис, Москва и сопровождение программ 1С:Предприятие
"
14.07.2010
11:07
#7
Попробовал просто сменить тип реквизитов, в "прогнозе" была частичная потеря данных, но пронесло, отчет по остаткам показал отсутствие расхождений в подопытной и рабочей базе. Но как-то все равно страшновато рабочую базу мучить
Читают тему
(гостей: 1)