СКД: как ВычислитьВыражение() последней ненулевой цены внутри группировки? #753379


#0 by dave2000
Отчет на СКД. Есть такие поля (колонки) в отчете: -Номенклатура, -Регистратор, -Цена, -Количество, -Сумма Сумма = Цена * Количество. Но поле "Цена" заполнено не всегда, иногда оно нулевое. Как сделать так, чтобы поле "Сумма" вычислялось по последней заполненной цене? Т.е. если цена в текущей строке = 0, то чтобы бралась последняя ненулевая цена. Как правильно сделать?
#1 by Апош
какую-то ересь ты задумал. что хочешь получить при всех нулевых ценах?
#2 by dave2000
При всех нулевых естественно будет ноль, т.к. не было ненулевых. Знаю, что ересь, но такая уж задача. Вопрос лишь в том, делать её через СКД или старым способом - программировать. ЗЫ: Задача там на самом деле немного сложнее, я её упростил до примитива, чтоб понятнее было.
#3 by Ненавижу 1С
дали людям СКД и они позабыли как запросы пишутся
#4 by Апош
мне не естественно. и я не догоняю, что этим хочет сказать отчёт
#5 by dave2000
Приведу другой пример: Есть поля: Регистратор, ПоказательСпидометра, Пробег, РасчетныйПоказательСпидометра. Но поле ПоказательСпидометра может быть заполнено не всегда, и, если оно не заполнено, то должно браться последнее заполненное значение (с предыдущих строк). А если заполненных выше по строках не было, тогда 0. Можно ли такое сделать на СКД?
#6 by Апош
минимальный спидометр плюс сумма пробегов штоль?
#7 by dave2000
Да, в каждой строке.
#8 by Ненавижу 1С
срез последних с отбором в параметре ПоказательСпидометра<>0
#9 by Апош
щито? 1 - 1 - 2 оно?
#10 by aleks_default
Слющай, дарагой, защем СКД? Не надо СКД! Делай срез цены непосредственно в запросе и будет тебе счастье. Тебе же это нужно не только в итоговых стрках а вообще во всех?
#11 by aleks_default
+ Я к тому что ВычислитьВыражение применяется при  агрегации детальных записей, а тебе же нужно чтобы цена была ненулевой и в детальных тоже?
#12 by dave2000
Типа как-то так должно быть: Поле1 + Поле2 = Поле3 ---------------------
#13 by Апош
это называется нарастающий итог
#14 by dave2000
В детальных записях выражение тоже должно быть. Смотрите новый пример и
#15 by dave2000
Верно, но всё усложняет первое поле: оно может быть, а может и не быть, и нужно каждый раз начинать считать от его ненулевого значения. Обратите внимание на : как только поле стало 130, дальнейший расчет итога пошёл уже относительно него (131,133,134...)
#16 by Апош
а почему это 114+1 уже 131? говорю ж, хрень какую-то придумал
#17 by dave2000
Если поле1 заполнено, то нарастающий итог делается как поле1+поле2, а если оно не заполнено, то поле2 суммируется к предыдущей строке. Поэтому после 114 сразу идет 131. Согласен, что хрень, но это всё не я придумывал, а отчёт такой нужен))))
#18 by aleks_default
"Если поле1 заполнено, то нарастающий итог делается как поле1+поле2, а если оно не заполнено, то поле2 суммируется к предыдущей строке" Я тебе говорю, сделай так чтобы у тебя поле1 всегда было заполнено. Т.е. сделай в запросе(а не в ресурсах  или вычисляемых полях СКД)  срез цены на каждую строчку.
#19 by Апош
а ты знаешь, что будет делать с таким отчётом заказчик? ни разу не информативно ноль в поле1, такие данные в базе, как я понял
#20 by dave2000
Верно, там в базе такие данные, даже запрос не построишь таким образом, чтобы это поле всегда было заполнено, иначе все проблемы сразу бы отпали. Без программирования тут скорее всего не обойдётся, делаю пока как обычный отчет, без СКД.
#21 by Апош
>не построишь таким образом, чтобы это поле всегда было заполнено брехня
#22 by bootini
Как отчет-то выглядит какие группировки что в строках?
#23 by aleks_default
+1 млять, простейший срез первых сделать не могут уже
#24 by bootini
Откуда данные беруться? , если из периодического регистра сведений, то запрос построишь.
#25 by dave2000
Срез первых и последних вроде как относится к регистрам сведений. У меня же данные берутся просто из реквизитов документов (регистратор), которые могут быть либо заполнены, либо пустыми. Так вот, если реквизит пустой, нужно чтобы бралось значение последнего заполненного в выборке. Если я что-то неверно понял, поясните плз. Я с СКД мало работал, много всего ещё не знаю.
#26 by Апош
не писать в регистр данные, которые нужно писать в регистр - дурной признак, от этого волосы на ушах растут
#27 by dave2000
Это я знаю. Повторюсь, я исхожу уже из того, что имею, я систему не проектировал.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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