В статье вы узнаете, как применяется пустая ссылка в запросе 1с. Пустые ссылки можно использовать в различных конструкциях языка запросов:
- условиях раздела ГДЕ;
- в качестве значения поля запроса;
- конструкциях ВЫБОР КОГДА…;
- конструкциях ЕСТЬNULL;
- условиях связей таблиц.
Пустая ссылка в условиях запросов 1с
Для использования пустой ссылки ее необходимо передать ее в запрос при помощи параметра. Также можно использовать конструкцию ЗНАЧЕНИЕ.
ЗНАЧЕНИЕ(<ОбъектМетаданных>.ПустаяСсылка)
Здесь ОбъектМетаданных выражение вида:
- Документ.ИмяДокумента;
- Справочник.ИмяДокумента и т.д.
Пример 1. При помощи запроса получить верхний уровень иерархии справочника Номенклатура.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)";
Пример 2. При помощи запроса получить все элементы справочника Номенклатура, кроме тех, у кого нет родителя.
Запрос = Новый Запрос;
ПустаяСсылка = Справочники.Номенклатура.ПустаяСсылка;
Запрос.УстановитьПараметр("ПустаяСсылка", ПустаяСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.Родитель = &ПустаяСсылка";
Следует помнить, что в запросе нельзя реализовать проверку сразу на все пустые ссылки. Всегда требуется указывать, пустую ссылку какого справочника, документа вы имеете в виду.
Пустая ссылка в качестве значения поля
Пустая ссылка в запросе 1с может использоваться в качестве значения поля. Как в чистом виде, так и в конструкциях ВЫБОР КОГДА… или ЕСТЬNULL.
Пример 3. Создать пустую временную таблицу ТаблицаНоменклатуры.
Запрос.Текст =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Номенклатура,
| 0 КАК Цена
|ПОМЕСТИТЬ ТаблицаНоменклатуры
|ГДЕ
| ЛОЖЬ
Пример 4. При помощи запроса получить список номенклатуры со значениями дополнительного сведения Цвет.
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| ЕСТЬNULL(Сведения.Значение,
| ЗНАЧЕНИЕ(Справочник.ЗначенияСвойствОбъектов.ПустаяСсылка)) КАК Цвет
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК Сведения
| ПО Номенклатура.Ссылка = Сведения.Объект
| И Сведения.Свойство = &СвойствоЦвет";
Пример 5. В запросе из предыдущего примера использовать конструкцию ВЫБОР КОГДА… вместо ЕСТЬNULL.
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА НЕ Сведения.Значение ЕСТЬ NULL
| ТОГДА Сведения.Значение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ЗначенияСвойствОбъектов.ПустаяСсылка)
| КОНЕЦ КАК Цвет
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК Сведения
| ПО Номенклатура.Ссылка = Сведения.Объект
| И Сведения.Свойство = &СвойствоЦвет";
Пустая ссылка в связях запроса 1с
Проверку на пустую ссылку можно использовать и в условиях связи таблиц.
Пример 6. Получить список номенклатуры, а также значения дополнительного сведения Индекс. Индекс выводить только для номенклатуры с заполненным реквизитом СтранаПроисхождения.
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Сведения.Значение КАК ПочтовыйИндекс
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК Сведения
| ПО (Номенклатура.Ссылка = Сведения.Объект
| И Сведения.Свойство = &СвойствоИндекс
| И Номенклатура.СтранаПроисхождения
| <> ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка))";
Также прочитайте статью о структуре оператора Выбрать, языка запросов: Язык запросов 1с — оператор Выбрать
Добавить комментарий