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

Содержание

Примеры запросов в 1С 8

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

В запросе воспользуемся функцией КОНЕЦПЕРИОДА(&ДатаКонец, ДЕНЬ), она приведет дату к виду «23:59:59».

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

Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
| И КОНЕЦПЕРИОДА(&ДатаКонец, ДЕНЬ)»;
Запрос.УстановитьПараметр(«ДатаКонец», ДатаКонец);
Запрос.

УстановитьПараметр(«ДатаНачала», ДатаНачала);
РезультатЗапроса = Запрос.Выполнить();

Как правильно обрабатывать значения NULL в запросе 1С8?

В запросе значения типа NULL образуются в результате соединений (ЛЕВОЕ, ПРАВОЕ), когда элементу из одной таблицы по условию не находится соответствующего элемента из другой. Значение типа NULL имею специфические особенности:

  • Cравнение значения NULL с любым другим аргументом всегда возвращает ложь. Например, если в запросе поле «Количество» возвращает NULL, то если использовать операции сравнения «», или «=» с числом 1000, то результатом всегда будет «Ложь». Даже, если сравнить с самим значением NULL, то все равно результатом будет «Ложь»:
  • ГДЕ ГТД.Количество = NULL

  • Применение арифметических операций к значению типа NULL всегда возвращает NULL. Например, если в запросе к полю «Количество», которое возвращает NULL, прибавить числовое значение или отнять от него числовое значение, то будет возвращено значение NULL:
  • ГТД.Количество+300 КАК Поле1

  • Для определения значения NULL используется функция конструкция «IS NULL». Чтобы получить записи со значением NULL воспользуемся следующей конструкцией:ГДЕ ГТД.Регистратор.Организация IS NULL если нужно получить записи без NULL, тогда:ГДЕ НЕ ГТД.Регистратор.Организация IS NULL
  • Для преобразования типа NULL используется функция «isNULL» или «ЕСТЬNULL». Теперь можно сравнивать с полученным значением или применять к нему арифметические операции, не боясь за конечный результат:
  • ЕСТЬNULL(ГТД.Количество, 0)+300 КАК Поле1

  • Для того, чтобы в результате запроса отсечь записи, содержащие значения NULL применяются следующие конструкции: «IS NOT NULL», «NOT is NULL»:
  • ГДЕ ГТД.Регистратор.Организация IS NOT NULL илиГДЕ NOT ГТД.Регистратор.Организация IS NULL

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

Для этого можно использовать объект ПостроительОтчета:

ТабДок = Новый ТабличныйДокумент;
Результат = РезультатЗапроса.Выгрузить();

Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Результат);
Построитель.Вывести(ТабДок);
ТабДок.Записать(«D:\mxl\Таблица.mxl»);

Как посчитать возраст по дате рождения в запросе 1С8?

Использовать функцию языка запроса РАЗНОСТЬДАТ:

ВЫБРАТЬ
Сотрудники.Сотрудник,
Сотрудники.Пол,
РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, &ТекДата, ГОД) КАК Возраст
ИЗ Сотрудники КАК Сотрудники ПОЛНОЕ СОЕДИНЕНИЕ ПриемНаРаботу КАК ПриемНаРаботу

ПО Сотрудники.Сотрудник = ПриемНаРаботу.Сотрудник

ПОЛНОЕ СОЕДИНЕНИЕ Пенсия КАК Пенсия

ПО Сотрудники.Сотрудник = Пенсия.Сотрудник

Почему в результате запроса 1С8 появляется ошибка «Ошибка чтения значения» при отладке?

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

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

Ошибка чтения значений результата запроса, возникает из-за того, что в выборке еще не осуществлена установка на первый элемент выборки. Для этого существует метод «Следующий()» коллекции «ВыборкаИзРезультатаЗапроса». Поэтому надо писать так:

Если Выборка.Следующий() Тогда
ДоговорКонтрагента = Выборка.Наименование;
КонецЕсли;

Как запросом получить все подчиненные документы?

С помощью Функции «ПолучитьСписокВводимыхДокументовНаОсновании» получим список документов, которые вводятся на основании заданного документа:

// Параметры: ДокументПоиска: Тип — Метаданные объекта
Функция ПолучитьСписокВводимыхДокументовНаОсновании(ДокументПоиска) Экспорт

СписокДокументов = Новый СписокЗначений;
Для Каждого Документ Из Метаданные.Документы Цикл
Если Документ.ВводитсяНаОсновании.Содержит(ДокументПоиска) Тогда
СписокДокументов.Добавить(Документ.Имя, Документ.Синоним);
КонецЕсли;
КонецЦикла;
Возврат СписокДокументов;

КонецФункции

Теперь, на основании списка документов найдем все подчинненные заданному документу:

Функция ПолучитьПодчиненныеДокументы()

СписокЗаполнения = ПолучитьСписокВводимыхДокументовНаОсновании(СсылкаНаОбъект.Метаданные());
ТекстЗапросаПоСтатусу = «»;
Для Каждого ЭлементСписка Из СписокЗаполнения Цикл
Если НЕ ПустаяСтрока(ТекстЗапросаПоСтатусу) Тогда
ТекстЗапросаПоСтатусу = ТекстЗапросаПоСтатусу + «
|ОБЪЕДИНИТЬ ВСЕ
|»;
КонецЕсли;

ТекстЗапросаПоСтатусу = ТекстЗапросаПоСтатусу + «
|ВЫБРАТЬ « + ?(ПустаяСтрока(ТекстЗапросаПоСтатусу), «РАЗРЕШЕННЫЕ», «») + «
| Док.Ссылка КАК ПодчиненныйДокумент
|ИЗ
| Документ.» + ЭлементСписка.Значение + » КАК Док
|ГДЕ
| Док.ДокументОснование = &парамОснование
| И Док.Проведен
|»;
КонецЦикла;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«парамОснование», СсылкаНаОбъект);
Запрос.Текст = ТекстЗапросаПоСтатусу;
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(«ПодчиненныйДокумент»);

КонецФункции // ПолучитьПодчиненныеДокументы()

Выведем полученные документы:

Процедура ВывестиПодчиненныеДокументы()
Массив = ПолучитьПодчиненныеДокументы();
Для каждого Эл Из Массив Цикл
Сообщить(Эл);
КонецЦикла;
КонецПроцедуры

Как выглядит недокументированный синтаксис оператора ВЫБОР?

Вот нестандартный вариант синтаксиса оператора ВЫБОР:

ВЫБРАТЬ ВЫБОР ДЕНЬНЕДЕЛИ(ДАТАВРЕМЯ(2015, 4, 1)) КОГДА 1 ТОГДА «Понедельник» КОГДА 2 ТОГДА «Вторник» КОГДА 3 ТОГДА «Среда» КОГДА 4 ТОГДА «Четверг» КОГДА 5 ТОГДА «Пятница» КОГДА 6 ТОГДА «Суббота» ИНАЧЕ «Воскресенье» КОНЕЦ КАК ДеньНедели

В этом примере показано, как с помощью опрератора ВЫБОР выводить текстовое представление дня недели.

Как составить запрос к табличной части документа?

Пример запроса:

Построитель.Текст = «ВЫБРАТЬ
| Товары.Ответственный,
| Товары.Ссылка КАК Документ,
| Товары.Номенклатура,
| СУММА(Товары.Сумма) КАК Сумма
|ИЗ
| Документ.ЧекККМ.Товары КАК Товары
|ГДЕ
| Товары.Ссылка.Дата Между &ДатаНач и &ДатаКон
|СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.Ответственный,
| Товары.Номенклатура»;

Особенность этого запроса в том, что мы обращаемся к табличной части «Товары».Поэтому к реквизитам документа «ЧекККМ» мы обращаемся через свойство «Ссылка».Только в этом случае мы сможем получить строки табличной части документа.

Если не указать свойство «Ссылка», то появится ошибка, примерно такого вида:

Источник: https://www.softmaker.kz/zaprosy/primery-zaprosov-v-1s-8.html

Как проверить на пустую ссылку, дату или строку в запросе 1с – ПК Консультант

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

01.12.2019

Запросы, Программирование

Пришла на днях задачка от клиента: Хочу говорит такой-сякой отчет, с такими то данными, ресурсами, группировкам и т.д. Но главное условие этого отчета, что бы выводились только те документы, у которых некий реквизит “ДокументОснование” был не пустой. Фигня делов, накидал сделал и понял… не работает главное условие. Итак разберемся.

Есть к примеру у нас документ “ЗарплатаСотрудника” с реквизитом “ДокументОснование” составного типа:

Пример документа с реквизитов

Первое что я сделал на автомате при реализации условия, что ссылка составного типа не должны быть пустой, это использовал значение “null”:

ВЫБРАТЬ ЗарплатаСотрудника.Ссылка КАК Ссылка, ЗарплатаСотрудника.ДокументОснование КАК ДокументОснованиеИЗ Документ.ЗарплатаСотрудника КАК ЗарплатаСотрудникаГДЕ

НЕ ЗарплатаСотрудника.ДокументОснование ЕСТЬ NULL

ЗарплатаСотрудника.Ссылка КАК Ссылка, ЗарплатаСотрудника.ДокументОснование КАК ДокументОснование Документ.ЗарплатаСотрудника КАК ЗарплатаСотрудника НЕ ЗарплатаСотрудника.ДокументОснование ЕСТЬ NULL

Соответственно не получив результат вспомнил, что NULL – это по сути отсутствующие значения, а не как не нулевое или пустое. Это значение появляется в результате соединений в запросе, обращениям к реквизитам для битой ссылки…

Тогда пришлось использовать второй на вскидку вариант: значение “Неопределено”:

ВЫБРАТЬ ЗарплатаСотрудника.Ссылка КАК Ссылка, ЗарплатаСотрудника.ДокументОснование КАК ДокументОснованиеИЗ Документ.ЗарплатаСотрудника КАК ЗарплатаСотрудникаГДЕ

НЕ ЗарплатаСотрудника.ДокументОснование = НЕОПРЕДЕЛЕНО

ЗарплатаСотрудника.Ссылка КАК Ссылка, ЗарплатаСотрудника.ДокументОснование КАК ДокументОснование Документ.ЗарплатаСотрудника КАК ЗарплатаСотрудника НЕ ЗарплатаСотрудника.ДокументОснование = НЕОПРЕДЕЛЕНО

Этот вариант оказался более рабочим, но и здесь была проблема: если в документе в реквизите “ДокументОснование” никогда ничего не выбирали, то там действительно будет значение “Неопределено”.

Но если в этом реквизите был выбран тип значения, а само значение выбрано не было – то в этом случае в реквизите будет уже пустая ссылка этого типа, а не значение “Неопределено”.

Что меня не устраивало.

И остался у меня последний вариант: проверка на пустую ссылку для всех типов:

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

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

ПустаяСсылка)

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

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

Данный вариант оказался рабочим и документы с пустым полем “ДокументОснование” не попадали в отчет. Но мне данное решение показалось не оптимальным: как минимум оно выглядело не красиво, а как максимум при добавлении нового типа в данный реквизит, пришлось бы переписывать запрос отчета.

Полазив на форумах и почитав методическую информацию было найдено решение со значением NULL. Поскольку NULL появляется при соединения, то в запросе можно получить у реквизита “ДокументОснование” ссылку. Соответственно на уровне SQL все ссылочные значения, получаемые через точку, формируются через левое соединение, что и даст нам NULL при пустых значениях:

ВЫБРАТЬ ЗарплатаСотрудника.Ссылка КАК Ссылка, ЗарплатаСотрудника.ДокументОснование КАК ДокументОснованиеИЗ Документ.ЗарплатаСотрудника КАК ЗарплатаСотрудникаГДЕ

НЕ ЗарплатаСотрудника.ДокументОснование.Ссылка ЕСТЬ NULL

ЗарплатаСотрудника.Ссылка КАК Ссылка, ЗарплатаСотрудника.ДокументОснование КАК ДокументОснование Документ.ЗарплатаСотрудника КАК ЗарплатаСотрудника НЕ ЗарплатаСотрудника.ДокументОснование.Ссылка ЕСТЬ NULL

Вот таким нехитрым способом удалось решить задачу. Если можете предложить решение лучше или оптимальнее пишите. Всегда интересно узнать что-то новое.

К вопросу о соотношении понятий доменное имя и название сайт а хозяйство и право.

Источник:

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

Средства определения пустых ссылок, дат или строк. Рассмотрим, как проверить на пустую ссылку, дату или строку в запросе 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.

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

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

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

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

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

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

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

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

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

В приведенном ниже запросе 1С 8.3 будут возвращен список контактных лиц тех партнеров, у кого не задан сегмент.
ВЫБРАТЬКонтактныеЛицаПартнеров.СсылкаИЗСправочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеровВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СегментыПартнеров КАК СегментыПартнеровПО КонтактныеЛицаПартнеров.Владелец = СегментыПартнеров.Родитель

ГДЕ

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

Пустая дата

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

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

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

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

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

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

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

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

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

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

| НЕ усЕдиницыХранения.

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

| НашРегистрСведений.

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

| (НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент1.ПустаяСсылка) | ИЛИ НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент2.ПустаяСсылка) | ИЛИ…(и т.д.

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

// Пример 5.

если нужно выбрать документы конкретного типа, при составном типе данных, например в регистре «ВыполняемыеЗадания» ресурс «Задание» имеет составной тип, среди значений которого возможен документ «Отбор» |ГДЕ

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

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

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

| РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.

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

Для этого достаточно добавить условие «Где Ложь».

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

| тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)

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

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

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

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

Источник: https://ipt-miit.ru/os/kak-proverit-na-pustuyu-ssylku-datu-ili-stroku-v-zaprose-1s.html

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

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

Средства определения пустых ссылок, дат или строк. Рассмотрим, как проверить на пустую ссылку, дату или строку в запросе 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. сравнение с не заполненным булевым значением:|ГДЕ| усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь// Пример 2. но если это булево определено, то лучше так: // условие на отрицательное булево:|ГДЕ| НЕ усЕдиницыХранения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пустая дата

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

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

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

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

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

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

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

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

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

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

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

Например:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник: https://traffgui.ru/1s-7-7-pustoe-znachenie-v-zaprose-znachenie-v-zaprose-esli.html

Онлайн-школа программирования в 1С

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

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

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Язык запросов 1С 8.3 для начинающих программистов: функции и операторы для работы с типами (ТИПЗНАЧЕНИЯ, ТИП, ССЫЛКА, ЕСТЬNULL, ВЫРАЗИТЬ)

Автор уроков и преподаватель школы: Владимир Милькин

Давайте вспомним, что каждый реквизит (свойство, поле) справочника, документа или любого другого прикладного объекта имеет свой тип. И этот тип мы можем посмотреть в конфигураторе:

В языке запросов существует целый класс функций и операторов для работы с типами реквизитов. Давайте рассмотрим их.

Функция ТИПЗНАЧЕНИЯ

Эта функция принимает один параметр (значение) и возвращает его тип. Для описанного на картинке (выше) реквизита Вкус справочника Еда вернётся следующее:

ВЫБРАТЬ Наименование, Вкус, ТИПЗНАЧЕНИЯ(Вкус)ИЗ Справочник.Еда

Если мы запросим тип поля Наименование, то, как и ожидается, получим Строка:

ВЫБРАТЬ Наименование, ТИПЗНАЧЕНИЯ(Наименование)ИЗ Справочник.Еда

А теперь давайте рассмотрим реквизит ОтличительныйПризнак у справочника Города:

Вы видите, что этот реквизит может иметь один из нескольких типов: Строка, Справочник.Вкусы, Справочник.Цвета. Такой тип реквизитов называется СОСТАВНЫМ.

Если мы попытаемся заполнить значение такого реквизита в режиме 1С:Предприятие, то система спросит нас, какого типа будет вводимое значение:

И только после нашего выбора позволит ввести значение выбранного типа.

Таким образом, элементы справочника одного вида (Справочник.Города) смогут хранить в одном и том же реквизите (ОтличительныйПризнак) значения разных типов (Строка, Цвета или Вкусы).

Вы можете убедиться в этом сами пощёлкав по элементам справочника Города в режиме 1С:Предприятие. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Здесь значение отличительного признака является элементом справочника Вкусы:

Здесь строкой:

А здесь вообще элементом справочника Цвета:

Вот какие возможности открывает перед нами составной тип данных!

Интересно, как поведёт себя функция ТИПЗНАЧЕНИЯ на реквизите ОтличительныйЭлемент, имеющий составной тип данных:
ВЫБРАТЬ Наименование, ОтличительныйПризнак, ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)ИЗ Справочник.Города

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

Тип значения отличительного признака для элемента Россия равен NULL. Мы впервые сталкиваемся с этим типом. Значения данного типа используются исключительно для определения отсутствующего значения при работе с базой данных.

Так и есть, ведь элемент Россия является группой, а не обычным элементом справочника Города, поэтому у него отсутствует поле ОтличительныйПризнак. А тип у отсутствующего значения, как мы прочитали выше, всегда равен NULL.

Идём дальше.

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

Для Красноярска тип признака равен Цвета, потому что значение выбранное в базе является ссылкой на элемент справочника Цвета.

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

Индия снова группа, поэтому значение отсутствует. А тип у отсутствующего значения, как мы помним, равен NULL.

Далее всё аналогично, кроме Сан-Паулу. Это не группа, а обычный элемент справочника (город), но тип его значения пустой. Как так?

А дело вот в чём. Если вы зайдёте в элемент справочника Города с наименованием Сан-Паулу, то увидите, что поле ОтличительныйПризнак совершенно никак не заполнено. Оно пустое. А все незаполненные поля составного типа имеют специальное значение НЕОПРЕДЕЛЕНО.

С НЕОПРЕДЕЛЕНО мы также сталкиваемся впервые.

Значение НЕОПРЕДЕЛЕНО применяется, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Это как раз наша ситуация.

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

Функция ТИП

Она принимает всего один параметр – имя примитивного типа (СТРОКА, ЧИСЛО, ДАТА, БУЛЕВО), либо имя таблицы, тип ссылки которой нужно получить.

Результатом данной конструкции будет значение типа Тип для указанного типа.

Звучит туманно, не правда ли?

Давайте рассмотрим применение данной конструкции и всё сразу станет на свои места.

Пусть нам требуется отобрать все записи справочника Города, у которых составной реквизит ОтличительныйПризнак имеет значение типа СТРОКА:

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

Теперь давайте отберём все записи, у которых значения реквизита ОтличительныйПризнак являются ссылками на элементы справочника Цвета (таблица Справочник.Цвета):

ВЫБРАТЬ Наименование, ОтличительныйПризнак, ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)ИЗ Справочник.ГородаГДЕ ТИПЗНАЧЕНИЯ(ОтличительныйПризнак) = ТИП(Справочник.Цвета)

Отступление

Как вы помните, некоторые элементы справочника Города не имеют реквизита ОтличительныйПризнак. Функция ТИПЗНАЧЕНИЯ для таких элементов выдаёт NULL.

Как можно сделать отбор таких элементов в запросе? Для этого предусмотрен специальный логический оператор ЕСТЬ NULL (не путать с функцией ЕСТЬNULL, которую мы рассмотрим ниже). Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Вот пример его использования:

ВЫБРАТЬ Наименование, ОтличительныйПризнак, ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)ИЗ Справочник.ГородаГДЕ ОтличительныйПризнак ЕСТЬ NULL

