Имя: Пароль:
1C
1С v8
ВычислитьВыражение на СКД
,
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)?
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.