Имя: Пароль:
1C
1С v8
Даж не знаю как вопрос задать
↓ (Волшебник 07.06.2014 01:06)
0 lamme
 
07.06.14
00:49
Вот запрос ...

"ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    ЗаказыПокупателейОстаткиИОбороты.Номенклатура КАК Номенклатура,
|    СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоОборот) КАК Запланировано,
|    СУММА(ЭтоОстатки.КоличествоОстаток) КАК Остаток,
|    СУММА(ЭтоРезервы.КоличествоОстаток) КАК ВРезерве,

|    ВЫБОР
|        КОГДА СУММА(ЭтоРезервы.КоличествоОстаток) = &ноль
|                ИЛИ СУММА(ЭтоРезервы.КоличествоОстаток) = &NULL  тогда
|                    10  ИНАЧЕ  
|                    20
|
|    КОНЕЦ КАК СвободныйОстаток,
...
В запросе есть условие - Выбор Когда .. ТОгда 10 Иначе 20 Конец.

как правильно надо написать условие - чтобы было в итоге запроса 10
(сейчас постоянно 20 )

)
1 Drac0
 
07.06.14
00:53
&ноль, &NULL ?!
2 NcSteel
 
07.06.14
00:54
на  null проверять следует так:

Выбор ПолеЗапроса is Null Когда ....
3 Drac0
 
07.06.14
00:55
А так любая логическая операция с Null возвращает ложь. Используй ЕСТЬ NULL.
4 lamme
 
07.06.14
00:55
ну дык .. вот и гадаю.
там надо - если ЭтоРезервы.КоличествоОстаток =0 тогда 10 иначе 20

как в запросе прально это прописать ?
5 1cVandal
 
07.06.14
00:55
)))))
6 lamme
 
07.06.14
00:56
Спасибо
7 1cVandal
 
07.06.14
00:56
(4) ВЫБОР
|        КОГДА СУММА( ЕстьNull(ЭтоРезервы.КоличествоОстаток,0)) = 0          
|                    10  ИНАЧЕ  
|                    20
8 Drac0
 
07.06.14
00:57
Правильно писать ЕСТЬNULL(СУММА(ЭтоРезервы.КоличествоОстаток),0)=0
9 lamme
 
07.06.14
00:58
8
почему так праивлньо?
10 Drac0
 
07.06.14
01:01
(9) Потому что если в поле может быть NULL, возвращать его в результате запроса сильно некошерно. Надо сразу приводить к пустому значению типа. В условии убирается лишнее ИЛИ, и короче.
11 lamme
 
07.06.14
09:33
В продолжение.

Теперь есть такое

|    СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоОборот) КАК Запланировано,


|    ВЫБОР
|         КОГДА СУММА( ЕстьNull(ЭтоРезервы.КоличествоОстаток,0)) = 0 Тогда
|             СУММА(ЭтоОстатки.КоличествоОстаток)  
|        ИНАЧЕ  
|            СУММА(ЭтоОстатки.КоличествоОстаток - ЭтоРезервы.КоличествоОстаток)
|    КОНЕЦ КАК СвободныйОстаток,

т.е. в запросе определяются 2 поля
СвободныйОстаток и Запланировано

Надо определить еще одно поле по такой логике

Если (Запланировано - СвободныйОстаток )<0 тогда 0 иначе (Запланировано - СвободныйОстаток )
===========================

и тут начинаю опять не понимать (((

Выбор Когда
(Запланировано - <<ЧтоТутПисатьПравильно?>>)<0 тогда
0
иначе
(Запланировано - <<ЧтоТутПисатьПравильно?>>)
конец
12 lamme
 
07.06.14
09:52
закрыли вопрос
конструктор запросов помог
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший