Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

СКД. Распределить в группировка сумму пропорционально

СКД. Распределить в группировка сумму пропорционально
Я
   location
 
05.07.21 - 11:32
Подскажите как правильно сделать распределение или в запросе или в вычисляемых полях.
Есть документ доставки и документы реализации, в документе доставки может быть какое угодно число документов реализации в табличной часте. В документе доставки указана сумма доставки. Вот при выводе отчета надо эту сумму распределить по всем документам реализации пропорционально суммам продажи.

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.