Естьnull в запиті 1с 8

NULL - це не що інше, як відсутність значення. Багато хто плутає його із значенням «0» типу число, порожній посиланням на який-небудь об'єкт або ж з нового рядка. Через це помилки виникає багато помилок.

Значення NULL буде з'являтися в тому випадку, якщо в запиті буде звернення до неіснуючого полю, властивості або до битою посиланням.

Мова запитів в 1С заснований на SQL, який не дозволяє перевіряти на значення NULL звичайним рівністю. Нижче описані два способи перевірки на NULL в 1С 8.3.

Естьnull в запиті 1с 8

Функція ЕСТЬNULL ()

Функція мови запитів 1С 8.3 ЕСТЬNULL () має два вхідних параметра:

  • перевіряється вираз;
  • вираз заміни.

Якщо перевіряється значення буде NULL, то ця функція поверне значення виразу заміни. Якщо ж значення буде відмінно від NULL, то повернеться саме перевіряється вираз.

Нижче розглянуто приклад. У ньому вибираються всі номенклатурні позиції табличній частини товару з документа «Надходження товарів і послуг». За допомогою лівої з'єднання кожної номенклатурі проставляється остання ціна з регістра відомостей «Ціни номенклатури».

В даному випадку може виникнути така ситуація, що для будь-якої позиції може просто не бути ціни в регістрі. У такому випадку функція ЕСТЬNULL поверне нам звичний нуль. Якщо їй не скористатися, то при спробі провести арифметичні операції над полем «Ціна» зі значенням NULL ми отримаємо помилку.

Є NULL в операторі ВИБІР

Аналогом функції ЕСТЬNULL () є «Є NULL», яка використовується в операторі ВИБІР і перевіряє, чи є значення NULL. «Є» в даному випадку мається на увазі рівність і запит попереднього прикладу буде виглядати наступним чином:

Відмінності функції ЕСТЬNULL () від ЕСТЬ NULL

Як ви могли побачити з попередніх прикладів, в обох випадках запит повертає одні й ті ж дані. Функція ЕСТЬNULL () є скороченим варіантом ВИБІР КОЛИ ... Є NULL ... КІНЕЦЬ, але вона все ж буде краще з наступних причин:

  1. Функція EСТЬNULL () оптимізує запит. Вона зчитується один раз, тому при перевірці складного вираження, запит відпрацює швидше.
  2. Функція EСТЬNULL () скорочує конструкцію, за рахунок чого запит стає більш Новомосковскбельним.
  3. При виконанні функції EСТЬNULL () вираз заміни приводиться до типу перевіряється виразу для типів строкових типів (до довжини рядка) і числових (до розрядності).