1с запрос если не заполнено значение реквизита

Как в языке запросов 1С отобрать не заполненное значение. Какое условие указать в запросе после ключевого слова «ГДЕ», когда нужно сделать отбор по не заполненным полям?
Есть запрос:

    Запрос.Текст =
    "ВЫБРАТЬ 
    |    усЕдиницыХранения.Ссылка
    |ИЗ
    |    Справочник.усЕдиницыХранения КАК усЕдиницыХранения

Требуется отобрать по условию, что у справочника усЕдиницыХранения реквизит РазрешитьОтборИзРезервнойЗоны пустой
Реквизит РазрешитьОтборИзРезервнойЗоны имеет тип булево
Вариант 1. сравнение с не заполненным булевым значением:

    |ГДЕ
    |     усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь

Вариант 2. Если это булево определено, то лучше так:

    // условие на отрицательное булево значение:
    |ГДЕ
    |     НЕ усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны

Требуется отобрать по условию, что у справочника усЕдиницыХранения реквизит АктивнаяОбластьОтбора пустой
Реквизит АктивнаяОбластьОтбора имеет тип Справочник.усОбластиОтбора

    // Пример 3. выборка по условию не заполненного поля, имеющего тип "справочник конкретного типа"
     |ГДЕ
    |    усЕдиницыХранения.АктивнаяОбластьОтбора = ЗНАЧЕНИЕ(Справочник.усОбластиОтбора.ПустаяСсылка)

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

    // Пример 3а. выборка по условию не заполненного поля, имеющего тип "документ конкретного типа"
    |ГДЕ
    |    НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент.ПустаяСсылка)

Требуется отобрать по условию, что у регистра сведений НашРегистрСведений реквизит Документ пустой
Реквизит Документ имеет составной тип значения: Документ.НашДокумент1, Документ.НашДокумент2 и т.д.

    // Пример 3б. выборка по условию не заполненного поля, имеющего тип "документы разных типов" (составное поле)
    |ГДЕ
    |    (НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент1.ПустаяСсылка)
    |    ИЛИ НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент2.ПустаяСсылка) 
    |    ИЛИ ...(и т.д. - последовательно перечисляем условия для всех возможных типов этого составного поля))

Требуется отобрать по условию, что реквизит не пустой (заполнен хоть чем-то)
Тип значения реквизита — Строка.

    
    // Пример 4. или наоборот, если нужно выбрать заполненное значение типа "строка", то поможет условие:
    |ГДЕ
    |    усЕдиницыХранения.Наименование > """"

Допустим требуется отобрать данные, при условии, что реквизит Задание регистра сведений ВыполняемыеЗадания содержит какой-либо Документ.Отбор
Реквизит Задание имеет составной тип значения: Документ.Отбор, Документ.Поступление и т.д.

    // Пример 5. если нужно выбрать документы конкретного типа, при составном типе данных, например в регистре "ВыполняемыеЗадания" ресурс "Задание" имеет составной тип, среди значений которого возможен документ "Отбор"
    |ГДЕ
    |    ВЫРАЗИТЬ(РегистрСведенийВыполняемыеЗадания.Задание КАК Документ.Отбор) ССЫЛКА Документ.Отбор

Еще аналогичный пример, когда нужно выбрать документы конкретного типа

    // Пример 5а. Еще аналогичный пример, когда нужно выбрать документы конкретного типа
    |	ВЫБОР
    |		КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.ПоступлениеТоваровУслуг) ССЫЛКА Документ.ПоступлениеТоваровУслуг
    |			ТОГДА ""ПоступлениеТоваровУслуг""
    |		КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.РеализацияТоваровУслуг) ССЫЛКА Документ.РеализацияТоваровУслуг
    |			ТОГДА ""РеализацияТоваровУслуг""
    |		ИНАЧЕ """"
    |	КОНЕЦ КАК ВидДокумента

Отобрать по условию не определенного значения:

    // Пример 6. выбор по условию не определенного значения:
    |ГДЕ
    |    СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО

Отобрать по условию, что вид движения — Приход

    // Пример 7. выбор по виду движения "Приход" регистра накопления, "Расход" - аналогично):
    |ГДЕ
    |    РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)

Как в запросе указать, что выполнять запрос не нужно (например, нужно программно, в зависимости от какого-то условия, вернуть пустой результат запроса: Запрос.Текст = СтрЗаменить(Запрос.Текст, «ГДЕ Док.Ссылка = &ДокументСсылка», «ГДЕ ЛОЖЬ»);).
Для этого достаточно добавить условие «Где Ложь». Кстати, независимо от объема запрашиваемых в выборке данных, такой запрос будет выполнен мгновенно.

    // Пример 8. Не исполнять запрос:
    |ГДЕ ЛОЖЬ

Проверка на то, что результат выполнения запроса содержит данные:

    // Пример 9. Проверка на то, что результат выполнения запроса содержит данные:
    Если НЕ Запрос.Выполнить().Пустой() Тогда

Отобрать записи с не заполненной датой (реквизит ДатаОтмены имеет тип Дата)

    // Пример 10. выбор по условию не заполненной даты:
    |ГДЕ
    |    тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)

Next Post

  • SQL Server

  • v8

  • Программисту 1C

Установка 1С: Предприятие. Установка 1С:Предприятия 8 в варианте «клиент-сервер» (на SQLServer) (1С)

Вт Май 18 , 2010

Вопрос Как установить 1С: Предприятие в клиент-серверном варианте. Раздел содержит практические рекомендации по решению проблем, возникающих при установке и настройке клиент-серверного варианта 1С:Предприятия 8. При подготовке раздела учтен опыт партнеров и пользователей, которым в процессе установки 1С:Предприятия потребовалась дополнительная настройка различных служб Microsoft Windows. Более подробно с материалом можно ознакомиться […]

Незаполненное значение в Запросе

Я
   din107

27.11.10 — 15:39

Подскажите, как в запросе указать, что поле не заполнено? Например, хочу выбрать все док. Поступление товаров, у которых не заполнен реквизит сделка?

  

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

   ДенисЧ

1 — 27.11.10 — 15:42

ЕСТЬNULL  ?

   Господин ПЖ

2 — 27.11.10 — 15:43

(1) какая жесть…

   Господин ПЖ

3 — 27.11.10 — 15:44

(0) Неопределено если составной или пустаяссылка

   din107

4 — 27.11.10 — 15:45

А, если Сделка может принимать значения разных типов документов. Как можно написать, что, например, если значение не заполнено именно для док. Заказ поставщика?

   ice777

5 — 27.11.10 — 15:46

вроде не осень.. когда выпускники к работе приступают.

писец мисте с таким уровнем.

   Господин ПЖ

6 — 27.11.10 — 15:47

нормуль… 7-шники потянулись в теплые края…

   zzerro

7 — 27.11.10 — 18:43

ВЫБОР …КОГДА… ИНАЧЕ… КОНЕЦ

   DrShad

8 — 27.11.10 — 18:48

(4) ответ в (3)

   DrShad

9 — 27.11.10 — 18:48

(7) садись двойка

   DrShad

10 — 27.11.10 — 18:50

(6) все испугались заявлений БГ? гы

   zzerro

11 — 27.11.10 — 18:52

(9) чё эт
В (4) же написано как надо, только если значение = документ заказ поставщика пустая ссылка.
Может в поле тип значения определили, тогда он будет уже не неопределено, а документссылка.заказпоставщика

   DrShad

12 — 27.11.10 — 18:53

(11) даже с определенным типом незаполненный равен пустой ссылке

   Stim

13 — 27.11.10 — 18:54

(9) Если результат запроса вывести в ВТ и добавить пакетный запрос по условию —  то вполне

   DrShad

14 — 27.11.10 — 18:54

+(11) а с конструкцией выбора замахаешься описывать все типы

   zzerro

15 — 27.11.10 — 18:54

(12) во… но пустая ссылка то может быть у разных видов документов

   zzerro

16 — 27.11.10 — 18:55

кароче, я так понимаю ему так надо:
ГДЕ твоезначение = ЗНАЧЕНИЕ(Документ.ЗаказПоставщика.ПустаяСсылка)

   DrShad

17 — 27.11.10 — 18:56

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

   zzerro

18 — 27.11.10 — 19:01

(17) так ему нада чтоб именно был заказ поставщика. если я правильно понял то что в (4) написано

   DrShad

19 — 27.11.10 — 19:02

(18) читать умеем?

   zzerro

20 — 27.11.10 — 19:05

(19) «Как можно написать, что, например, если значение не заполнено именно для док. Заказ поставщика?» — поясни смысл фразы

   DrShad

21 — 27.11.10 — 19:16

(20) поставить например условие на док ЗаказПоставщика заодно и выборка будет оптимальной

   Beans

22 — 27.11.10 — 19:27

где    
Выразить(ПоступлениеТоваровУслуг.Сделка.Ссылка как документ.ЗаказПоставщику) есть null

   DrShad

23 — 27.11.10 — 19:30

(22) что это?

   Beans

24 — 27.11.10 — 19:32

(23) что то

   DrShad

25 — 27.11.10 — 19:33

(22) ты веткой не ошибся?

   Beans

26 — 27.11.10 — 19:35

(25) расшифрую свое сообщение

   Господин ПЖ

27 — 27.11.10 — 19:35

люди… вы меня пугаете… и хотите наверное «отстатыщ»

   DrShad

28 — 27.11.10 — 19:35

давай

   Beans

29 — 27.11.10 — 20:19

хотелось бы видет код.

То что там может быть или неопределено или пустаяСсылка
не поможет для задачи.

где    
ПоступлениеТоваровУслуг.Сделка = Неопределено
ИЛИ
ПоступлениеТоваровУслуг.Сделка = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)

   Beans

30 — 27.11.10 — 20:31

условие : 4 документа Поступления
1 документ  в поле сделка ЗаказПоставщику
2 документ  в поле сделка ЗаказПокупателя
3 документ  в поле сделка не выбран тип (Неопределено)
4 документ  в поле сделка выбран тип (Пустая ссылка)

запрос должен вернуть:
документы 2,3,4

   MaxS

31 — 27.11.10 — 20:39

ГДЕ
НЕ (ПоступлениеТоваровУслуг.Сделка ССЫЛКА Документ.ЗаказПоставщику)

   hhhh

32 — 27.11.10 — 20:40

(30) такой метод тормозной.

   zzerro

33 — 27.11.10 — 20:43

а где автор?

   Beans

34 — 27.11.10 — 20:51

про оператор ССЫЛКА я совсем забыл )))
в моем тестовом примере работает так

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

т.к выбрал тип сделки у одного из документов типа Заказ Поставщику

   DrShad

35 — 27.11.10 — 20:55

да уж

   MaxS

36 — 27.11.10 — 20:56

(34) по моему Выразить не обязательно. Неопределено или другой тип документа и так не будет равно Документ.ЗаказПоставщику.ПустаяСсылка

   Beans

37 — 27.11.10 — 20:57

по условию  задачи в (30) код

ГДЕ НЕ (ПоступлениеТоваровУслуг.Сделка ССЫЛКА Документ.ЗаказПоставщику)

не выводит документ номер 4

   DrShad

38 — 27.11.10 — 20:59

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

   MaxS

39 — 27.11.10 — 21:01

(37) я имел ввиду так:
ГДЕ
НЕ (ПоступлениеТоваровУслуг.Сделка ССЫЛКА Документ.ЗаказПоставщику)
ИЛИ
ПоступлениеТоваровУслуг.Сделка = Значение(Документ.ЗаказПоставщику.ПустаяСсылка)

А автору, то что нужно? ;)

   DrShad

40 — 27.11.10 — 21:02

(39) в том то и дело что давно от темы саюжа отошли :)

  

Beans

41 — 27.11.10 — 21:04

(39) Автор полностью удовлетворен !)))

ВСЕМ СПАСИБО! ВСЕ СВОБОДНЫ!

 0 

   

Распечатать

1С 8.x : Условия сравнения и проверки в Запросах. Отбор не заполненного значения

Как задать отбор по Типу документа?
Как указать условие для отбора не определенного значения?
Как в языке запросов 1С отобрать не заполненное значение?
Какое условие указать в запросе после ключевого слова «ГДЕ», когда нужно сделать отбор по не заполненным полям?

Код 1C v 8.х

  Запрос.Текст =
"ВЫБРАТЬ
| усЕдиницыХранения.Ссылка
|ИЗ
| Справочник.усЕдиницыХранения КАК усЕдиницыХранения"

// Пример 1. сравнение с не заполненным булевым значением:
|ГДЕ
| усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь

// Пример 2. но если это булево определено, то лучше так: // условие на отрицательное булево:
|ГДЕ
| НЕ усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны

// Пример 3. выборка по условию не заполненного поля, имеющего тип "справочник конкретного типа"
|ГДЕ
| усЕдиницыХранения.АктивнаяОбластьОтбора = ЗНАЧЕНИЕ(Справочник.усОбластиОтбора.ПустаяСсылка)

// Пример 3а. выборка по условию не заполненного поля, имеющего тип "документ конкретного типа"
|ГДЕ
| НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент.ПустаяСсылка)

// Пример 3б. выборка по условию не заполненного поля, имеющего тип "документы разных типов" (составное поле)
|ГДЕ
| (НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент1.ПустаяСсылка)
| ИЛИ НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент2.ПустаяСсылка)
| ИЛИ ...(и т.д. - последовательно перечисляем условия для всех возможных типов этого составного поля))

// Пример 4. или наоборот, если нужно выбрать заполненное значение типа "строка", то поможет условие:
|ГДЕ
| усЕдиницыХранения.Наименование > """"

// Пример 5. если нужно выбрать документы конкретного типа, при составном типе данных, например в регистре "ВыполняемыеЗадания" ресурс "Задание" имеет составной тип, среди значений которого возможен документ "Отбор"
|ГДЕ
| ВЫРАЗИТЬ(РегистрСведенийВыполняемыеЗадания.Задание КАК Документ.Отбор) ССЫЛКА Документ.Отбор

// Пример 5а. Еще аналогичный пример, когда нужно выбрать документы конкретного типа
| ВЫБОР
| КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.ПоступлениеТоваровУслуг) ССЫЛКА Документ.ПоступлениеТоваровУслуг
| ТОГДА ""ПоступлениеТоваровУслуг""
| КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.РеализацияТоваровУслуг) ССЫЛКА Документ.РеализацияТоваровУслуг
| ТОГДА ""РеализацияТоваровУслуг""
| ИНАЧЕ """"
| КОНЕЦ КАК ВидДокумента

// Пример 6. выбор по условию не определенного значения:
|ГДЕ
| СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО

// Пример 7. выбор по виду движения "Приход" регистра накопления, "Расход" - аналогично):
|ГДЕ
| РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)

// Пример 8. Как в запросе указать, что выполнять запрос не нужно (например, нужно программно в зависимости от какого-то
// условия вернуть пустой результат запроса -
// Запрос.Текст = СтрЗаменить(Запрос.Текст, "ГДЕ Док.Ссылка = &ДокументСсылка", "ГДЕ ЛОЖЬ");).
// Для этого достаточно добавить условие "Где Ложь".
// Кстати, независимо от объема запрашиваемых в выборке данных, такой запрос будет выполнен мгновенно.
|ГДЕ ЛОЖЬ

// Пример 9. Проверка на то, что результат выполнения запроса содержит данные:
Если НЕ Запрос.Выполнить().Пустой() Тогда

// Пример 10. выбор по условию не заполненной даты:
|ГДЕ
| тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 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С

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

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

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

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

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

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

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

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

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

В данной статье рассмотрены примеры работы с пустыми значениями в запросах 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");

На чтение 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С

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

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

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

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

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

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

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

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

Бывает необходимо получить в запросе пустую ссылку на какой-то объект или выбрать объекты с незаполненным реквизитом, установив отбор по пустой ссылке. Разберем в статье разные варианты получение и отбора по пустой ссылке, а также способы проверки на заполненность. В этой заметке во всех примерах будет устанавливаться отбор или сравнение на пустую ссылку в справочнике и пустую ссылку в документе.

Отбор по пустой ссылке

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

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

В примере устанавливаем пустую ссылку с помощью функции запроса УстановитьПараметр.

Запрос = Новый Запрос("
|	...
|	ГДЕ РеквизитСправочника = &ПустаяСсылкаСправочник
|	И РеквизитДокумента = &ПустаяСсылкаДокумент)";

Запрос.УстановитьПараметр("ПустаяСсылкаСправочник",Справочники.Номенклатура.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустаяСсылкаДокумент",Документы.ЗаказКлиента.ПустаяСсылка());

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

Пустую ссылку можно указать в запросе или в соединении, с помощью команды ЗНАЧЕНИЕ.

Запрос = Новый Запрос("
|	...
|	ГДЕ РеквизитСправочника = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|	И РеализацияТоваровУслуг.ДокументОснование = ЗНАЧЕНИЕ(Документ.Заказ.ПустаяСсылка)

Отбор объектов с не заполненными ссылками

Иногда в объекте может быть не пустая ссылка, а не заполненное значение в запросе отобрать их можно, с помощью оператора ЕСТЬ NULL.

Запрос = Новый Запрос("
|	...
|	ГДЕ ТоварыНаСкладах.Регистратор.ДокументОснование.Ссылка ЕСТЬ NULL";  

Отбор объектов с заполненными значениями. Обратная ситуация и с ней есть особенности. В этом случае нужно использовать оператор “ЕСТЬ НЕ NULL”, а не ставить НЕ в начало условия.

Запрос = Новый Запрос("
|	...
|	ГДЕ РеализацияТоваровУслуг.Сделка.Ссылка ЕСТЬ НЕ NULL"; 

Получение пустого значения в запросе

Получение пустой ссылки в запросе аналогично отбору по пустой ссылке, работает по формуле:

  1. ЗНАЧЕНИЕ(Справочник.НаименованиеСправочника.ПустаяСсылка)
  2. ЗНАЧЕНИЕ(Документ.НаименованиеДокумента.ПустаяСсылка)
Запрос.Текст = "ВЫБРАТЬ
	|	ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК ПустаяСсылкаНоменклатура,
	|	ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка) КАК ПустаяСсылкаЗаказ,
	|	"""" КАК ПустаяСтрока,
	|	0 КАК Число0,
	|	Истина КАК БулевоИстина,
	|	Ложь КАК БулевоЛожь,
	|ИЗ
	|	РегистрСведений.Расш1_ТестовыйРегистр КАК Расш1_ТестовыйРегистр
	|";

Материалы по теме:

  1. Про пустые значения на ИТС – ссылка
  2. Больше материалов по программирование на 1с – ссылка

Понравилась статья? Поделить с друзьями:
  • Call of duty vanguard ps4 как открыть компанию
  • 1с запрос как вывести дополнительные реквизиты
  • Яндекс чья компания какой страны кто владелец
  • 1с изменение реквизитов справочника программно
  • Яндекс это продуктовая или сервисная компания