|
ВычислитьВыражение на СКД | ☑ | ||
---|---|---|---|---|
0
nikolas260579
23.05.19
✎
11:58
|
Всем здравствуйте. Есть вопрос по скд. Есть отчёт в виде таблицы. В строках вид продукции, в колонках период. За каждый период вычисляю сделанное количество. Мне нужно посчитать количество периодов, начиная от того, с которого была выработка. Я добавил вычисляемое поле (Поле1) с выражением Выбор Когда ВычислитьВыражение("Сумма(Количество)","Период",,"Первая","Текущая") > 0 тогда 1 Иначе 0 конец. Дальше переношу его в ресурсы и считаю нарастающий итог по нему ВычислитьВыражение("Сумма(Поле1)","Период",,"Первая","Текущая"). Всё бы хорошо, но если в каком-то периоде количество = 0, то я получаю предыдущее значение Поля1. А мне надо так: допустим период с 9.00 до 10.00, количество 5, поле1 = 1 период с 10.00 до 11.00, количество 10, поле 1 = 2 период с 11.00 до 12.00, количество 0, поле 1 надо 3, а я получаю 2 период с 12.00 до 13.00, количество 0, поле 1 надо 4, я получаю 2. Может кто что подскажет куда копать? Пробовал вычислитьвыражениесгруппировкоймассив("(Сумма(Поле1))","Период,Вид") (с группировками игрался), пока не прошло.
|
|||
1
Пробел
23.05.19
✎
12:05
|
А почему вместо "Сумма(Количество)" не использовать "Количество (различные Период)"?
|
|||
2
palsergeich
23.05.19
✎
12:06
|
(1) Вообще не советую использовать РАЗЛИЧНЫЕ.
При расшифровках благодоря оптимизатору все ломается, не всегда, но часто. |
|||
3
nikolas260579
23.05.19
✎
12:08
|
(1) ВычислитьВыражение("Сумма(Количество)","Период",,"Первая","Текущая") > 0 тогда 1 Иначе 0 конец Тут я сначала считаю общий итог по количеству. Если он больше нуля, тогда актуально всё то, что мне надо посчитать по Полю1
|
|||
4
Пробел
23.05.19
✎
12:20
|
(2) Хм, не знал. А как ломается? Просто не расшифровывается? Или закрывается нафиг все 1С:Предприятие?)
(3) а если вывести в отчет просто Поле1 - оно нормально выводится? Я же правильно понял, что до появления первого ненулевого количества должны быть нули, а после - единицы? У Вас в единицах прорех из нулей нету? Еще я бы проверил, что в поле "количество" не встречаются наллы и неопределенности. Не уверен, что выражения СКД автоматически приводят типы. |
|||
5
nikolas260579
23.05.19
✎
12:35
|
Да, если просто поле1, там единички
|
|||
6
nikolas260579
23.05.19
✎
12:35
|
По количеству в запросе естьnull(количество,0)
|
|||
7
nikolas260579
23.05.19
✎
12:38
|
(4) Если не просто Поле1 вывести, а через выражение, хотя бы Сумма(Поле1), то почему-то я 0 получаю вместо 1
|
|||
8
nikolas260579
23.05.19
✎
12:38
|
это когда количество в периоде 0
|
|||
9
Пробел
23.05.19
✎
13:01
|
Эта шайтан-скд что-то сама в себе оптимизирует. А если не дать ей такой возможности, например как-то так:
ВычислитьВыражение("Сумма(выбор когда Сумма(Количество) > 0 тогда 1 Иначе 0 конец)","Период",,"Первая","Текущая") |
|||
10
nikolas260579
23.05.19
✎
13:09
|
(9)Ругается на вложенные агрегатные функции
|
|||
11
nikolas260579
23.05.19
✎
13:10
|
Сейчас сумму вперед вынесу
|
|||
12
nikolas260579
23.05.19
✎
13:13
|
не прошло
|
|||
13
Пробел
23.05.19
✎
13:19
|
больше пока что у меня идей нет(
|
|||
14
nikolas260579
23.05.19
✎
13:21
|
"Компоновщик макета при генерации выражения функции ВычислитьВыражение, в случае если выражение упорядочивания содержит поля, которые не могут быть использованы в группировке, заменяет функцию ВычислитьВыражение на NULL." Где-то что-то с настройками?
|
|||
15
nikolas260579
23.05.19
✎
13:23
|
Как только количество 0, она в null у меня данные по текущему периоду обращает?
|
|||
16
Пробел
24.05.19
✎
07:40
|
(14) Скорей всего это относится к параметру "Сортировка", который у Вас не используется.
|
|||
17
Пробел
24.05.19
✎
07:53
|
Я бы уже потерял терпение и наговнокодил в запросе)
Сделал бы из итоговой таблицы временную с группировкой по периоду и суммированию по количеству. Соединил бы итоговую с этой ВТ по условию "Период итоговой >= Период ВТ" и опять сгруппировал бы с суммированием по количеству. На выходе должна получиться таблица, где Поле1 это количество, суммированное нарастающим итогом. А дальше уже пробовал бы "ВычислитьВыражение("Сумма(выбор когда Поле1 > 0 тогда 1 Иначе 0 конец)","Период",,"Первая","Текущая")". |
|||
18
nikolas260579
28.05.19
✎
11:52
|
(17)Я, кстати, так вначале количество в запросе посчитать решил, был такой вариант до ВычислитьВыражение
|
|||
19
nikolas260579
28.05.19
✎
11:56
|
Только ВычислитьВыражение всё равно ведь то же самое сделает?
|
|||
20
ам794123
28.05.19
✎
12:10
|
(0) самое простое решение проблемы в вычисляемом поле указать Сумма(Количество+1)
|
|||
21
nikolas260579
28.05.19
✎
12:23
|
(20)Не понял. Сумма(Количество+1) или Сумма(Поле1+1)?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |