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

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

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

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

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

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

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

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

СегментыПартнеров.Ссылка ЕСТЬ NULL

Пустая дата

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

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

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

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

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

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

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

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

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

Средства определения пустых ссылок, дат или строк. Рассмотрим, как проверить на пустую ссылку, дату или строку в запросе 1С.

Определить нулевые данные можно путем использования специальных операторов.

Информацию из базы данных 1С запрашивают (а потом получают) с помощью такого инструмента, как язык запросов (Query, англ.). Они составляются на латинице и кириллице.

А одним из ключевых слов-команд (операторов) при получении информации является слово-команда ВЫБРАТЬ (SELECT, англ.) в сочетании с некоторыми конструкциями.

Приведём примеры построения интересующих нас по теме запрашиваемых заданий:

Проверка на содержание NULL

Такое задание выполняется оператором ВЫБРАТЬ в сочетании с конструкцией «ЕСТЬ NULL»:

SELECTЗаказыОстатки.Заказчик,ЗаказыОстатки.КоличествоОстатокИЗРегистрНакопления.Заказы.Остатки КАК ЗаказыОстаткиГДЕ

ЗаказыОстатки.КоличествоОстаток ЕСТЬ NULL

Контроль даты

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

SELECTСчетВходящийПоставщика.Link,СчетВходящийПоставщика.ДатаПриходаИЗДокумент. СчетВходящийПоставщика КАК СчетВходящийПоставщикаГДЕ

СчетВходящийПоставщика.ДатаПрихода = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

Ссылочная проверка

Проверка несуществующих внутриссылочных значений (на планы счетов, справочники и пр.) производится с использованием конструкции «VALUE(Справочник.Имя…ПустаяСсылка)»:

Проверка строки

Пустота в строках обнаруживается с применением пробела в кавычках «»:

SELECTПокупатели.LinkИЗСправочник.Покупатели КАК ПокупателиГДЕ

Покупатели.Код = «»

Ещё о битых и обычных линках

«Битой» считается ссылка (Link, англ.), ведущая (указывающая) на несуществующий элемент. Под несуществующим понимают такой, которого нет в базе данных. Полезно о таких линках знать хотя бы для того, чтобы получать от системы уведомления в более понятной форме. Да и запись, удаление и открытие нереальных объектов не имеет смысла.

Платформы 1С не обладают внутренними средствами чтобы их отсечь. Ещё нужно понимать, что вне «битых» в системе живут специальные «пустые линки», которые следует различать одни от других.
Это можно выяснить и без запросов к базе данных:

В системе 1С-7.7

Для «битой» – методом Link.Selected() и функцией ПустоеЗначение() возвращается ноль. Для «пустой» – в первом случае ноль, а во втором – единица. Для «нормальной» – единица и ноль. Получается, в 1С-7.7 «битая» – не является несуществующим значением, которое не считается выбранным.

В системе 1С-8.x

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

Для «пустой» – выбрасывается «Ошибка метода контекста». Для «нормальной» – возвращается значение согласно документации; Выходит, в 1С-8.

х «битая» – не будет несуществующей функцией ссылочного типа, которая возвращает Неопределённое значение объекта.

Откуда они берутся

При переходе по несуществующему адресу битой линки пользователю в лучшем случае показано уведомление о том, что объект не найден, в худшем – изображение страницы сервера. Наихудшей их чертой является скрытость. Отсюда – сложность в проверке их корректности.

Во время работы с конфигурацией она постоянно дорабатывается, обновляется. Какие-то объекты подлежат удалению, изменяется структура. А ссылка на удалённый элемент остаётся в конструкциях и алгоритмах.

Таким образом, несуществующие адреса остаются в системе после удаления самого элемента (вместе с адресом).

В сегодняшней публикации было рассмотрено специальное построение запросов. Приведены примеры конструкций. Это пригодится вам в работе при поиске пустых значений.

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

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

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

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

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

Пример 1.1

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

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

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

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

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

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

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

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

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

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

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

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

Запрос.Текст = “ВЫБРАТЬ | усЕдиницыХранения.Ссылка |ИЗ | Справочник.усЕдиницыХранения КАК усЕдиницыХранения // Пример 1. сравнение с не заполненным булевым значением: |ГДЕ | усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь // Пример 2. но если это булево определено, то лучше так: // условие на отрицательное булево: |ГДЕ | НЕ усЕдиницыХранения.

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

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

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

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

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

РеализацияТоваровУслуг | ТОГДА “”РеализацияТоваровУслуг”” | ИНАЧЕ “””” | КОНЕЦ КАК ВидДокумента // Пример 6. выбор по условию не определенного значения: |ГДЕ | СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО // Пример 7. выбор по виду движения “Приход” регистра накопления, “Расход” – аналогично): |ГДЕ | РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.

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

Кстати, независимо от объема запрашиваемых в выборке данных, такой запрос будет выполнен мгновенно. |ГДЕ ЛОЖЬ // Пример 9. Проверка на то, что результат выполнения запроса содержит данные: Если НЕ Запрос.Выполнить().Пустой() Тогда // Пример 10. выбор по условию не заполненной даты: |ГДЕ | тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)

Запрос.Текст =”ВЫБРАТЬ| усЕдиницыХранения.Ссылка|ИЗ| Справочник.усЕдиницыХранения КАК усЕдиницыХранения// Пример 1. сравнение с не заполненным булевым значением:|ГДЕ| усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь// Пример 2. но если это булево определено, то лучше так: // условие на отрицательное булево:|ГДЕ| НЕ усЕдиницыХранения.

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

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

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

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

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

РеализацияТоваровУслуг| ТОГДА “”РеализацияТоваровУслуг””| ИНАЧЕ “”””| КОНЕЦ КАК ВидДокумента// Пример 6. выбор по условию не определенного значения:|ГДЕ| СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО// Пример 7. выбор по виду движения “Приход” регистра накопления, “Расход” – аналогично):|ГДЕ| РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.

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

Кстати, независимо от объема запрашиваемых в выборке данных, такой запрос будет выполнен мгновенно.|ГДЕ ЛОЖЬ// Пример 9. Проверка на то, что результат выполнения запроса содержит данные:Если НЕ Запрос.Выполнить().Пустой() Тогда// Пример 10. выбор по условию не заполненной даты:|ГДЕ| тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)

Источник: https://www.yuriste.ru/kak-proverit-pustoe-znachenie-v-zaprose-1s-znachenie-v-zaprose/

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

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

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

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

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

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

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

СегментыПартнеров.Ссылка ЕСТЬ NULL

Как же работать с предопределенными значениями?

В коде модулей обращение к таким элементам производится через менеджер объекта, например:

В языке запросов это производится аналогично, но с использованием функции запросов ЗНАЧЕНИЕ().
Функция значение предназначена для получения ссылки на предопределенные значения справочников, перечислений, планов видов характеристик, планов счетов, планов видов расчетов, точек маршрутов бизнес процессов, к системным перечислениям.

При этом имя вида объекта указывается в запросе в единственном числе.

Примеры использования ЗНАЧЕНИЕ():

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

Для проверки на пустое значение справочника:

Справочник.Контрагенты КАК Контрагенты

Контрагенты.ОсновнойДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)

Для получения перечислений:

Справочник.ДоговорыКонтрагентов КАК Договор

Договор.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем)

ИЛИ Договор.ВидДоговора = ЗНАЧЕНИЕ (Перечисление.ВидыДоговоровКонтрагентов.ПустаяСсылка)

План видов характеристик:

ВЫБРАТЬ ЗНАЧЕНИЕ(ПланВидовХарактеристик.НастройкиПользователей.ПустаяСсылка)

Счет в плане счетов:

ВЫБРАТЬ ЗНАЧЕНИЕ (ПланСчетов.Хозрасчетный.Товары) КАК СчетТоваров

Системные перечисления:

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

ЗНАЧЕНИЕ(ВидСчета.АктивноПассивный) КАК АктивноПассивный

Аналог функции ЗначениеЗаполнено() в запросе

  • В явном виде функции на заполнение нет, но возможна проверка на несовпадение, например:

ГДЕ НЕ ОсновнойДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагента.ПустаяСсылка)

  • проверка на невхождение в список:

ГДЕ НЕ ОсновнойДоговорКонтрагента В (ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагента.ПустаяСсылка), НЕОПРЕДЕЛЕНО, NULL,””)

То есть, если значение не пустое или не входит в список пустых, его можно считать заполненным.

Ошибки при использовании ЗНАЧЕНИЕ()

При неверном синтаксисе параметра функции возникает ошибка «Неверные параметры».

  • указание во множественном числе (например «Справочники» вместо «Справочник»)
  • не верное имя предопределенного или его отсутствие

Недопустима передача в ЗНАЧЕНИЕ параметра вот так:

ЗНАЧЕНИЕ(&Параметр)

Выйдет ошибка «Ожидается параметр»:

Функция как раз предназначена для ухода от параметров для предопределенных в метаданных ссылках.

Не требуется указание параметра функции в кавычках: это вызовет ошибку «Ожидается имя»

Запрос.Текст =”ВЫБРАТЬ| усЕдиницыХранения.Ссылка|ИЗ| Справочник.усЕдиницыХранения КАК усЕдиницыХранения// Пример 1. сравнение с не заполненным булевым значением:|ГДЕ| усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь// Пример 2. но если это булево определено, то лучше так: // условие на отрицательное булево:|ГДЕ| НЕ усЕдиницыХранения.

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

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

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

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

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

РеализацияТоваровУслуг| ТОГДА “”РеализацияТоваровУслуг””| ИНАЧЕ “”””| КОНЕЦ КАК ВидДокумента// Пример 6. выбор по условию не определенного значения:|ГДЕ| СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО// Пример 7. выбор по виду движения “Приход” регистра накопления, “Расход” – аналогично):|ГДЕ| РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.

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

Кстати, независимо от объема запрашиваемых в выборке данных, такой запрос будет выполнен мгновенно.|ГДЕ ЛОЖЬ// Пример 9. Проверка на то, что результат выполнения запроса содержит данные:Если НЕ Запрос.Выполнить().Пустой() Тогда// Пример 10. выбор по условию не заполненной даты:|ГДЕ| тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)

Средства определения пустых ссылок, дат или строк. Рассмотрим, как проверить на пустую ссылку, дату или строку в запросе 1С.

Определить нулевые данные можно путем использования специальных операторов.

Информацию из базы данных 1С запрашивают (а потом получают) с помощью такого инструмента, как язык запросов (Query, англ.). Они составляются на латинице и кириллице.

А одним из ключевых слов-команд (операторов) при получении информации является слово-команда ВЫБРАТЬ (SELECT, англ.) в сочетании с некоторыми конструкциями.

Приведём примеры построения интересующих нас по теме запрашиваемых заданий:

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

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

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

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

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

Либо через переданный в запрос параметр: Выбрать

&ПустойПараметрНужногоТипа

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник: https://www.auturs.ru/accident/1s-8-kak-proverit-na-pustoe-znachenie-znachenie-v-zaprose-primery-ispolzovaniya-znachenie.html

Проверка на заполненное значение в запросе 1с. Значение() в запросе

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

Запрос.Текст =”ВЫБРАТЬ| усЕдиницыХранения.Ссылка|ИЗ| Справочник.усЕдиницыХранения КАК усЕдиницыХранения// Пример 1. сравнение с не заполненным булевым значением:|ГДЕ| усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь// Пример 2. но если это булево определено, то лучше так: // условие на отрицательное булево:|ГДЕ| НЕ усЕдиницыХранения.

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

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

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

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

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

РеализацияТоваровУслуг| ТОГДА “”РеализацияТоваровУслуг””| ИНАЧЕ “”””| КОНЕЦ КАК ВидДокумента// Пример 6. выбор по условию не определенного значения:|ГДЕ| СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО// Пример 7. выбор по виду движения “Приход” регистра накопления, “Расход” – аналогично):|ГДЕ| РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.

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

Кстати, независимо от объема запрашиваемых в выборке данных, такой запрос будет выполнен мгновенно.|ГДЕ ЛОЖЬ// Пример 9. Проверка на то, что результат выполнения запроса содержит данные:Если НЕ Запрос.Выполнить().Пустой() Тогда// Пример 10. выбор по условию не заполненной даты:|ГДЕ| тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)

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

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

Например:

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

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

1с 8.3 проверка на пустое значение. Значение() в запросе. Если требуется проверка составного значения

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

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

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

Юрист-эксперт
Добавить комментарий