Проверить результат запроса на пустоту 1с

Обновлено: 06.07.2024

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. Проверку того, что результат выполнения запроса не содержит строк следует выполнять с помощью метода Пустой . Поскольку на получение выборки из результата запроса (выгрузка его в таблицу значений) будет затрачиваться дополнительное время.

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;

Возврат НЕ Запрос.Выполнить().Пустой()

Методическая рекомендация (полезный совет)

2. В то же время если требуется выбрать (или выгрузить) результат запроса, то предварительный вызов метода Пустой не требуется.
Например, вместо:

РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда // избыточный вызов
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
.

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
.

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

1с проверка на пустой реквизит в запросе

Проверка на NULL

Значение NULL возвращается в том случае, когда реквизита попросту нет. Тип в этом случае будет тоже NULL. Например, вы объединяете две таблицы через левое соединение. В том случае, когда для левой таблицы не будет найдено ни одного значения в правой, вернется NULL.

Проверку на данное значение можно осуществить при помощи конструкции «ЕСТЬ NULL» и «ЕСТЬNULL()». В первом случае возвращается Истина или Ложь. Во втором случае можно сразу задать другое значение в том случае, когда возвращается NULL.

В приведенном ниже запросе 1С 8.3 будут возвращен список контактных лиц тех партнеров, у кого не задан сегмент.

ВЫБРАТЬ
КонтактныеЛицаПартнеров.Ссылка
ИЗ
Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СегментыПартнеров КАК СегментыПартнеров
ПО КонтактныеЛицаПартнеров.Владелец = СегментыПартнеров.Родитель
ГДЕ
СегментыПартнеров.Ссылка ЕСТЬ NULL

Пустая дата

Проверка значения на пустую дату производится путем сравнения с конструкцией ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0). Пример использования приведен ниже:

ВЫБРАТЬ
Встреча.Ссылка
ИЗ
Документ.Встреча КАК Встреча
ГДЕ
Встреча.Дата = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

Пустая ссылка в запросе 1С

В случае, когда возвращаемый реквизит имеет ссылочный тип, например, это элемент какого-либо справочника, документа и т. п., используется следующая конструкция: ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка).

В приведенном ниже примере запрос выбирает всех партнеров, у которых не указан бизнес-регион.

ВЫБРАТЬ
Партнеры.Ссылка
ИЗ
Справочник.Партнеры КАК Партнеры
ГДЕ
Партнеры.БизнесРегион = ЗНАЧЕНИЕ(Справочник.БизнесРегионы.ПустаяСсылка)

Чтобы проверить на «ЗначениеЗаполнено» нужно сделать обратное условие:

Пустая строка

Для проверки строковых типов производится сравнение с другим образцом. В данном случае – «».

Приведенный ниже запрос отберет всех партнеров с незаполненным наименованием.

ВЫБРАТЬ
Партнеры.Ссылка
ИЗ
Справочник.Партнеры КАК Партнеры
ГДЕ
Партнеры.Наименование = «»

Рассмотрим основные методы использования пустых значений в условиях запросов 1С 8.3.

1с проверка на пустой реквизит в запросе

Проверка на NULL

выполняется с помощью конструкции ЕСТЬ NULL, например:

ВЫБРАТЬ
ВнутренниеЗаказыОстатки.Заказчик,
ВнутренниеЗаказыОстатки.КоличествоОстаток
ИЗ
РегистрНакопления.ВнутренниеЗаказы.Остатки КАК ВнутренниеЗаказыОстатки
ГДЕ
ВнутренниеЗаказыОстатки.КоличествоОстаток ЕСТЬ NULL

Получите 267 видеоуроков по 1С бесплатно:

Пустая дата в запросе 1С

Пустая дата в запросе устанавливается конструкцией ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0), пример:

ВЫБРАТЬ
СчетНаОплатуПокупателю.Ссылка,
СчетНаОплатуПокупателю.ДатаОтгрузки
ИЗ
Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
ГДЕ
СчетНаОплатуПокупателю.ДатаОтгрузки = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

Пустая ссылка (значение) в запросе 1С 8.2 и 8.3

Для ссылочных значений (справочники, документы, перечисления, планы счетов и т.д) для проверки необходимо использовать конструкцию «ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка)». Например:

ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)

Проверка на пустую строку в запросе 1С

В условиях для нахождения пустой строки необходимо использовать пустое значение строки — «», например:

Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

( голосов, в среднем: из 5)

Поддержите нас, расскажите друзьям!

СПРОСИТЕ в комментариях!

НЕ ПРАВИЛЬНО
//|РемонтныйЛист.Водитель3 НЕ ЗНАЧЕНИЕ (РемонтныйЛист.Водитель3.ПустаяСсылка)
ПРАВИЛЬНО
//|РемонтныйЛист.Водитель3 <> Значение(Справочник.Водители.ПустаяСсылка)

Где «Водители» имя справочника, тип которого имеет реквизит «Водитель3» (возможно сотрудники или физические лица)

Синтаксис не правильный так как я тока учусь:) спасибо большое. но водитель это реквизит не справочника а документа. имеет ли это значение?
а еще подскажите пожалуйста как вот на основании этого же запроса заполнить ячейки в отчете на пересечении водителя и даты необходимо поставить колво часов сколько он был в ремонте

РемонтныйЛист.Водитель3 — Это реквизит
Значение(Справочник.Водители.ПустаяСсылка) — это значение, которое вы передаете что бы наложить отбор, а Справочник.Водители — это ТИП реквизита РемонтныйЛист.Водитель3.

В конечном счете суть условия какая? Отобрать только те позиции, для которых выражение будет равняться ИСТИНА.

С этим я уже разобралась. вы правы были что это реквизит справочника Физические лица.у меня теперь проблема в том что он ругается на РемонтныйЛист.Проведен = Истина

Приветствую, коллеги! В данной статье поговорим о том, как сделать проверку на «пустое» значение в 1С. Ведь бывает, что программисту, когда он описывает алгоритм по обработке, нужно узнать есть ли что-то в переменной или эта переменная «пустая». Далее будет приведена классификация «пустых» значений и функции для проверки их наличия или отсутствия.

1. Значение «Неопределено» и значение типа “NULL”

Если разбираться по-научному, то в системе 1С не существует понятия «пустое» значение. Правильнее называть его значением «Неопределено» (переменная такого типа). Вышеупомянутый тип используют в качестве значения переменных (реквизитов, столбцов таблиц и так далее), у которых, согласно стандартным настройкам, тип является составным. То есть когда в одной переменной содержится какое-то количество типов значений, то данная переменная будет иметь тип «Неопределено». То есть, данной переменной можно присваивать вышеуказанное значение, как то, которое обозначает не принадлежность значения любому иному доступному типу. Данный тип остаётся, пока внутри переменной значение не переменится. Из всех утверждений выше следует, что тип «Неопределено» предупреждает о том, что в переменной отсутствует значение любого из определённых типов, простым слогом – оно «пустое».

Следует рассмотреть ещё значение типа «NULL» – его наличие означает, что значение отсутствует.

Подытожим: два данных значения – это специальные типы, предназначены для особых случаев.

В большем количестве типов есть стандартные значения, которые были установлены в системе по умолчанию, по сути это то значение, которое автоматически присваивается переменной даже в случае, когда её не заполнили. Как пример: для чисел – это будет значение «0», для даты – дата «00010101», для строк – строка без символов.

Замечание: для типа «ссылка» есть значение пустой ссылки.

2. Вариации проверок на пустое значение

Универсальный метод проверки применим в случаях, когда тип переменной известен или не известен.

В случае, когда разработчик знает тип переменной, которая подлежит проверке, проводится сравнение значения переменной с пустым значением для заданного типа. Чтобы узнать пустое значение у типа, используется функция «ПолучитьПустоеЗначение()». На скриншоте ниже приведён пример проверки с известным типом переменной:

Проверка на пустое значение с известным типом переменной

Рис. 1 Проверка на пустое значение с известным типом переменной

Если разработчику не известен тип переменной, но проверить на пустое значение нужно, используется функция «ПустоеЗначение()», как показано на скриншоте ниже:

Проверка на пустое значение с неизвестным типом переменной

Рис. 2 Проверка на пустое значение с неизвестным типом переменной

Функция «ЗначениеЗаполнено()» используется для проверки содержания значения, которое ей передали. Это можно увидеть по общей форме функции:

Функция ЗначениеЗаполнено

Рис. 3 Функция ЗначениеЗаполнено

Для типа «ссылка» проверка немного отличается от тех, которые были описаны выше. Чтобы узнать содержится ли в ссылке «пустое» значение нужно воспользоваться методом «ПустаяСсылка()». Работает он аналогично функции «ЗначениеЗаполнено()», только для ссылок.

В данной статье было рассмотрены общие понятия «пустое» значение в 1С и то, каким типам оно соответствует. Также были приведены 4 разных способа проверки на «пустое» значение, из которых можно легко избрать самый сподручный для конкретного типа и конкретного кода программы.

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

запрос

Проверка на NULL

Значение NULL возвращается в том случае, когда реквизита попросту нет. Тип в этом случае будет тоже NULL. Например, вы объединяете две таблицы через левое соединение. В том случае, когда для левой таблицы не будет найдено ни одного значения в правой, вернется NULL.

Проверку на данное значение можно осуществить при помощи конструкции «ЕСТЬ NULL» и «ЕСТЬNULL()». В первом случае возвращается Истина или Ложь. Во втором случае можно сразу задать другое значение в том случае, когда возвращается NULL.

В приведенном ниже запросе 1С 8.3 будут возвращен список контактных лиц тех партнеров, у кого не задан сегмент.

ВЫБРАТЬ
КонтактныеЛицаПартнеров.Ссылка
ИЗ
Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СегментыПартнеров КАК СегментыПартнеров
ПО КонтактныеЛицаПартнеров.Владелец = СегментыПартнеров.Родитель
ГДЕ
СегментыПартнеров.Ссылка ЕСТЬ NULL

Пустая дата

Проверка значения на пустую дату производится путем сравнения с конструкцией ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0). Пример использования приведен ниже:

ВЫБРАТЬ
Встреча.Ссылка
ИЗ
Документ.Встреча КАК Встреча
ГДЕ
Встреча.Дата = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

Пустая ссылка в запросе 1С

В случае, когда возвращаемый реквизит имеет ссылочный тип, например, это элемент какого-либо справочника, документа и т. п., используется следующая конструкция: ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка).

В приведенном ниже примере запрос выбирает всех партнеров, у которых не указан бизнес-регион.

ВЫБРАТЬ
Партнеры.Ссылка
ИЗ
Справочник.Партнеры КАК Партнеры
ГДЕ
Партнеры.БизнесРегион = ЗНАЧЕНИЕ(Справочник.БизнесРегионы.ПустаяСсылка)

Пустая строка

Получите понятные самоучители по 1С бесплатно:

Приведенный ниже запрос отберет всех партнеров с незаполненным наименованием.


Например, есть документ Продажа услуг, у которого есть реквизит Покупатель типа справочник контрагенты. Тогда в запросе через точку от реквизиту Покупатель можно обращаться к реквизитам контрагента:

ПродажаУслуг.Покупатель.Наименование КАК ПокупательНаименование ,

Разыменование поля в запросе

При этом будет выполнено неявное левое соединение с основной таблицей справочника Контрагенты. То есть запрос выше аналогичен такому запросу:

ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты

При этом если в документе не будет заполнен покупатель, то в полях ПокупательНаименование и ПокупательКод будет NULL.

ЕСТЬ NULL в запросе

С помощью оператора ЕСТЬ NULL можно проверить является ли значение NULL:

ПродажаУслуг.Покупатель.Наименование КАК ПокупательНаименование ,

Если покупатель в документе не заполнен, то запрос вернет следующий результат:

ЕСТЬ NULL в запросе

ЕСТЬ NULL можно использовать в условии:

Для проверки, что значение не равно NULL можно использовать ЕСТЬ НЕ NULL или НЕ ЕСТЬ NULL:

Функция ЕСТЬNULL в запросе

Например, в следующем запросе:

ЕСТЬNULL ( ПродажаУслуг.Покупатель.Код , "Поле равно NULL" ) КАК Код

В поле Код будет код покупателя, если покупатель заполнен в документе:

ЕСТЬNULL в запросе

ЕСТЬNULL в запросе

Битые ссылки в запросе

В заключении стоит отметить, что два значения NULL в запросе не будут равны друг другу. Сравнение с NULL в запросе всегда возвращает Ложь. NULL может быть получен при обращении к реквизитам группы справочника, у которых в настройках указано, что они используются только для элементов.

Читайте также: