Как в запросе проверить на пустую ссылку
Перейти к содержимому

Как в запросе проверить на пустую ссылку

  • автор:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Клиент получает ту рекламу, которую он заслуживает!

    — Дэвид Огилви

    Пустая ссылка, дата или строка в запросе 1С 8.3 и 8.2

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

    • Самоучитель по 1С Бухгалтерии 8.3;
    • Самоучитель по 1С ЗУП 8.3.

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

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

    • ЕСТЬNULL в запросе 1С 8.3 (8.2)
    • Остатки и обороты с регистраторами 1С
    • Язык запросов 1С 8.3 и 8.2 — краткое руководство по всем конструкциям
    • Проверка на NULL в запросе 1С 8

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

    «Если в тексте запроса надо сделать проверку на пустое значение ссылочного типа, это делается так:
    «ГДЕ Поле = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)»;
    А если «Поле» — это строковый тип, как его проверить на пустую строку?»

    активный пользователь
    Дата регистрации: 18.02.2002
    Сообщений: 20937
    24.01.2014 12:23

    > А если «Поле» — это строковый тип, как его проверить на пустую строку?

    ГДЕ Поле = """"

    читатель
    Дата регистрации: 22.04.2008
    Сообщений: 111
    24.01.2014 15:46

    Спасибо. Все гениальное — просто))

    Показывать по 10 20 40 сообщений

    Читают тему:

    Мероприятия

    © ООО «1С-Паблишинг» (материалы)

    При использовании материалов активная прямая гиперссылка на перепечатанный материал обязательна.

    Редакция БУХ.1С не несет ответственности за мнения и информацию, опубликованную в комментариях к материалам.

    Редакция уважает мнение авторов, но не всегда разделяет его.

    Дизайн сайта

    © ООО «1C» 2000-2024 г.

    Мы используем файлы cookie, чтобы анализировать трафик, подбирать для вас подходящий контент и рекламу, а также дать вам возможность делиться информацией в социальных сетях. Если вы продолжите использовать сайт, мы будем считать, что вас это устраивает.

    Как в запросе проверить на пустую ссылку

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

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

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

    Возможно 3 варианта:
    1) неопределено
    2) пустое значение первого типа
    3) пустое значение второго типа

    Если тип реквизита «справочник» двух типов, то можно так:
    ГДЕ Реализация.Проект.Код ЕСТЬ NULL

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *