| 
    
        
     
     | 
    
  | 
Расчёт средней цены в запросе по группировкам | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Deryni    
     06.08.14 
            ✎
    13:47 
 | 
         
        Есть регистр "Доставка" - оборотный. В него записывается такая информация
 
        Заказ, Товар, Перевозчик, Количество товара, Стоимость доставки. При этом по одному Заказу, Товару может быть несколько перевозчиков. Каждый раз пишется количество в заказе. Есть задача посчитать среднюю себестоимость перевозки на единицу товара и по заказу. Вывести в виде таблицы В таком виде Горизонтальные группировки Контрагент, Заказ, Товар. Вертикальные группировки - Перевозчик. По каждой строке и перевозчику нужно посчитать среднюю стоимость перевозки. И итого по заказу / товару. Проблема вот в чём. Предположим мы везёт в Заказе - З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
    
        mistеr    
     06.08.14 
            ✎
    14:09 
 | 
         
        Я не понял в примере, сколько всего товара в заказе и по сколько везет каждый из перевозчиков.     
         | 
|||
| 
    2
    
        Deryni    
     06.08.14 
            ✎
    14:14 
 | 
         
        (1)
 
        В заказе 10 товаров. Каждый перевозчик везёт 10 товаров. Перевозчик 1 отражается в двух разных документах перевозки. В регистр каждый раз пишется количество товаров в заказе. Так задумано для других отчётов. В принципе это количество из регистра можно вообще не брать. Нужно каждый раз брать количество товаров в заказе.  | 
|||
| 
    3
    
        mistеr    
     06.08.14 
            ✎
    14:25 
 | 
         
        (2) Ах, так между ними не товар делится, а расстояние? Тогда в ресурсе суммируешь Стоимость доставки, на уровне товара делишь на количество (в выч. поле), а на уровне заказа не делишь.     
         | 
|||
| 
    4
    
        Deryni    
     06.08.14 
            ✎
    14:35 
 | 
         
        (2)
 
        Например перевозчик 1 везёт товар от пункта в в пункт Б, это оформляется соотв. документом. Потом он же везёт этот же товар из Б в С. Снова отдельный документ Затем П3 везёт из С в D и снова документ. На уровне заказа я не могу не делить. Мне нужно посчитать среднюю цену перевозки по П1, например. Для этого я должен просуммировать всё, что он вёз и разделить на количество в заказе. Т.е. если у меня Перевозчик самая верхняя группировка, мне нужно посчитать количество во всех заказах, которые он вёз. Просуммировать это количество, далее просуммировать общую стоимость перевозки и поделить. Таким образом я получу среднюю цену по нему. Нужно учитывать, что заказов может быть много и товаров в них ещё больше.  | 
|||
| 
    5
    
        mistеr    
     06.08.14 
            ✎
    15:04 
 | 
         
        (4) Тогда нужно количество в заказе брать из отдельного набора данных, например, из документа. А стоимость из другого, подчиненного. Тогда СКД будет суммировать правильно, только на уровне заказа и выше.     
         | 
|||
| 
    6
    
        Ненавижу 1С    
     гуру 
    06.08.14 
            ✎
    15:06 
 | 
         
        ИТОГИ 
 
        СУММА(Стоимость)/СУММА(Количество) КАК Цена  | 
|||
| 
    7
    
        Deryni    
     12.08.14 
            ✎
    19:29 
 | 
         
        В итоге всё получилось с помощью 
 
        СУММА(ВычислитьВыражениеСГруппировкойМассив("Количество/КвоДок", "ТЗаказ")) Где ТЗаказ - это поле сочетание заказа и товара КвоДок - количество документов регистраторов. Количество - количество из регистра.  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |