Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Коллеги, добрый день.
Столкнулся с небольшой проблемой, которую не могу понять и нужен ваш совет.
У нас есть отчет дистрибьютора по продажам нашей продукции через своих клиентов. Продажи показаны только в штуках и, чтобы оценить продажи, нужно умножить штуки на наши цены. Актуальные цены подтягиваются из 1С, а т.к. в 1С нет справочника цен с ценами на каждый день, во время загрузки создается КнигаЦен. Связь между отчетом и книгой цен осуществляется через ключ: наименование продукта + дата.
Пытаюсь создать сводную таблицу, в которой будут показаны продажи в рублях и тут возникает проблема:
если я использую формулу sum(Количество*Цена), то получается какая-то ерунда (результат в последней колонке), при этом цены к номенклатуре подтягиваются правильно, умножение колонок Цена и Количество дает правильный результат, формула
sum(Количество)*Цена , тоже дает верный результат, но не показывает Total при сворачивании номенклатуры.
Я пытался сделать КнигуЦен на основе QVD, но результат тот же. Самое интересное, если КнигуЦен выгрузить в Excel и загрузить в отчет, то все получается верно:
В чем может быть проблема?
С уважением. Stark.
На каждый вопрос есть ответ, просто нужно его поискать)))
Вопрос решился сам собой, в результате поиска решения для другого скрипта:
в последней таблице надо было просто добавить DISTINCT
Цены2:
LOAD Distinct Цена1 as Цена,Справочник_НоменклатурныеГруппы.Наименование&'-'&Дата as КлючЦена
Resident Цены;
DROP Table Цены;
С уважением, Stark
Добрый день,
Первое, на что я предложил бы посмотреть - на то, как вы формируете ключ "КлючЦена":
Добрый день.
Мне уже подсказали в параллельной ветке 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
На каждый вопрос есть ответ, просто нужно его поискать)))
Вопрос решился сам собой, в результате поиска решения для другого скрипта:
в последней таблице надо было просто добавить DISTINCT
Цены2:
LOAD Distinct Цена1 as Цена,Справочник_НоменклатурныеГруппы.Наименование&'-'&Дата as КлючЦена
Resident Цены;
DROP Table Цены;
С уважением, Stark