|
Банальное преобразование значения к типу число. | ☑ | ||
---|---|---|---|---|
0
antihacker
13.07.16
✎
06:04
|
Всем привет !
ЗапросИтогоКоличествоВозврат = Новый Запрос; ЗапросИтогоКоличествоВозврат.Текст = "ВЫБРАТЬ |СУММА(ЕСТЬNULL(ПартииТоваровНаСкладах.Количество,0)) КАК СуммаКоличество |ИЗ |РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах |ГДЕ |ПартииТоваровНаСкладах.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя |И ПартииТоваровНаСкладах.Склад = &Склад |И ПартииТоваровНаСкладах.Количество ЕСТЬ НЕ NULL |И ПартииТоваровНаСкладах.Номенклатура = &Номенклатура"; ЗапросИтогоКоличествоВозврат.УстановитьПараметр("Номенклатура",ТекСтрока.Номенклатура); ЗапросИтогоКоличествоВозврат.УстановитьПараметр("Склад",ЭтотОбъект.СкладПокупателя); РезЗапросИтогоКоличествоВозврат = ЗапросИтогоКоличествоВозврат.Выполнить().Выбрать(); Пока РезЗапросИтогоКоличествоВозврат.Следующий() Цикл ИтогКолВозврат = РезЗапросИтогоКоличествоВозврат.СуммаКоличество*-1; // КонецЦикла; Пишет Преобразование значения к типу Число не может быть выполнено ИтогКолВозврат = РезЗапросИтогоКоличествоВозврат.СуммаКоличество*-1; Но при этом сообщить(ИтогКолВозврат) показывает -3. То есть он рельно приумножил на минус один и сделал отрицательное число. Так вроде преобразовывает. Не могу понять. |
|||
1
zsergey
13.07.16
✎
06:09
|
что-то не договариваешь :)
|
|||
2
zsergey
13.07.16
✎
06:10
|
в запросе не может быть у количества null, там только число, значит и ошибки преобразования не должно быть...
|
|||
3
impulse9
13.07.16
✎
06:12
|
На NULL надо проверять только при соединениях таблиц
|
|||
4
antihacker
13.07.16
✎
06:14
|
zsergey, я так для страховки. А так в начле кода написал еще ИтогКолВозврат = 0;
impulse9, ты о том что это лишнее телодвижение ? |
|||
5
Лодырь
13.07.16
✎
06:20
|
Дружище, прошу тебя, не пиши пожалуйста конструкции аля ЧтоТо*-1
Пиши -1*ЧтоТо или ЧтоТо*(-1) |
|||
6
impulse9
13.07.16
✎
06:20
|
(4) да, лишнее.
Ну и надо делать запрос к виртуальной таблице оборотов, а не к физической, чтобы работала быстрее |
|||
7
antihacker
13.07.16
✎
06:28
|
Лодырь, и так пробовал. Результат не меняеться.
|
|||
8
antihacker
13.07.16
✎
06:33
|
Опять клюу конфиги ?
|
|||
9
antihacker
13.07.16
✎
06:36
|
А можно как то в запросе изменить на минусовое число ?
|
|||
10
catena
13.07.16
✎
06:36
|
Это не весь код. Кажется это запрос в цикле...
|
|||
11
Лодырь
13.07.16
✎
06:38
|
(7) Результат и не должен изменится, а мозгу будет проще.
|
|||
12
GROOVY
13.07.16
✎
07:00
|
(10) +100500, и "ЭтотОбъект" доставляет....
|
|||
13
GROOVY
13.07.16
✎
07:00
|
А ошибка в том, что текущей строки нет.
|
|||
14
catena
13.07.16
✎
07:02
|
(13)Я ставлю на NULL, который из запроса пришел...
|
|||
15
GROOVY
13.07.16
✎
07:04
|
(14) Ага, он по условию и пришел.
|
|||
16
antihacker
13.07.16
✎
07:06
|
ВЫ про какой NULL ? ЕСТЬNULL или ЕСТЬ НЕ NULL ?
|
|||
17
GROOVY
13.07.16
✎
07:10
|
Я про функцию СУММА в запросе.
|
|||
18
catena
13.07.16
✎
07:10
|
(16) ЕСТЬNULL, ЕСТЬ НЕ NULL, а есть еще совсем-совсем NULL, который из группировки пустого места получается.
|
|||
19
YurAnt
13.07.16
✎
07:11
|
конкретно с подобной ситуацией не сталкивался, но поигрался бы с ней например как-нибудь так
|И ПартииТоваровНаСкладах.Количество ЕСТЬ НЕ NULL в ЕСТЬNULL(ПартииТоваровНаСкладах.Количество,0) <> 0 Кроме того почему то имхается мне, что конструктор должен был сделать не |И ПартииТоваровНаСкладах.Количество ЕСТЬ НЕ NULL а |И НЕ ПартииТоваровНаСкладах.Количество ЕСТЬ NULL Для верности еще б и скобок воткнул, хотя вроде ни на что повлиять не должно. (но как уже писали - мозгу проще) |
|||
20
YurAnt
13.07.16
✎
07:13
|
(19) + хотя тут конечно вопрос в том, нужны ли нулевые значения (которые 0 а не NULL)
|
|||
21
alkov
13.07.16
✎
07:15
|
Сумма() по пустой таблице даст NULL
|
|||
22
GROOVY
13.07.16
✎
07:15
|
И для уверенности Количество НЕ = Есть NULL
|
|||
23
dmpl
13.07.16
✎
07:58
|
(5) А может просто писать -ЧтоТо?
|
|||
24
DimVad
13.07.16
✎
08:03
|
(0) А если, скажем, так:
1. Остановиться в отладчике перед циклом. 2. Включить галочку "останавливаться по ошибке". 3. Посмотреть значение "РезЗапросИтогоКоличествоВозврат.СуммаКоличество" как вылетим... Там скорее всего таки Null будет... |
|||
25
Рэйв
13.07.16
✎
08:15
|
(0)Давно бы уже выполнил запрос в консоли и посмотрел что там у тебя лежит и почему не складывает
|
|||
26
antihacker
13.07.16
✎
12:05
|
alkov , ты попал в точку. Как исправить ? Там по ходу РезЗапросИтогоКоличествоВозврат.Количество()равно 1. Хотя нет никаких возвратов. Вот с этогои коск идет.
Как нужно писать запрос что бы свершилось РезЗапросИтогоКоличествоВозврат.Количество() = 0 когда нет никаких возвратов ? |
|||
27
Nuobu
13.07.16
✎
12:07
|
(26) добавить фиктивное поле в запрос.
|
|||
28
Лодырь
13.07.16
✎
13:20
|
(23) При -1 возможно, если другое отрицательное число, то лучше написать понятнее. Потом читать все это дело. Возможно вам самим через пару лет.
|
|||
29
dmpl
13.07.16
✎
18:46
|
(28) Что может быть понятнее унарного минуса?
|
|||
30
Азазелло
13.07.16
✎
21:48
|
(0) Это замечательная особенность агрегатных функций, по крайней мере в t-sql. За подробностями - на msdn.
Попробуй сделать ВЫБРАТЬ СУММА(Поле) ИЗ Таблица , где в Таблице нет ни одной строки. И посмотри на результат. Правильно: ВЫБРАТЬ ЕСТЬNULL(СУММА(Поле)) ИЗ Таблица |
|||
31
Азазелло
13.07.16
✎
21:49
|
(30) Не увидел комментария (21)
|
|||
32
mistеr
13.07.16
✎
22:27
|
(26) Исправить так. Вместо
СУММА(ЕСТЬNULL(ПартииТоваровНаСкладах.Количество,0)) писать ЕСТЬNULL(СУММА(ПартииТоваровНаСкладах.Количество),0) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |