0
location
naïve
05.07.21
✎
11:32
|
Подскажите как правильно сделать распределение или в запросе или в вычисляемых полях.
Есть документ доставки и документы реализации, в документе доставки может быть какое угодно число документов реализации в табличной часте. В документе доставки указана сумма доставки. Вот при выводе отчета надо эту сумму распределить по всем документам реализации пропорционально суммам продажи.
Пример отчета.
Док доставки - Сумма доставки
Док РТУ - Сумма доставки распределенная пропорционально сумме продажи
Док РТУ2 - Сумма доставки распределенная пропорционально сумме продажи
Док РТУ...- Сумма доставки распределенная пропорционально сумме продажи
|
|
1
fisher
05.07.21
✎
11:47
|
С помощью ВычислитьВыражение в СКД можно обращаться к итогам вышестоящих группировок. Но для этого скорее всего придется делать явную группировку по документам доставки.
В запросе проще и универсальнее, ИМХО. Ну а в запросе все тривиально. Для пропорции тебе необходимо для каждой реализации иметь общую сумму доставки и общую сумму реализаций по этой доставке. Это получаешь подзапросом и соединяешь с исходным.
|
|
3
fisher
05.07.21
✎
13:03
|
(2) Прикарманить. Если не будешь в запросе явно округлять, то погрешность будет невелика, но от нее никуда не деться и итоги группировок могут на копейки отличаться от суммы по детализации.
Обычно сабжевая задача стоит в рамках реального распределения (отражения результатов в учетных данных), а не виртуального (в отчете). Реальное распределение с учетом округлений имеет разные стратегии.
Мне больше всего нравится округление с учетом погрешности предыдущего округления. Тогда погрешность округлений размазывается в процессе и не накапливается. Но в запросе такое делать проблематично.
Если очень хочется, можно в запросе сделать аналог округления с отнесением погрешности на строку с наибольшим значением. Непонятно только нафига.
Берешь предыдущий алгоритм как первый этап. В нем выполняешь реальное округление. Вторым этапом (запросом) получаешь разницу между итогами округления и суммой транспортировки. Ну и в итоге выполняешь объединение итогов реального округления с получившейся погрешностью, отнеся ее на накладные с максимальной суммой (их получаешь отдельным подзапросом в рамках документов транспортировки).
|
|