3 Replies Latest reply: Dec 9, 2016 8:13 AM by S S RSS

    Не правильное умножение в сводной таблице

    S S

      Коллеги, добрый день.

       

      Столкнулся с небольшой проблемой, которую не могу понять и нужен ваш совет.

      У нас есть отчет дистрибьютора по продажам нашей продукции через своих клиентов. Продажи показаны только в штуках и, чтобы оценить продажи, нужно умножить штуки на наши цены. Актуальные цены подтягиваются из 1С, а т.к. в 1С нет справочника цен с ценами на каждый день, во время загрузки создается КнигаЦен. Связь между отчетом и книгой цен осуществляется через ключ: наименование продукта + дата.

      Скрипт.jpg

       

       

      Пытаюсь создать сводную таблицу, в которой будут показаны продажи в рублях и тут возникает проблема:

      Таблица 1.jpg

       

      если я использую формулу sum(Количество*Цена), то получается какая-то ерунда (результат в последней колонке), при этом цены к номенклатуре подтягиваются правильно, умножение колонок Цена и Количество дает правильный результат, формула

      sum(Количество)*Цена ,    тоже дает верный результат, но не показывает Total при сворачивании номенклатуры.


      Я пытался сделать КнигуЦен на основе QVD, но результат тот же. Самое интересное, если КнигуЦен выгрузить в Excel и загрузить в отчет, то все получается верно:

      Таблица 2.jpg


      В чем может быть проблема?



      С уважением. Stark.


       


        • Re: Не правильное умножение в сводной таблице
          Sergey Polekhin

          Добрый день,

           

          Первое, на что я предложил бы посмотреть - на то, как вы формируете ключ "КлючЦена":

          1. Используете ли для его генерации функции семейства Autonumber()?
          2. Выполняете ли вы построение этого ключа в рамках одного сценария загрузки или грузите данные в таблицы "Sales1" и "Цены2" в разных сценариях и при этом используете функции семейства Autonumber() в разных сценариях?
            • Re: Не правильное умножение в сводной таблице
              S S

              Добрый день.

               

              Мне уже подсказали в параллельной ветке  Incorrect multiplication in the pivot table, что надо в формуле сделать агрегирование:

              Sum(Aggr(Sum(Quantity) * Price, AllYourChartDimensionsHere))

              тогда все работает. Но мне все равно не понятно, почему, когда я загружаю цены из Excel, формула sum(Количество*Цена) формула работает правильно, а когда цены загружаются из QV, то надо агрегировать.

               

              Загрузка продаж происходит из базы Access.

              Для расчета цен использую следующий скрипт:

               

              ODBC CONNECT TO PostgreUT;
              РегистрСведений_ЦеныНоменклатуры:
              LOAD
              Date(DayStart("_period")) as Дата,
              MonthStart(Date(DayStart("_period"),'DD-MM-YYYY')) as Прайс_Дата,
              "_fld4677rref" as Справочник_Номенклатура,
              "_fld4681" as Цена;
              SQL SELECT
              "_period",
              "_fld4677rref",
              "_fld4681"
              FROM "ut82sql".public."_inforg4675";

              Left Join (РегистрСведений_ЦеныНоменклатуры)
              LOAD *
              Resident Справочник_НоменклатурныеГруппы;

               

              LETvarMinDate1 = Num('01.01.2014');
              LETvarMaxDate1 = num(trim(Today()));

              Goods_x_Dates: 
              Load
              Справочник_НоменклатурныеГруппы,
              MonthStart(Date(DayStart($(varMinDate) + IterNo() -1),'DD-MM-YYYY')) asПрайс_Дата
              Resident РегистрСведений_ЦеныНоменклатуры
              WhileIterNo() <= $(varMaxDate) - $(varMinDate) + 1 ;

              Join (РегистрСведений_ЦеныНоменклатуры)
              LOAD *
              Resident Goods_x_Dates;
              DropTable Goods_x_Dates;

              Цены:
              NoConcatenateLoadПрайс_ДатаasДата,
              Справочник_НоменклатурныеГруппы,
              Цена,
              If(Справочник_НоменклатурныеГруппы=Peek( Справочник_НоменклатурныеГруппы ) andIsNull( Цена ),peek(Цена1),Цена) asЦена1
              Resident РегистрСведений_ЦеныНоменклатуры
              OrderByСправочник_НоменклатурныеГруппы, Прайс_Дата ;
              DropTable РегистрСведений_ЦеныНоменклатуры;

              LeftJoin (Цены)
              LOAD *
              Resident Справочник_НоменклатурныеГруппы;

              DROPTable Справочник_НоменклатурныеГруппы;
              DROPFieldsСправочник_Номенклатура, Цена, Справочник_НоменклатурныеГруппы;

              Цены2:
              LOAD Цена1 as Цена,Справочник_НоменклатурныеГруппы.Наименование&'-'&Дата as КлючЦена
              Resident Цены;
              DROP Table Цены;

               

              С уважением, Stark

                • Re: Не правильное умножение в сводной таблице
                  S S

                  На каждый вопрос есть ответ, просто нужно его поискать)))

                   

                  Вопрос решился сам собой, в результате поиска решения для другого скрипта:

                  в последней таблице надо было просто добавить DISTINCT

                   

                  Цены2:
                  LOAD Distinct Цена1 as Цена,Справочник_НоменклатурныеГруппы.Наименование&'-'&Дата as КлючЦена
                  Resident Цены;
                  DROP Table Цены;

                   

                  С уважением, Stark