|   |   | 
| 
 | ВычислитьВыражение на СКД | ☑ | ||
|---|---|---|---|---|
| 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)?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |