Как в запросе проверить реквизит на пустое значение 1с

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

запрос

Проверка на NULL

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

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

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

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

Пустая дата

Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.

Связаться с нами можно по телефону +7 499 350 29 00.

Услуги и цены можно увидеть по ссылке.

Будем рады помочь Вам!

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

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

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

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

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

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

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

Партнеры.БизнесРегион <> ЗНАЧЕНИЕ(Справочник.БизнесРегионы.ПустаяСсылка)

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

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

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

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

На чтение 5 мин. Просмотров 3.5k. Опубликовано 15.12.2019

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

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

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

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

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

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

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

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

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

Проверка на NULL

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

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

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

Содержание

  1. Пустая дата в запросе 1С
  2. Пустая ссылка (значение) в запросе 1С 8.2 и 8.3
  3. Проверка на пустую строку в запросе 1С
  4. Проверка на NULL
  5. Пустая дата
  6. Пустая ссылка в запросе 1С
  7. Пустая строка

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

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

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

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

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

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

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

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

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

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

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

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

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

Запрос1.Текст = «ВЫБРАТЬ
|РемонтныйЛист.Номер,
|РемонтныйЛистМатериалыЗамена.ДатаРемонта,
|РемонтныйЛист.Проведен,
|РемонтныйЛист.Водитель1,
|РемонтныйЛист.Водитель2,
|РемонтныйЛист.Водитель3,
|РемонтныйЛистМатериалыЗамена.КолвоЧасов
|ИЗ
|Документ.РемонтныйЛист.МатериалыЗамена КАК РемонтныйЛистМатериалыЗамена
|ЛЕВОЕ СОЕДИНЕНИЕ Документ.РемонтныйЛист КАК РемонтныйЛист
|ПО РемонтныйЛистМатериалыЗамена.Ссылка = РемонтныйЛист.Ссылка
|ГДЕ
//|РемонтныйЛистМатериалыЗамена.ДатаРемонта >= Значение(«ДатаНач») И РемонтныйЛистМатериалыЗамена.ДатаРемонта = Значение(“ДатаНач”)
ПРАВИЛЬНО
//|РемонтныйЛистМатериалыЗамена.ДатаРемонта >= &ДатаНач

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

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

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

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

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

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

В этой статье будут рассмотрены способы проверки на пустое значение в зависимости от типа проверяемого реквизита в запросе 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С 8. Как указать пустую дату, пустую строку или пустую ссылку в языке запросов – читайте далее.

Содержание

//любое пустое значение можно задать в виде параметра
//Ниже пример запроса, который возвращает пустые значения, переданные в качестве параметра
Запрос = Новый Запрос("ВЫБРАТЬ
|	&ПустаяДата КАК ПустаяДата,
|	&ПустаяСтрока КАК ПустаяСтрока,
|	&ПустаяСсылкаНаТовар КАК ПустаяСсылкаНаТовар,
|	&ПараметрNULL КАК ПараметрNULL,
|	&ПараметрНеопределено КАК ПараметрНеопределено");
Запрос.УстановитьПараметр("ПустаяДата", Дата(1,1,1));
Запрос.УстановитьПараметр("ПустаяСтрока", "");
Запрос.УстановитьПараметр("ПустаяСсылкаНаТовар", Справочники.Товары.ПустаяСсылка());
Запрос.УстановитьПараметр("ПараметрNULL", Null);
Запрос.УстановитьПараметр("ПараметрНеопределено", Неопределено);

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

//Кроме того, пустые значения можно задать непосредственно в запросе
//Для формирования пустой даты используется конструкция ДатаВремя(1,1,1)
//Пустая строка заключается в двойные кавычки
//Пустая ссылка устанавливается при помощи оператора Значение

// Запрос возвращает документы установки цен с пустой датой утверждения
Запрос = Новый Запрос("ВЫБРАТЬ
|	УстановкаЦен.Ссылка КАК Ссылка
|ИЗ
|	Документ.УстановкаЦен КАК УстановкаЦен
|ГДЕ
|	УстановкаЦен.ДатаУтверждения = ДАТАВРЕМЯ(1, 1, 1)");

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

//Запрос вернет все документы установки цен, где не заполнен комментарий
Запрос = Новый Запрос("ВЫБРАТЬ
|	УстановкаЦен.Ссылка КАК Ссылка
|ИЗ
|	Документ.УстановкаЦен КАК УстановкаЦен
|ГДЕ
|	УстановкаЦен.Комментарий = """"");

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

// Запрос вернет все товары, у которых не заполнен основной поставщик
Запрос = Новый Запрос("ВЫБРАТЬ
|	Товары.Ссылка КАК Ссылка
|ИЗ
|	Справочник.Товары КАК Товары
|ГДЕ
|	Товары.ОсновнойПоставщик = Значение(Справочник.Контрагенты.ПустаяСсылка)");

Проверка на NULL в запросе

Значение типа NULL может появиться в результате использования соединений, либо при обращении к недоступным реквизитам (реквизиты групп у элементов и реквизиты элементов у групп будут иметь тип NULL)

//Запрос вернет все товары, по которым нет остатков на складе
Запрос = Новый Запрос("ВЫБРАТЬ
|	Товары.Ссылка КАК Ссылка
|ИЗ
|	Справочник.Товары КАК Товары
|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки
|		ПО ОстаткиТоваровОстатки.Товар = Товары.Ссылка
|ГДЕ
|	ОстаткиТоваровОстатки.Товар ЕСТЬ NULL");

как проверить в запросе на пустое значение составного типа ?

Я
   Длинный Клиент

29.05.12 — 15:29

Реквизит документа «Реализация» «Проект». Составной тип. 2 справочника.

Как в запросе выбрать «Реализации, у которых «Проект» пустой ?

  

Партнерская программа EFSOL Oblako

   Reset

1 — 29.05.12 — 15:30

вроде так сработать должно Проект=Неопределено, проверь

   ptiz

2 — 29.05.12 — 15:32

Возможно 3 варианта:

1) неопределено

2) пустое значение первого типа

3) пустое значение второго типа

Если тип реквизита «справочник» двух типов, то можно так:

ГДЕ Реализация.Проект.Код ЕСТЬ NULL

   Vakhrin

3 — 29.05.12 — 15:32

как вариант )

ВЫБРАТЬ

   БанковскиеСчета.Ссылка

ИЗ

   Справочник.БанковскиеСчета КАК БанковскиеСчета

ГДЕ

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

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

   shuhard

4 — 29.05.12 — 15:36

(2) +1

   ParinovS

5 — 29.05.12 — 15:40

ГДЕ Реализация.Проект = &ЗначениеПустойССылки1 ИЛИ ГДЕ Реализация.Проект = &ЗначениеПустойССылки2 ИЛИ Реализация.Проект ЕСТЬ NULL

   hhhh

6 — 29.05.12 — 15:51

(5) не NULL, а Реализация.Проект = НЕОПРЕДЕЛЕНО . Голова — два уха.

   Ненавижу 1С

7 — 29.05.12 — 15:52

попались, красавчеги?

   ptiz

8 — 29.05.12 — 15:54

Как можно NULL и Неопределено перепутать — не понимаю! Абсолютно разные вещи.

   fisher

9 — 29.05.12 — 15:55

(7)(8) Нет! Только не это :)

   Ненавижу 1С

10 — 29.05.12 — 15:57

(8) одна из них — лишний костыль

   Fragster

11 — 29.05.12 — 15:58

Проект.Ссылка Есть NULL

   PR

12 — 29.05.12 — 15:59

(10) В мозгу у тебя костыль.

Еще срач раздуй опять :))

   Ненавижу 1С

13 — 29.05.12 — 16:00

представьте ситуацию, жил-был реквизит, простого ссылочного типа

в запросах была честная проверка на (не)равенство пустой ссылки

и вот вот однажды тип стал составным

как славно же ))

   Ненавижу 1С

14 — 29.05.12 — 16:01

(12) еще забань меня, просто ты не видел ничего кроме 1С

   Fragster

15 — 29.05.12 — 16:01

(13) я с таким сталкивался… весело, да

   Ranger_83

16 — 29.05.12 — 16:08

может так:

НЕ РеализацияТоваровУслуг.Проект.Ссылка Есть NULL

   shuhard

17 — 29.05.12 — 16:10

(16) нет, нет и нет

(13) нормальная для УПП ситуация

когда половина документов пишет пустую ссылку, а половина Неопределено

   Ranger_83

18 — 29.05.12 — 16:11

   Feanor

19 — 29.05.12 — 16:11

(13) а как по-фэншую в этих случаях должно быть?

   shuhard

20 — 29.05.12 — 16:11

(18) я не думаю, я знаю =)

   Fragster

21 — 29.05.12 — 16:12

на самом деле пустая ссылка должна быть без типа, типа 0000000000000000000 и пустая ссылка любого типа равна этой мета-пустой ссылке

   fisher

22 — 29.05.12 — 16:12

Да ну нафиг. Лучше сложная проверка, чем лишнее соединение.

   Ranger_83

23 — 29.05.12 — 16:13

(20)Интригант

   Feanor

24 — 29.05.12 — 16:14

(21) а если в типах не тока ссылки?

   ptiz

25 — 29.05.12 — 16:19

(16) Да, так правильнее.

   Infsams654

26 — 29.05.12 — 16:22

(7)(24)+ попались апологеты, а если еще это вспомним v8: Как в запросе проверить на пустую строку?

   H A D G E H O G s

27 — 29.05.12 — 16:23

(21) Пустые ссылки разных справочников должны быть равны друг другу?

   Ненавижу 1С

28 — 29.05.12 — 16:24

(19) NULL и только он!

   Ненавижу 1С

29 — 29.05.12 — 16:24

(27) пустых ссылок не должно быть ))

   H A D G E H O G s

30 — 29.05.12 — 16:25

Результат1=МетапустаяСсылка=НомеклатураПустаяСсылка;

Результат2=МетапустаяСсылка=СкладПустаяСсылка;

Результат3=НомеклатураПустаяСсылка=СкладПустаяСсылка;

Истина

Истина

Ложь?

   H A D G E H O G s

31 — 29.05.12 — 16:25

Феерично.

   H A D G E H O G s

32 — 29.05.12 — 16:25

(29) Конечно, конечно.

   Feanor

33 — 29.05.12 — 16:27

(28) тебе лично чем плохо, что есть 2 сущности вместо одной?

   Ненавижу 1С

34 — 29.05.12 — 16:28

(32) вот и хорошо, что ты признал такую простую вещь

   H A D G E H O G s

35 — 29.05.12 — 16:28

(33) Он старый солдат. Он не знает слов любви.

   Ненавижу 1С

36 — 29.05.12 — 16:28

(33) мне лично — да ничем, просто не фэншуй это

   Feanor

37 — 29.05.12 — 16:30

(36) зато разговоров как о фундаментальной проблеме ))))

   Ненавижу 1С

38 — 29.05.12 — 16:32

(37) об этом я все таки хочу кое-что написать

   H A D G E H O G s

39 — 29.05.12 — 16:47

(38) Передай это (Владимиру, зачеркнуто) Нуралиеву.

   Infsams654

40 — 29.05.12 — 16:54

(28) проверил, никаких NULL. Если в поле не выбран тип <Т> и записано пустое, то возвращает Неопределено, при выбранном типе с незаполненным значением возвращает пустую ссылку этого типа.

   H A D G E H O G s

41 — 29.05.12 — 16:55

(40) Это он вредительствует из вредности. Не обращай внимание.

Темные силы реют над нами!

   Ненавижу 1С

42 — 29.05.12 — 16:58

(40) ты еще не в теме

(41) а ты уже

   mehfk

43 — 29.05.12 — 17:01

(40) Это ты RIGHT JOIN или LEFT JOIN еще не делал

  

Infsams654

44 — 29.05.12 — 17:06

(43) при чем тут join (42) NULL, как раз и может быть получен при ненайденном соединении. В полях реального объекта такого значения быть не может

Содержание:

1.       Тип значения Null

2.       Методы Есть Null и ЕстьNull 

1.    Тип значения Null

Тип значения Null – это переменная или поле с отсутствующим значением. Если реквизит объекта имеет один определенный тип, например тип «Справочник.Договоры», то незаполненное значение будет равно пустой ссылке в запросе «Справочник.Договоры.ПустаяСсылка». Если реквизит имеет мультитип, то незаполненное значение данного реквизита будет равно значению «Неопределено», так как используемые в этом реквизите типы известны, но неизвестно, какой из пустых типов нужно использовать в данном случае. Для примера, в документе «ЗаказКлиента» реквизит «ДокументОснование» может быть и «ЗаданиеТорговомуПредставителю» и «КоммерческоеПредложениеКлиенту». В случаях же, когда вообще неизвестно, какие типы мы хотим получить, значением свойства является Null. В качестве примера, в котором в запросе есть Null, можно рассмотреть левое соединение таблиц, когда в присоединяемой таблице отсутствуют значения, удовлетворяющие условию соединения.

Пример кода: присоединение к таблице контрагентов таблицы договоров

Рис. 1 Левое соединение таблиц

Если у контрагента отсутствует договор, то при выполнении запроса получим следующие значения:

Как видим в запросе в 1С есть Null и это отображается пустой строкой.

В запросе сравнение любого значения с типом значения Null дает результат Ложь. Даже условие Null = Null является ложным.  

2.    Методы Есть Null и ЕстьNull

Для правильной обработки данных ситуаций созданы такие методы, как:

·         Есть Null – это выражение условия, проверяющее, является ли выбранное значение типом значения Null. При проверке следует применять его. Сравнение вида (ДоговорКонтрагента.Ссылка = Null) не даст корректного результата.


Пример кода:


Рис. 2 Пример кода для проверки типа значения Null

Для корректной работы запроса обязательно следует отслеживать места, где есть Null в запросе 1С, и заменять данное значение на какой-то определенный тип.

·         ЕстьNull
Этот метод позволяет менять значение Null на нужное нам значение.

Пример кода для запроса в 1С с ЕстьNull

Рис. 3 Код для ЕстьNull в запросе

Отсутствующую строку с помощью метода ЕстьNull в 1С можно заменить на пустую строку, отсутствующую цифру на ноль, ссылку на пустую ссылку, дату на пустую дату. Например ЕстьNull(“ДоговорыКонтрагентов.Номер”, “”), ЕстьNull(“ДоговорыКонтрагентов.СуммаДоговора”, 0), ЕстьNull(“ДоговорыКонтрагентов.Партнер”, Значение(Справочник.Партнеры.ПустаяСсылка)), ЕстьNull(“ДоговорыКонтрагентов.Дата”, ДАТАВРЕМЯ(1,1,1,0,0,0)).

Тип значения Null также может уже содержаться в используемом в запросе реквизите, попав туда в результате некорректной записи программным кодом, смене типа реквизита в конфигураторе либо при неправильном обмене данными между базами. В этих случаях тоже можно воспользоваться выражением ЕстьNull в запросе, но лучше исправлять такие реквизиты.

Специалист компании «Кодерлайн»

Александр Суворов

В 1С проверка на пустое значение осуществляется специальной функцией.  Что бы проверить заполнен ли имеющийся у вас реквизит или переменная следует использовать функцию из глобального контекста ЗначениеЗаполнено(<Значение>).

В 1С 8 значение считается заполненным (не пустым) если оно отличается от значения по умолчанию для данного типа. Например для ссылочного типа значение по умолчанию — это Пустая ссылка (данного справочника, документа и т.п.). Также пустыми являются переменные и реквизиты содержащие значения Null и Неопределено.

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

Пример 1:

Переменная = Справочники.Номенклатура.ПустаяСсылка();

 Проверка = ЗначениеЗаполнено(Переменная);

В данном случае переменная Проверка будет содержать значение Ложь. Также функцию ЗначениеЗаполнено(<Значение>). можно использовать напрямую в условиях.

Пример 1.1

Если ЗначениеЗаполнено(Переменная) Тогда
    Сообщить("Значение в переменной не является пустым!");
КонецЕсли;

Пример2:

Переменная = Документы.АвансовыйОтчет.НайтиПоНомеру("000000001");

Проверка = ЗначениеЗаполнено(Переменная);

В данном примере, если документ Авансовый отчет с номером 000000001 существует, то в переменной Проверка будет содержаться значение Истина, иначе Ложь.

Использовать функцию ЗначениеЗаполнено нельзя для переменных мутабельных типов, таких как Таблица значений, Дерево значений и т.п. Функция работает для всех конфигураций.

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

Пример 3. Пусть МояТаблица — таблица значений определенная выше в коде.

Если МояТаблица.Количество() = 0 Тогда
    Возврат;
КонецЕсли;

Этим же методом можно определить заполненность дерева значений и выборки результата запроса.

Пример 4. Пусть МоеДерево — дерево значений определенное выше в коде.

Если МоеДерево.Строки.Количество() = 0 Тогда
    Возврат;
КонецЕсли;

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

Пример 5. Пусть Запрос — запрос к базе данных 1С 8, определенный выше.

Выборка = Запрос.Выполнить().Выбрать();

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

На этом описание основных приемов, при помощи которых осуществляется в 1с проверка на пустое значение, закончено. Если вы хотите узнать, как сделать проверку на пустое значение в запросе, прочитайте следующие статьи: Проверка на null в запросе и Проверка на Неопределено в запросе


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

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

На языке программирования 1С данное значение можно получить через менеджеры объекта.

Например:

  • Перечисления.Пол.ПустаяСсылка(),
  • Справочники.Организации.ПустаяСсылка(),
  • ПланыСчетов.Хозрасчетный.ПустаяСсылка(),
  • ПредопредленноеЗначение(«ПланСчетов.Хозрасчетный.ПустаяСсылка»)

Альтернативой сравнению с пустой ссылкой имеется метод Пустая() у значения ссылочного типа:
Например:
булКонтрагентВыбран = ВыбКонтрагент.Пустая();

Быстрый переход

  • Как же в запросе 1С сравнить на пустое значение
    • 1.Если требуется получить значение пустого типа.
    • 2. Если требуется сравнить со значением не составного типа:
    • 3. Если требуется проверка составного значения:

Как же в запросе 1С сравнить на пустое значение

Для этого у нас есть несколько вариантов в зависимости от требований задачи:

1.Если требуется получить значение пустого типа.

Воспользуемся функцией ЗНАЧЕНИЕ()

Выбрать
    ЗНАЧЕНИЕ (Перечисление.Пол.ПустаяСсылка)//Без вопроса в единственном числе

Либо через переданный в запрос параметр:
Выбрать
    &ПустойПараметрНужногоТипа

2. Если требуется сравнить со значением не составного типа:

Выбрать
    Значение(Перечисление.Пол.ПустаяСсылка)<>Значение(Перечисление.Пол.Мужской) как ЭтоБулевоИстина

или

Выбрать
       Выбор когда &ПустойПараметрНужногоТипа ИЛИ Значение(Перечисление.Пол.Мужской) Тогда Истина Иначе Ложь Конец как ЭтоНеЖенскийПол

3. Если требуется проверка составного значения:

В этом случае значение

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

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

//Мы инициализировали массив заполненных значений и сравнили его с пустым

Выбрать

     Выбор когда ЗНАЧЕНИЕ(Значение(Перечисление.Пол.ПустаяСсылка) в (Значение(Перечисление.Пол.Мужской),Значение(Перечисление.Пол.Женский)) ИЛИ Есть NULL Тогда Истина Иначе Ложь конец ЗначениеПустое

//Мы инициализировали массив пустых ссылок и проверили вхождение в него нашего «неизвестного» значения

Выбрать

Выбор когда ЗНАЧЕНИЕ(Значение(Перечисление.Пол.Мужской) в (Значение(Перечисление.Пол.ПустаяСсылка),Значение(Справочник.Контрагенты.ПустаяСсылка)) Тогда Истина Иначе Ложь конец ЗначениеПустое

Также мы можем передать массив параметром

Выбрать Выбор когда ЗНАЧЕНИЕ(Значение(Перечисление.Пол.ПустаяСсылка) в (&МассивВсехПустыхСсылок) Тогда Истина Иначе Ложь конец ЗначениеПустое

Как получить значение ЛюбаяСсылка? 

Еще про перечисление в запросе 1С.

Любые издержки на рекламную кампанию:
— больше, чем может позволить себе клиент;
— меньше, чем ожидали люди из творческого отдела;
— примерно такие, которых с ужасом опасались бухгалтеры.

Понравилась статья? Поделить с друзьями:
  • Как в мобильном банке узнать реквизиты своей карты втб
  • Как в обработке проведения изменить реквизит документа
  • Как в онлайн кабинете посмотреть реквизиты своей карты
  • Как в приложение рнкб посмотреть реквизиты своей карты
  • Как в приложении альфа банк посмотреть реквизиты банка