Отлично.

Но есть и такие элементы (Сан-Паулу), у которых реквизит ОтличительныйПризнак (составного типа) просто не заполнен и равен специальному значению НЕОПРЕДЕЛЕНО.

Чтобы отобрать такие записи следует использовать другую конструкцию:

ВЫБРАТЬ Наименование, ОтличительныйПризнак, ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)ИЗ Справочник.ГородаГДЕ ОтличительныйПризнак = НЕОПРЕДЕЛЕНО

Но сравнение с НЕОПРЕДЕЛЕНО для определения пустых (не заполненных) реквизитов будет работать только для составных типов.

Кстати, у логического оператора ЕСТЬ NULL форма отрицания выглядит следующим образом:

ВЫБРАТЬ Наименование, ОтличительныйПризнакИЗ Справочник.ГородаГДЕ ОтличительныйПризнак ЕСТЬ НЕ NULL

Логический оператор ССЫЛКА

Оператор ССЫЛКА позволяет проверить, является ли значение выражения, указанного слева от него, ссылкой на таблицу, указанную справа.

К примеру, давайте выберем из справочника Города только те записи, у которых значение составного реквизита ОтличительныйПризнак являются ссылкой на элемент справочника Вкусы:

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

Как вы помните, эту же задачу мы могли бы решить используя ТИПЗНАЧЕНИЯ и ТИП:

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

Функция ЕСТЬNULL

Функция предназначена для замены значения NULL на другое значение.

Мы помним, что значение NULL возвращается в том случае, если запрашиваемый реквизит (поле, свойство) не существует.

Как например, реквизит ОтличительныйПризнак для групп справочника Города:

ВЫБРАТЬ Наименование, ОтличительныйПризнакИЗ Справочник.Города

Функция ЕСТЬNULL поможет нам вывести другое значение в том случае, если это значение равно NULL. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Пусть в данном случае это будет строка “Такого реквизита нет!”:

ВЫБРАТЬ Наименование, ЕСТЬNULL(ОтличительныйПризнак, “Такого реквизита нет!”)ИЗ Справочник.Города

Получается, что если первый параметр функции ЕСТЬNULL не равен NULL, то возвращается он. Если же он равен NULL, то возвращается второй параметр.

Функция ВЫРАЗИТЬ

Эта функция предназначена только для полей, имеющих составной тип. Отличным примером такого поля является свойство ОтличительныйПризнак у элементов справочника Города.

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

Для поля ОтличительныйПризнак такими допустимыми типами являются СТРОКА, Справочник.Цвета и Справочник.Вкусы.

Иногда возникает необходимость привести значения составного поля к какому-либо определенному типу.

Давайте приведём все значения поля ОтличительныйПризнак к типу Справочник.Цвета:

ВЫБРАТЬ Наименование, ВЫРАЗИТЬ(ОтличительныйПризнак КАК Справочник.Цвета)ИЗ Справочник.Города

В результате, все значения элементов, которые имели тип Справочник.Цвета, остались заполненными и оказались приведенными к указанному типу. Все значения других типов (СТРОКА, Справочник.Вкусы) теперь стали равны NULL. В этом состоит особенность приведения типа при помощи функции ВЫРАЗИТЬ.

Приводить тип можно или к примитивному типу (БУЛЕВО, ЧИСЛО, СТРОКА, ДАТА) или к ссылочному типу. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Но тип, к которому делается приведение, обязательно должен входить в список типов для данного составного поля, иначе система выдаст ошибку.

Пройдите тест

а) Напишите запрос, который запрашивает из справочника Города реквизиты Наименование и Мэр, а также тип значения, которое находится в составном поле Мэр:

Источник: https://helpme1c.ru/yazyk-zaprosov-1s-8-3-dlya-nachinayushhix-programmistov-funkcii-i-operatory-dlya-raboty-s-tipami-tipznacheniya-tip-ssylka-estnull-vyrazit

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.