Проверка на пустоту в запросе 1С 8.3 (8.2)
Очень часто даже опытные программисты ошибаются при методе проверки наличия строк в результате запроса. Рассмотрим, как правильно, а самое главное – оптимально с точки зрения производительности проверять запрос на наличие строк.
Очень часто для проверки наличия строк в результате запроса программисты не просто выполняют запрос, а выгружают результат в таблицу и проверяют по количеству строк (Таблица.Количество()<>0) или же получают выборку и смотрят на количество в выборке (Выборка.Количество()<>0). Однако это не оптимально с точки зрения производительности системы.
Правильно для проверки результата запроса на наличие строк использовать метод результата запроса «Пустой()».
Рассмотрим пример функции, которая ищет запросом контрагента по ИНН. Если такого контрагента не найдено, возвращает Ложь, если такой контрагент существует — Истина:
Функция КонтрагентСТакимИННСуществует(ИНН) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Ссылка |ИЗ Справочник.Контрагенты КАК Контрагенты |ГДЕ ИНН = &ИНН"; Запрос.УстановитьПараметр("ИНН", ИНН); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции
Читайте и другие статьи по запросам и конфигурированию в 1С.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
ГосподинДтКт:
кто сказал и где написано что атк правильно?
Аноним:
я говорю, написано здесь. Так правильно. Можно без «иначе». результат вернет либо истину, либо ложь в любом случае.
Аноним:
т.е.:
Если Результат.Пустой() Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
888:
А можно просто
Возврат Результат.Пустой();