Страницы: 1
RSS
PQ. Расчет стоимости услуг с учетом периода.
 
Добрый день.  
Классическая задача, две таблицы количество и стоимость услуг, на выходе нужно получить сумму затрат по объектам и услугам. Добавил в расчет периоды действия договоров и цен, и впал в ступор. Во вложении пример вх. данных и желаемый результат. Буду признателен за помощь!
Возможно у меня есть ошибки в структуре исходных данных, принимаю любые замечания.
Изменено: TankSpb - 08.09.2020 12:32:47
 
del
Изменено: buchlotnik - 23.08.2021 18:26:04
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, стоимость услуг рассчитывается за месяц без учета дней, просто возникла ситуация, когда в связи с пандемией часть договоров была приостановлена, а по ряду услуг изменились цены, пришлось ввести периоды действия договоров и период действия цен.  Теоретически можно учесть ситуацию, когда договор приостанавливается в середине месяца и расчет необходимо провести за часть месяца. В идеале в первую таблицу необходимо еще добавить отчетный период.
 
все равно не понятно откуда Замена ФН у объекта 2222
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, Спасибо за помощь! но в текущей версии расчет не учитывает изменение цен.
 
Цитата
TankSpb написал:
но в текущей версии расчет не учитывает изменение цен
а где это изменение цен было в примере?
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал: все равно не понятно откуда Замена ФН у объекта 2222
Это мой косяк! Прошу прощения!
Изменено: TankSpb - 10.09.2020 16:28:49
 
buchlotnik, вроде все получилось, считает, единственное не смог сделать чтобы в результирующую таблицу автоматически добавлялись новые услуги (на примере ОФД, во вложении)
 
Цитата
TankSpb написал:
чтобы в результирующую таблицу автоматически добавлялись новые услуги
такие ещи надо решать динамически, типа :
Код
lst1 = List.Distinct(List.Combine(List.Transform(del[tmp],Table.ColumnNames))),
    to = Table.ExpandTableColumn(del, "tmp", lst1),
но это касается предпоследнего шага в запросе, а последний надо переписать- но уже не сейчас - вечером вернусь
Соблюдение правил форума не освобождает от модераторского произвола
 
del
Изменено: buchlotnik - 23.08.2021 18:10:59
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, Спасибо за мастер-класс! Нужно как-то отучать себя от макрорекордера в PQ и переходить на программирование. С меня пиво)
Очень понравилась стилистика кода, структурно и понятно!
Изменено: TankSpb - 11.09.2020 10:31:05
 
buchlotnik, а можно рассказать как это работает:
Код
period = [a = Excel.CurrentWorkbook(){[Name="Отчетный"]}[Content]{0},s = Date.From(a[С]),p = Date.From(a[По])][[s],[p]]

я правильно понимаю, в "а" записываем первую строку таблицы, s и p переменные в которые сохраняем значения соответствующих столбцов из строки "а"  непонятно с квадратными скобками и [[s],[p]] на конце, вернее не понятно что на выходе, это не список, не таблица...

Ну и список списков:
Код
    lst = List.Distinct(List.Combine(List.Transform(rep[tmp], Table.ColumnNames))),
    lst1 = {{"Период С", each List.Min([Даты])},{"Период По", each List.Max([Даты])}}
            & List.Transform(lst, each {_,(x)=>List.Sum(Table.Column(x,_))})
Как научиться мыслить так же?)
Изменено: TankSpb - 11.09.2020 11:03:35
 
Цитата
TankSpb написал:
как это работает:
[] - это запись(Record), строка таблицы если хотите. В данном случае содержит 3 поля - a,s,p; а для работы нужно только два - поэтому [[s],[p]]; что эквивалентно Record.SelectFields(record,{"s","p"}) - т.е. на выходе record из двух полей; а так да - в a записали строку, в  s  и p  ее распарсили
Цитата
TankSpb написал:
список списков:
вообще это хороший пример на динамическое формирование перечня преобразований, как в него засовывать функции когда-то подглядел у Андрей VG
Цитата
TankSpb написал:
Как научиться мыслить так же?)
читать других, потом писать самостоятельно... вариантов нет   ;)
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
читать других
Судя по форумам в RU регионе я насчитал 3-5 человек с таким глубоким знанием материала! Возьмите к себе стажером :)
Еще раз спасибо.
 
Off:
Цитата
TankSpb написал:
Возьмите к себе стажером
да я-то с удовольствием, только вакансии у меня сейчас открыты - "специалист по разработке аналитических методик", "специалист по разработке лекарственных форм", "химик ВЭЖХ"... и вот хрен кого найдешь - все хотят на кверях писать :D
Соблюдение правил форума не освобождает от модераторского произвола
Страницы: 1
Наверх