Имя: Пароль:
1C
1С v8
Борьба с пустой строкой с значением NULL в запросе
0 bfss-732
 
24.01.24
10:23
Внизу запрос, который выводит две строки, одна с нужным значением (Сумма из регистра накопления), а ниже пустая строка с значением NULL. Вроде к отборе проверка на ЕСТЬ NULL делаю, все равно выводится пустая строка. Как убрать её?


...ТОГДА НЕ ПрочиеРасходы.Сумма ЕСТЬ NULL... тоже делал, не помогает.

p.s. Не спрашивайте почему не делаю запрос к виртуальным таблицам - так надо.
ВЫБРАТЬ
    ВЫБОР
        КОГДА ПрочиеРасходы.Подразделение В (&ПодразделениеМытКон)
                И ПрочиеРасходы.СтатьяРасходов В (&СтатьяРасходовОсновнаяЗаработнаяПлата)
                И ПрочиеРасходы.НастройкаХозяйственнойОперации В (&НастройкаХозяйственнойОперацииОтражЗарабПлат)
            ТОГДА ПрочиеРасходы.Сумма
    КОНЕЦ КАК РаспределениеНа20Счет
ИЗ
    РегистрНакопления.ПрочиеРасходы КАК ПрочиеРасходы
ГДЕ
    ПрочиеРасходы.Период = &Период
    И НЕ ПрочиеРасходы.Сумма ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    ВЫБОР
        КОГДА ПрочиеРасходы.Подразделение В (&ПодразделениеМытКон)
                И ПрочиеРасходы.СтатьяРасходов В (&СтатьяРасходовОсновнаяЗаработнаяПлата)
                И ПрочиеРасходы.НастройкаХозяйственнойОперации В (&НастройкаХозяйственнойОперацииОтражЗарабПлат)
            ТОГДА ПрочиеРасходы.Сумма
    КОНЕЦ
1 SleepyHead
 
24.01.24
10:24
Не хватает секции ИНАЧЕ в конструкции ВЫБОР
2 bfss-732
 
24.01.24
10:26
(1) так ИНАЧЕ надо если есть еще условие, а у меня нет
3 SleepyHead
 
24.01.24
10:27
(2) а у тебя что должно быть вместо ПрочиеРасходы.Сумма, если не  выполняется условие после КОГДА ?
4 bfss-732
 
24.01.24
10:27
(3) кажется понимаю и туда воткнуть проверку на NULL?
5 SleepyHead
 
24.01.24
10:30
(4) а что ты там будешь сравнивать с NULL?

Какой я нетерпеливый. Ладно, сдаюсь. Считаю, что если условие после КОГДА не выполняется, должен быть 0

ВЫБОР КОГДА условие ТОгда Прочиерасходы.Сумма Иначе 0 КОНЕЦ

А у тебя NULL получается именно потому, что условие не выполняется. А что должно быть в этом случае - не прописано.
6 bfss-732
 
24.01.24
10:31
(5) Если после ИНАЧЕ 0 ставлю, запрос не выполняется
"Неизвестный идентификатор формы"
7 bfss-732
 
24.01.24
10:35
(6) Консоль типовая глючила, на другой все нормально, НО строка осталась с 0.
8 asady
 
24.01.24
10:48
ВЫБРАТЬ
    ПрочиеРасходы.Сумма КАК РаспределениеНа20Счет
ИЗ
    РегистрНакопления.ПрочиеРасходы КАК ПрочиеРасходы
ГДЕ
    ПрочиеРасходы.Период = &Период
  И ПрочиеРасходы.Подразделение В (&ПодразделениеМытКон)
    И ПрочиеРасходы.СтатьяРасходов В (&СтатьяРасходовОсновнаяЗаработнаяПлата)
                И ПрочиеРасходы.НастройкаХозяйственнойОперации В (&НастройкаХозяйственнойОперацииОтражЗарабПлат)
9 bfss-732
 
24.01.24
10:48
Все, вопрос закрыт.
Сделал через временную таблицу без ИНАЧЕ. Спасибо!!!
10 bfss-732
 
24.01.24
10:50
(8) Кстати тоже отличный вариант, но не для меня. У меня огромный будет запрос, и такая схема не подойдёт.


Самое плохое что не все есть суммы в виртуальны таблицах рег Накоплен, а вот если брать физическую, то все.
11 Dmitrii
 
24.01.24
10:52
(0) перенеси условие из конструкции ВЫБОР в условие ГДЕ.


ВЫБРАТЬ
    СУММА(ПрочиеРасходы.Сумма) КАК РаспределениеНа20Счет
ИЗ
    РегистрНакопления.ПрочиеРасходы КАК ПрочиеРасходы
ГДЕ
    ПрочиеРасходы.Период = &Период
    И ПрочиеРасходы.Подразделение В (&ПодразделениеМытКон)
    И ПрочиеРасходы.СтатьяРасходов В (&СтатьяРасходовОсновнаяЗаработнаяПлата)
    И ПрочиеРасходы.НастройкаХозяйственнойОперации В (&НастройкаХозяйственнойОперацииОтражЗарабПлат)
12 Dmitrii
 
24.01.24
10:56
(7) >> строка осталась с 0.

Конечно она останется. Куда бы ей деться?
Надо либо суммировать СУММА(ПрочиеРасходы.Сумма), либо условие ставить в ГДЕ, чтобы строк с 0 не осталось.
13 bfss-732
 
24.01.24
10:56
(11) Спасибо!
Но у меня будет 12 колонок с разными условиями и разными параметрами. Я только одну колонку вывел, это начало. Ваш вариант точно не подойдет.
14 bfss-732
 
24.01.24
10:57
(12) Сумма не подойдёт, только группировка.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший