Имя: Пароль:
1C
1С v8
исключение значения NULL в вычисляемых полях
0 LivingStar
 
08.08.12
06:30
в основном запросе пакетного запроса, есть 3 вычисляемых поля с псевдонимами, мне нужно на них наложить условие что бы не вибирались записи где в каждом из них значится значение NULL, так как это не поля запроса условие на них не задать, как это сделать можно?
1 Галахад
 
гуру
08.08.12
06:32
А откуда Null берется?
2 LivingStar
 
08.08.12
06:35
(1) в этих полях ставится значение 1 если соответствует условию, если нет соответственно тама NULL, и их очень много и они не нужны эти записи вот и хочу их убрать из запроса, похоже нужно делать ещё один основной, а этот ложить в пакет, тогда и можно будет на них задать условие при выборе из виртуальной таблицы
3 LivingStar
 
08.08.12
06:38
что то пока вообще ничего не выбрал, когда наложил условие на эти 3 поля...
4 Speshuric
 
08.08.12
06:39
(0)(2)(3) Текст в студию!
5 SeraFim
 
08.08.12
06:41
у ДенисЧ появился конкурент! Продам СП! Дешево! да-да, демпинг ;)
6 LivingStar
 
08.08.12
06:41
ВЫБРАТЬ
   Абоненты.Ссылка,
   Абоненты.Подразделения
ПОМЕСТИТЬ ВТ_Абонент
ИЗ
   Справочник.Абоненты КАК Абоненты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗначенияСвойствОбъектовСрезПоследних.Объект,
   ЗначенияСвойствОбъектовСрезПоследних.Свойство,
   ЗначенияСвойствОбъектовСрезПоследних.Значение
ПОМЕСТИТЬ ВТ_Нелегальщик
ИЗ
   РегистрСведений.ЗначенияСвойствОбъектов.СрезПоследних(&ДатаВыбора, ) КАК ЗначенияСвойствОбъектовСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗначенияСвойствОбъектовСрезПоследних.Объект,
   ЗначенияСвойствОбъектовСрезПоследних.Свойство,
   ЗначенияСвойствОбъектовСрезПоследних.Значение
ПОМЕСТИТЬ ВТ_Участок
ИЗ
   РегистрСведений.ЗначенияСвойствОбъектов.СрезПоследних(&ДатаВыбора, ) КАК ЗначенияСвойствОбъектовСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_Абонент.Ссылка КАК Абонент,
   ВТ_Абонент.Подразделения КАК Подразделение,
   ВТ_Нелегальщик.Свойство КАК Нелегальщик,
   ВТ_Нелегальщик.Значение КАК НелегальщикЗначение,
   ВТ_Участок.Свойство КАК Участок,
   ВЫБОР
       КОГДА НЕ ВТ_Участок.Значение.Наименование ПОДОБНО "%Несанкционирован%"
           ТОГДА "заключен"
       ИНАЧЕ "незаключен"
   КОНЕЦ КАК СостояниеДоговора,
   ВТ_Участок.Значение КАК УчастокЗначение,
   ВЫБОР
       КОГДА ВТ_Участок.Значение.Наименование ПОДОБНО "%Несанкционирован%"
           ТОГДА ВЫБОР
                   КОГДА ВТ_Нелегальщик.Свойство = &Нелегальщик
                       ТОГДА 1
               КОНЕЦ
   КОНЕЦ КАК Нелегал,
   ВЫБОР
       КОГДА НЕ ВТ_Участок.Значение.Наименование ПОДОБНО "%Несанкционирован%"
           ТОГДА ВЫБОР
                   КОГДА ВТ_Нелегальщик.Свойство = &Нелегальщик
                       ТОГДА 1
               КОНЕЦ
   КОНЕЦ КАК НелегалСДоговором,
   ВЫБОР
       КОГДА ВТ_Участок.Значение.Наименование ПОДОБНО "%Несанкционирован%"
           ТОГДА ВЫБОР
                   КОГДА ВТ_Нелегальщик.Свойство <> &Нелегальщик
                       ТОГДА 1
               КОНЕЦ
   КОНЕЦ КАК НаПроверку
ПОМЕСТИТЬ ЗапросПакета4
ИЗ
   ВТ_Абонент КАК ВТ_Абонент
       ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Нелегальщик КАК ВТ_Нелегальщик
       ПО ВТ_Абонент.Ссылка = ВТ_Нелегальщик.Объект
       ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Участок КАК ВТ_Участок
       ПО ВТ_Абонент.Ссылка = ВТ_Участок.Объект
ГДЕ
   ВТ_Нелегальщик.Значение = ИСТИНА
   И ВТ_Участок.Свойство = &Участок
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗапросПакета4.Абонент,
   ЗапросПакета4.Подразделение,
   ЗапросПакета4.Нелегальщик,
   ЗапросПакета4.НелегальщикЗначение,
   ЗапросПакета4.Участок,
   ЗапросПакета4.СостояниеДоговора,
   ЗапросПакета4.УчастокЗначение,
   ЗапросПакета4.Нелегал,
   ЗапросПакета4.НелегалСДоговором,
   ЗапросПакета4.НаПроверку
ИЗ
   ЗапросПакета4 КАК ЗапросПакета4
ГДЕ
   ЗапросПакета4.Нелегал <> NULL
   ИЛИ ЗапросПакета4.НелегалСДоговором <> NULL
   ИЛИ ЗапросПакета4.НаПроверку <> NULL
7 LivingStar
 
08.08.12
06:42
(4)
не выбирает, ни так

ГДЕ
   ЗапросПакета4.Нелегал               <> NULL
   ИЛИ ЗапросПакета4.НелегалСДоговором <> NULL
   ИЛИ ЗапросПакета4.НаПроверку        <> NULL

ни так

ГДЕ
   ЗапросПакета4.Нелегал               = NULL
   ИЛИ ЗапросПакета4.НелегалСДоговором = NULL
   ИЛИ ЗапросПакета4.НаПроверку        = NULL
8 SeraFim
 
08.08.12
06:43
Открой для себя ЕСТЬ NULL. Сравнивать с NULL нельзя
9 LivingStar
 
08.08.12
06:44
(8) то есть обработать на ЕСТЬNULL а потом уже сверять с "" к примеру? сейчас попробую...
10 SeraFim
 
08.08.12
06:49
Еще раз - читай справку.
Суть функция:

Функция ЕСТЬNULL
Функция предназначена для замены значения NULL на другое значение.

Параметры функции:

Первый параметр — выражение любого типа

Второй параметр — выражение любого типа

Возвращаемое значение: значение первого параметра, в случае, если первый параметр не содержит значение NULL, значение второго параметра в противном случае.

Второй параметр будет преобразован к типу первого в случае, если тип первого параметра является строкой или числом.


а есть оператор
Оператор проверки значения на NULL
Оператор ЕСТЬ NULL позволяет проверить значение выражения слева от него на NULL. Если значение равно NULL – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ. Применение НЕ изменяет действие оператора на обратное.
11 Chai Nic
 
08.08.12
07:03
(10) Интересно, а почему авторы 1с в конструкции "IS NULL" перевели IS, а NULL оставили?
12 Ненавижу 1С
 
гуру
08.08.12
07:05
(11) потому что тогда бы его следовало перевести как Неопределено, но его они уже придумали
13 Chai Nic
 
08.08.12
07:55
(12) Тогда не надо было переводить вообще.. математические функции (sin,cos и т.д.) ведь не переводили.