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

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

  • автор:

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

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

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

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;

Возврат НЕ Запрос.Выполнить().Пустой()

Методическая рекомендация (полезный совет)

2. В то же время если требуется выбрать (или выгрузить) результат запроса, то предварительный вызов метода Пустой не требуется.
Например, вместо:

РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда // избыточный вызов
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
.

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
.

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

  • проверяю результат запроса на пустату, если есть данные то выполняю. Экономит время сервера.

    Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЕдиницыИзмерения.Коэффициент |ИЗ | Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения |ГДЕ | ЕдиницыИзмерения.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ЕдИзм); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат 0; КонецЕсли; ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ВыборкаДетальныеЗаписи.Следующий(); Возврат ВыборкаДетальныеЗаписи.Коэффициент;
    Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЕдиницыИзмерения.Коэффициент |ИЗ | Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения |ГДЕ | ЕдиницыИзмерения.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ЕдИзм); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат 0; КонецЕсли; ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ВыборкаДетальныеЗаписи.Следующий(); Возврат ВыборкаДетальныеЗаписи.Коэффициент; 

    0 0 0 0 2 Скопировано.
    ред. 6 лет назад

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

    Орфографическая ошибка в пустату: пустату

    Шаблоны кода 1С

    Секреты TurboConf

    TurboConf ИР

    Нейросети и AI

    Лайфхаки 1С

    Бубен админа

    1С не всерьез

    Комментарии

    Has
    #1, 10 июня 2016 13:51
    Нравится 0 Ответить
    babys
    #2, 15 марта 2017 10:32

    Ну только если этот блок из цикла вызывать. А при разовом вызове, затраты копеечные, не стоят этих трех строк.

    Нравится 0 Ответить

    См. также

    sale

    sale

    fastcode_tg

    courses_fastcode

    courses_fastcode

    Подтверждение действия
    Вы действительно хотите удалить комментарий?
    Отмена Удалить

    • © 2013-2024 FastCode
    • Контакты
    • Пользовательское соглашение

    × Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (6К участников)
    Присоединиться

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

    Есть запрос с параметром(список значений)

    как проверить что параметр пустой?

    (1) В последней версии платформы у объекта запрос есть свойство, «параметры» кажеться — тип Структура — там все параметры

    (1) можно просто список значений взять и проверить.

    Уточню, мне это надо ВНУТРИ ЗАПРОСА проверить,
    ЕСТЬ NULL не катит — ругается, количество строк в списке не знаю как проверить

    Запрос.Текст =
    «Выбрать
    .
    .
    ГДЕ » +?(Список.Количество() = 0, «ИСТИНА», «Таблица.Номенклатура В (&Список)») + И .
    . «;

    (5) В запросе так нельзя

    (5)а понял сформировать текст так можно,
    только у меня компановка там нет у меня возможности текст запроса менять

    Еще уточню задачу,

    Нужны к примеру остатки ТМЦ из регистраНакопления,
    ТМЦ должно быть в спискеТМЦ или все остатки если список ТМЦ не задан

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

    .
    .
    ГДЕ » +?(Список.Количество() = 0, «ИСТИНА», «Таблица.Номенклатура В (&Список)») + и
    .
    А конструкция
    Выбрать
    когда
    .
    тогда
    .
    иначе
    .
    конец
    неподходит?

    (10) не подходит
    (10) не подходит

    конструкция
    Выбрать
    когда

    а условие какое?

    Вобще я точно не знаю но можно вообще не ставить условий =)
    Далее уже в настройках отчёта ставиш ОТБОР . и выбираеш что тебе нужно .

    (0) проверяй снаружи запроса и генерируй разный текст в зависимости от результата проверки

    И ещё . создаёш форму .
    Процедура ПриОткрытии()
    там можно отловить текст запроса. (я видел но делать с ним чтонибудь я не пробовал)

    В типовой конфе ЗУП используется следующая методика — В запросе надо проверить на пустоту ВидРасчета, так это делается следующим образом (у вида расчета составной тип):
    ВЫБОР
    КОГДА ВидРасчета.Код ЕСТЬ NULL ТОГДА
    .
    ИНАЧЕ
    .
    КОНЕЦВЫБОРА

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

    (17) это не то

    УсловиеНаПустотуСписка = ?(ТвойСписок.Количество() > 0, » И ИСТИНА», «И ЛОЖЬ»);
    ТекстЗапроса =
    «.
    ВЫБОР
    КОГДА ИСТИНА» + УсловиеНаПустотуСписка + »
    .
    ИНАЧЕ
    .
    КОНЕЦВЫБОРА

    >>Еще уточню задачу,

    >>Нужны к примеру остатки ТМЦ из регистраНакопления,
    >>ТМЦ должно быть в спискеТМЦ или все остатки если список ТМЦ не задан

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

    дык Условие В так и отрабатывает. Если список пустой то оно — всегда дает ИСТИНА, если не пустой, то ИСТИНА выдается только по условию вхождения в список.
    Или я чего-то не понял?

    Как проверить, что выборка из запроса пустая?

    Нужно проверить, введено ли заявление по сотруднику или нет.

    Известно, что сейчас документа Заявление в базе нет.

    Как мне проверить, что в выборке нет данных?

    ВЫБРАТЬ ВЫБОР КОГДА Заявление.СтароеНачало ЕСТЬ NULL ТОГДА ДОБАВИТЬКДАТЕ( ДАТАВРЕМЯ(2017,12,31,0,0,0), ДЕНЬ, 1) ИНАЧЕ Заявление.СтароеНачало КОНЕЦ КАК СтароеНачало ИЗ (ВЫБРАТЬ ЗаявлениеПереносы.Ссылка КАК Ссылка, ЗаявлениеПереносы.НомерСтроки КАК НомерСтроки, ЗаявлениеПереносы.СтароеНачало КАК СтароеНачало, ЗаявлениеПереносы.СтароеКонец КАК СтароеКонец, ЗаявлениеПереносы.НовоеНачало КАК НовоеНачало, ЗаявлениеПереносы.НовоеКонец КАК НовоеКонец ИЗ Документ.Заявление.Переносы КАК ЗаявлениеПереносы) КАК Заявление

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

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