Имя: Пароль:
1C
1С v8
Суммирование с условием в отчете на СКД
,
0 25-11
 
09.12.17
14:14
http://s019.radikal.ru/i605/1712/2e/35f3944db674.png

Есть отчёт на СКД, в котором некий ресурс (Остаток) имеет на уровне детальных записей как положительные так и отрицательные значения. В пользовательском режиме (без конфигуратора) создано Пользовательское поле для отображения абсолютной величины числа. Выражение для детальных записей:

Выбор
   Когда Остаток < 0 Тогда -Остаток
   Иначе Остаток
Конец

Когда пытаюсь в выражении для итоговых записей использовать Сумма(ТоЖеСамоеВыражение), то при формировании отчета получаю сообщение
Неверные параметры "-"
и отчёт не формируется. Подскажите, как такую задачу решать на пользовательском уровне?  Или всё-таки только конфигуратор?
1 nordbox
 
09.12.17
14:18
(0) Так тебе же ясно сказали
>>Неверные параметры "-"
открой глаза и посмотри на код
2 nordbox
 
09.12.17
14:20
в чем загадочный смысл этого выражения?
Когда Остаток < 0 Тогда -Остаток
   Иначе Остаток
3 25-11
 
09.12.17
14:24
(2) А что непонятного-то? Если 3, то выводим 3.
Если -3, то тоже 3.
Модуль или абсолютная величина числа - в седьмом классе проходят, кажется :)
4 25-11
 
09.12.17
14:28
Для детальных записей работает...
Если в выражении для итоговых записей написать

Выбор
   Когда Сумма(Остаток) < 0 Тогда -Сумма(Остаток)
   Иначе Сумма(Остаток)
Конец

тоже работает. Но неправильно :)
5 nordbox
 
09.12.17
14:38
Ну попробуй вот так
Когда Остаток < 0 Тогда (-Остаток)
   Иначе Остаток
6 nordbox
 
09.12.17
14:39
или вот так
Когда Остаток < 0 Тогда (Остаток*(-1))
   Иначе Остаток
7 25-11
 
09.12.17
15:01
(6) без разницы - СКД в пользовательском режиме "не понимает" выражение, которое нужно просуммировать.
8 nordbox
 
09.12.17
15:12
в СКД есть ВычислитьВыражение
9 nordbox
 
09.12.17
15:14
10 25-11
 
09.12.17
15:34
(8) А у тебя ВычислитьВыражение работает в пользовательском режиме? Можешь показать?
Я считал, что это инструмент, применяющийся только в конфигураторе. Но тогда уж лучше сразу в запросе ещё одно поле добавить. Интересует именно возможность без конфигурирования
11 nordbox
 
09.12.17
15:35
В пользовательском не пробовал, но как то инфа проскакивала что можно
12 nordbox
 
09.12.17
15:42
+11 пробовать не буду ))
сам не могу себя заставит доделать отчет и клиент-банк раскурочить, лень ))
13 25-11
 
10.12.17
22:16
Может быть кто-то из гуру по СКД откликнется? И авторитетно скажет, что в пользовательском режиме этого не добиться?
14 2dolist
 
11.12.17
08:23
Я мб что-то не понял в задаче, но что мешает написать
сумма(выбор когда Остаток < 0 тогда -Остаток иначе Остаток конец)
15 25-11
 
11.12.17
09:57
(14) Мешает только то, что отчёт не формируется. И вдается сообщение об ошибке.Которое приведено в (0)
16 25-11
 
11.12.17
09:58
"вдается=выдаётся
17 тарам пам пам
 
11.12.17
10:35
(13) в польз. режиме использовать ВычислитьВыражение и вообще все остальные функции СКД можно, это работает и у меня особо продвинутые клиенты даже смогли добавить пару таких польз. полей.

По (0) - раз ругается на параметры "-", значит Остаток где-то имеет тип не число - скорее всего NULL, раз на сравнение с нулем не ругается. Попробуй через ЕСТЬNULL написать.
18 2dolist
 
11.12.17
10:44
либо у тебя остаток называется не как остаток, либо действительно Null, тогда можешь проверку добавить

сумма(isnull(выбор когда Остаток < 0 тогда -Остаток иначе Остаток конец,0))
19 25-11
 
11.12.17
15:12
(18) Анализ на Null не помогает, дело не в этом
(17) ВычислитьВыражение в пользовательском режиме пока не пробовал. Это и в конфигураторе не так просто правильно использовать... Я это раньше применял только на закладке "Ресурсы", не для вычисляемых полей.
20 Cyberhawk
 
11.12.17
15:16
"0+Остаток" уже пробовал?
21 Cyberhawk
 
11.12.17
15:16
Ну или "0-Остаток"
22 тарам пам пам
 
11.12.17
15:35
(19) а ты правильно анализ на null сделал? в (18) потому что выражение неправильно написано, нужно сумма(выбор когда естьnull(Остаток, 0) < 0 тогда -естьnull(Остаток, 0) иначе естьnull(Остаток, 0) конец)
23 25-11
 
11.12.17
17:35
(22) Я думаю, что анализ на Null правильно написал :)
http://s46.radikal.ru/i111/1712/49/ab8ecaf2350d.png
24 25-11
 
11.12.17
17:45
Да, и замена Null на 0, как положено, выполнена уже в запросе. Так что это здесь точно не должно играть никакой роли...
25 mehfk
 
11.12.17
18:41
Ты что-то делаешь не так, скорее всего у тебя значения поля могут быть нечисловые.

http://ibb.co/mMh4zb
26 mehfk
 
11.12.17
18:43
Попробуй вот так:

Выбор
    Когда ТипЗначения(Остаток) <> Тип("Число")
        Тогда 0
    Когда Остаток < 0
        Тогда -Остаток
    Иначе Остаток
Конец
27 25-11
 
11.12.17
19:01
(25) Убедительно... Сейчас попробую.
28 25-11
 
11.12.17
19:05
(26) Круто! заработало! Спасибо!
Откуда там не NULL и не число - х.з., но получается, дело именно в этом.
AdBlock убивает бесплатный контент. 1Сергей