powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Отчетность. Подгонка слагаемых под итоговую сумму
11 сообщений из 11, страница 1 из 1
Отчетность. Подгонка слагаемых под итоговую сумму
    #39548365
Доброго дня!

Есть Oracle, есть BI, есть отчетность. Вероятно, в этой ветке много тех, кто с такой ситуацией сталкивался

В процессе работы с разного рода отчетностью, приходится сталкиваться с запросами со стороны бизнеса, где требуется в одну книгу Excel выгружать несколько отчетных форм. Суммы в данных отчетах отражаются в тысячах и целых числах. Перед формированием отчетных форм первоначально собирается расшифровка нижнего уровня - клиент, счет, сумма, дата, идентификатор конкретной операции и т.д. Для двух форм одни данные и одна расшифровка.

Отчетные формы, расположенные в книге(они могут располагаться и отдельно - не принципиально) имеют разную группировку исходных данных. В частности - в одной отчетной форме пользователь хочет видеть некие суммы в разрезе по опер.дню, валюте, рейтингу клиента, а в другой по дню и еще по неким статьям отчетным.

При этом пользователь хочет, чтобы итоги между отчетными формами бились, ведь это "одни и те же данные", но из-за разной группировки и округления итоги не бьются на единицы.

Есть вариант использовать подход, когда сумма нижнего уровня(уровня уникальной операции) делится на тысячу, округляется, а уже потом подвергается сложением с другими суммами и группировке(как не суммируй и группируй округленные целые числа - итоговая сумма будет одна). Однако, при таком подходе сильно разнятся по понятным причинам итоговые суммы с балансом.

Поэтому для приведения сумм к общим итогам пользовались функцией, куда передавались суммы всех слагаемых без округления и требуемая итоговая сумма. Функция анализирует разницу между требуемым тоталом и фактическим и принудительно округляет в большую или меньшую сторону, работая при этом с дробными числами(в качестве слагаемых могут передаваться и целые). Но разница не всегда = 1, а иногда и несколько единиц. При таком подходе одними играми с тем, в какую сторону округлять, не обойтись. Приходится разницу в жесткую садить на какое-то слагаемое.

Есть ли опыт решения подобного рода задачки?
...
Рейтинг: 0 / 0
Отчетность. Подгонка слагаемых под итоговую сумму
    #39548534
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Варианты:
1. все расчеты в копейках или еще точнее. А округлять именно на форме. Тогда в итого будет не бить в пределах 1 копейки
2. расчеты делать в базе по beforetrigger и в таблице делать нужные подитоги, чтобы всё билось в зависимости от группировок
...
Рейтинг: 0 / 0
Отчетность. Подгонка слагаемых под итоговую сумму
    #39548700
=nomad=,
Спасибо за ответ

1. Вариант был такой, но часто пользователь не хочет видеть в Excel лишние формулы. Кроме того, те суммы, что выгружаются в форму - это уже суммы из 100500 операций, сгруппированных и выведенных в нужные ячейки формы. Я так же сделаю округление на форме и получу ту же итоговую сумму сложением округленных слагаемых, что и сейчас. Или я чего-то не уловил...

2. Боюсь, что если я сделаю подитоги, чтобы потом собрать из них итог, то получится расхождение с балансом. Ведь при каждом сборе подитога будет образовываться погрешность на округлении, которая будет возврастать пропорционально количеству подитогов
...
Рейтинг: 0 / 0
Отчетность. Подгонка слагаемых под итоговую сумму
    #39548701
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
иногда общую дельту разбрасываем не на одну строку, а на несколько, на те, у которых сумма (общая или округления) больше
...
Рейтинг: 0 / 0
Отчетность. Подгонка слагаемых под итоговую сумму
    #39548712
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxиногда общую дельту разбрасываем не на одну строку, а на несколько, на те, у которых сумма (общая или округления) большет.е. если дельта 5 копеек, разбрасываем на первые (условие первенства обсуждаемо с заказчиком) 5 строк по копейке
...
Рейтинг: 0 / 0
Отчетность. Подгонка слагаемых под итоговую сумму
    #39548722
andreymx,

Спасибо!
В общем, варианты все понятные. Спасибо за ответы!
...
Рейтинг: 0 / 0
Отчетность. Подгонка слагаемых под итоговую сумму
    #39548760
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Репортбилдермен,

В общем случае миссия невыполнима. Например, есть две строки баланса по 600 руб каждая, и их сумма:

Отчет в рубляхстрока 1 600строка 2 600Итого 1200

И ты хочешь показать это в тысячах.

Получается, что каждая из 600 округляется вверх, до целой тысячи.
А итог, 1200, округляется вниз, опять же до одной тысячи.
Получаем странное:

Отчет в тысячахстрока 1 1строка 2 1Итого 1

Вопрос: как ты в самом лучшем случае желаешь видеть "Отчет в тысячах" на основании данных "Отчета в рублях" ?

Нарисовать вместо 1200 - две тысячи?

Или вместо какой-то шестисотки - ноль?

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

Правильный ответ - если в отчетах используется округление, скажем, до тысяч, то это должно предполагать, что значащие цифры лежат далеко за этим пределом - грубо говоря, что счет во всех графах идет хотя бы в десятках миллионов. Тогда во всех формах внутри применять честную арифметику в копейках, округлять значения только при выводе в каждую ячейку, на расхождения в единицах тысяч забить, для удобного пояснения расхождений дать возможность увидеть неокругленные значения (то есть от "отчета в тысячах" быстро увидеть "отчет в рублях").

А иначе, чем хитрее сделаешь "рисовальную" логику, тем неприятнее будут вопросы при сверке форм.
...
Рейтинг: 0 / 0
Отчетность. Подгонка слагаемых под итоговую сумму
    #39548813
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все считать нужно в целых числах (рубли или копейки).
Округление только при выводе (формат типа "#,##0,\K").
...
Рейтинг: 0 / 0
Отчетность. Подгонка слагаемых под итоговую сумму
    #39548824
Alibek B.,

ты наивный чукотский юноша, судя по всему....
Оно может быть всё и хорошо было бы, и ровно считалось бы в копейках, если бы не налоговая ставка и прочие "проценты по кредитам"...
К примеру, в России НДС - 18%, а НДФЛ - 13%.

И долго у тебя с такими показателями процентов будут целые числа в базе оставаться?
...
Рейтинг: 0 / 0
Отчетность. Подгонка слагаемых под итоговую сумму
    #39548954
Lunx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я расскажу как такие вопросы обрабатывает SAP.
Пример: надо выделить НДС по каждой из строк.
То есть, есть некая общая сумма, и есть строки составляющие эту сумму и есть требования чтобы 18% по каждой из строк было равно 18% от общей суммы.
Что делает SAP, он считает 18% по каждой строке, затем считает разницу между 18% по строкам и 18% от общей суммы и полученный итог если он превышает одну копейку разбрасывает.
Можно добавлять по одной копейке к каждой строке, можно к наибольшей... Это как кому нравиться.
Но в целом Ваша задача решается только если вводить функции проверки на вывод каждого из числа. Если выводите несколько кусков одного целого, надо сравнивать с общим процентом от этого целого и разницу разбрасывать. Сочувствую.
...
Рейтинг: 0 / 0
Отчетность. Подгонка слагаемых под итоговую сумму
    #39549018
Lunx,

Ну да, независимо от системы суть одна - либо поделить какими-то частями, либо дельту на одно слагаемое кинуть. Принципиально нового ничего не придумать) Пока, в текущей задаче, как раз обошелся увеличением одного из слагаемых. Думал сделать универсальную процедурку, куда бы передавались все слагаемые и желаемый тотал, да округлением все поровнять. Да не удастся, ибо каждая задачка - отдельный подход по раскидке оставшейся не у дел разницы
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Отчетность. Подгонка слагаемых под итоговую сумму
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]