Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Волшебство программирования на 1С:Предприятие 7.7 и 8.0. Выпуск 103



Волшебство программирования на 1С:Предприятие 7.7 и 8.0
Выпуск 103 / 29.06.2006

Значения NULL в запросах
URL: http://www.kb.mista.ru/article.php?id=144

NULL – отсутствующие значения. Не равны пробелу, пустой ссылке, Неопределено.

NULL – типообразующее значение, т.е. существует тип NULL и единственное значение этого типа. (аналогично Неопределено)

NULL значения появляются в запросе в следующих ситуациях:

  • Внешнее соединение, при котором не было найдено соответствующей записи в другой таблице (при левом – во второй, при правом – в первой, при полном – в обоих)
  • Обращение к реквизитам элементов, определенных только для группы и наоборот.
  • Явно заданный литерал NULL в списке полей выборки (ВЫБРАТЬ)
  • Обращение к реквизитам для "битой" ссылки

Функция ЕСТЬNULL() предназначена для замены значения NULL на другое значение.
Является свёрнутым ВЫБОР…КОНЕЦ, но ЕСТЬNULL предпочтительнее.

ЕСТЬNULL (значение, РезультатЕслиNULL)

аналогично следующему:

ВЫБОР
КОГДА Значение ЕСТЬ NULL ТОГДА РезультатЕслиNULL
ИНАЧЕ Значение
КОНЕЦ

ЕСТЬNULL отличается от ВЫБОР по следующим причинам:

  • При ЕСТЬNULL лучше читается запрос (проще)
  • При ЕСТЬNULL, если проверяется сложно выражение, то работает быстрее, поскольку вычисляется один раз
  • При ЕСТЬNULL выражение замены приводится к типу проверяемого выражения, если оно имеет тип Строка (длина) или Число (разрядность).

Нельзя проверять значения на NULL обычным равенством, потому что в SQL действует трехзначная логика – Истина, Ложь, NULL, и результатом такого сравнения будет UNKNOWN, что в 1С 8.0 аналогично ЛОЖЬ.

NULL <> 0, поэтому при левых внешних соединениях спр. Номенклатура с таблицами остатков, цен, Контрагентов со взаиморасчетами при отсутствии таких записей там будет NULL, который не равен 0. Лучшее решение – ЕСТЬNULL


Интересные ветки форума www.forum.mista.ru

1С:Предприятие 7.7

v7: Синхронизация накладных между базами
v7: Что лучше? 1 регистр, но большой, или 3 маленьких?
v7: 1с++ Ускорение подбора, ТиС 9.2
v7: Как ищет в ТЗ НайтиЗначение()
v7: Установка 1C на Линукс

1С:Предприятие 8.0

v8: Сколько осталось жить семёрке?
v8: Drag-and-drop картинок на форме
v8: Известно, что у v7 проблемы со скор. при работе в сети, а как в v8?
v8: Ридеры магнитных карт или как организовать авторегистрацию посещений ?
v8: РегистрыНакопления и НаборЗаписей

Информационные технологии

IT: Уикэнд установки Linux. Поставил SuSE.
IT: поставил ось "FEDORA core"
IT: Хочу VPN сервер...
IT: Microsoft не поддержит новый открытый формат OpenDocument Format
IT: Delphi: Кто работал с сокетам? Заходи сюда!

О жизни...

LIFE: OFF: Как бороться с соседом-курильщиком?
LIFE: OFF: Абрамович купил Андрея Шевченко...
LIFE: OFF: Миста сделает меня знаменитым
LIFE: OFF: А про меня статью в газете нарисовали
LIFE: OFF: А я на выходных с моста прыгал!


Официальный сайт рассылки - www.mista.ru
Волшебный форум -
www.forum.mista.ru
Книга знаний - www.kb.mista.ru

С уважением,
Станислав Митичкин (Волшебник)
stasmit@mail.ru



В избранное