Расчёт средней цены в запросе по группировкам #716516


#0 by Deryni
Есть регистр "Доставка" - оборотный. В него записывается такая информация Заказ, Товар, Перевозчик, Количество товара, Стоимость доставки. При этом по одному Заказу, Товару может быть несколько перевозчиков. Каждый раз пишется количество в заказе. Есть задача посчитать среднюю себестоимость перевозки на единицу товара и по заказу. Вывести в виде таблицы В таком виде Горизонтальные группировки Контрагент, Заказ, Товар. Вертикальные группировки - Перевозчик. По каждой строке и перевозчику нужно посчитать среднюю стоимость перевозки. И итого по заказу / товару. Проблема вот в чём. Предположим мы везёт в Заказе - З1 Товар - Т1 (10 шт.). Везут два перевозчика П1 и П2, при этом П1 делает это двумя разными документами регистраторами. Получаем в Регистре: З1, П1, Т1 - 10 шт., 100 долл. З1, П1, Т1 - 10 шт., 50 долл. З1, П2, Т1 - 10 шт., 100 долл. Таким образом средняя цена перевозки на единицу товара по З1 будет 25 долларов (сумма перевозки / количество в заказе) Средняя цена по П1 будет 15 долларов, средняя цена по П2 - 10 долларов. Собственно вопрос. Как это всё реализовать на СКД? Тупо делить сумму на количество не получается. Потому, что в итоговых строках количество суммируется, а мне нужно суммировать его только по заказу. Т.е. фактически в каждой группировке мне нужно просуммировать количество, но сделать это по каждому заказу и товару только один раз.
#1 by mistеr
Я не понял в примере, сколько всего товара в заказе и по сколько везет каждый из перевозчиков.
#2 by Deryni
В заказе 10 товаров. Каждый перевозчик везёт 10 товаров. Перевозчик 1 отражается в двух разных документах перевозки. В регистр каждый раз пишется количество товаров в заказе. Так задумано для других отчётов. В принципе это количество из регистра можно вообще не брать. Нужно каждый раз брать количество товаров в заказе.
#3 by mistеr
Ах, так между ними не товар делится, а расстояние? Тогда в ресурсе суммируешь Стоимость доставки, на уровне товара делишь на количество (в выч. поле), а на уровне заказа не делишь.
#4 by Deryni
Например перевозчик 1 везёт товар от пункта в в пункт Б, это оформляется соотв. документом. Потом он же везёт этот же товар из Б в С. Снова отдельный документ Затем П3 везёт из С в D и снова документ. На уровне заказа я не могу не делить. Мне нужно посчитать среднюю цену перевозки по П1, например. Для этого я должен просуммировать всё, что он вёз и разделить на количество в заказе. Т.е. если у меня Перевозчик самая верхняя группировка, мне нужно посчитать количество во всех заказах, которые он вёз. Просуммировать это количество, далее просуммировать общую стоимость перевозки и поделить. Таким образом я получу среднюю цену по нему. Нужно учитывать, что заказов может быть много и товаров в них ещё больше.
#5 by mistеr
Тогда нужно количество в заказе брать из отдельного набора данных, например, из документа. А стоимость из другого, подчиненного. Тогда СКД будет суммировать правильно, только на уровне заказа и выше.
#6 by Ненавижу 1С
#7 by Deryni
В итоге всё получилось с помощью СУММА(ВычислитьВыражениеСГруппировкойМассив("Количество/КвоДок", "ТЗаказ")) Где ТЗаказ - это поле сочетание заказа и товара КвоДок - количество документов регистраторов. Количество - количество из регистра.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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