Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.03.2019

Просмотров: 50375

Скачиваний: 8599

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Документация «1С:Предприятие 8.3. Руководство разработчика», раздел 8.2.17 «Условия в
языке запросов».

В данном случае (листинг 1.32) мы получили накладные за прошлый месяц с помощью
сложного условия, где простые логические выражения соединены логическим союзом И.
Но это сделано просто для примера. Такой же результат можно получить, если в условии
отбора использовать оператор МЕЖДУ, который проверяет результат вхождения
значения в диапазон, вместе с границами диапазона (листинг 1.33).

Листинг 1.33. Вывод документов «ПриходнаяНакладная» за прошлый месяц

Как получить записи таблицы, содержащие строки, соответствующие заданному шаблону
Этот пример является продолжением предыдущего примера, но в данном случае
рассмотрим, как с помощью условия отбора в предложении ГДЕ получить записи
таблицы, содержащие строки, соответствующие заданному шаблону.

В нашей демонстрационной конфигурации существует справочник Клиенты. Полностью
список всех элементов справочника представлен далее, на рис. 1.27, в верхней таблице.
Предположим, нам нужно отобрать из справочника тех клиентов, в наименовании которых
встречается подстрока «Иван».

Для этого в тексте запроса после ключевого слова ГДЕ зададим условие отбора, в
котором сравним значение поля Наименование со строкой шаблона «%Иван%» при
помощи оператора ПОДОБНО (листинг 1.34).

Листинг 1.34. Отбор записей из справочника «Клиенты» по условию


background image

Результатом выполнения оператора ПОДОБНО будет Истина или Ложь в зависимости
от того, удовлетворяет шаблону значение выражения (в данном случае поля
Наименование) или нет.

В условии отбора мы используем литерал строкового типа ("%Иван%"), который
представляет собой набор символов, заключенных в кавычки. Символ «%» (процент)
заменяет в шаблоне строки любую последовательность символов.

В результате выполнения запроса на рис. 1.27 в нижней таблице мы видим только тех
клиентов, часть наименования которых совпадает с подстрокой «Иван», а в верхней
таблице для сравнения приведен список всех элементов справочника Клиенты.

Рис. 1.27. Отбор записей из справочника «Клиенты» по условию

Теперь немного изменим условие, чтобы узнать, телефоны каких клиентов не
соответствуют шаблону «_-___-___-__-__». В заданном шаблоне символ «-» (тире)
означает наличие символа тире в строке. А символ «_» (подчеркивание) – это служебный
символ, используемый в шаблонах. Он заменяет в шаблоне строки один произвольный
символ. Например, строка с номером телефона, соответствующего шаблону, может
иметь вид «8-916-222-33-55».

подробнее

Встроенная справка: 

Справка > Содержание справки > 1С:Предприятие >

Встроенный язык > Работа с запросами > Синтаксис текста запросов >
Использование выражений в языке запросов > Логические выражения > Подобно

.

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


background image

Листинг 1.35. Отбор записей из справочника «Клиенты» по условию

В результате выполнения запроса на рис. 1.28 в нижней таблице мы видим только тех
клиентов, телефоны которых не соответствуют шаблону «_-___-___-__-__», а в верхней
таблице для сравнения приведен список всех элементов справочника Клиенты.

Рис. 1.28. Отбор записей из справочника «Клиенты» по условию

Таким образом, с помощью оператора НЕ … ПОДОБНО можно найти те строки, которые
не соответствуют некоторому шаблону, например, узнать, какие телефоны были введены
в базу данных неправильно.

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

Например, пользователь в режиме 1С:Предприятие может задать значение условия
отбора при формировании отчета, при просмотре списка справочника и т. д. Запросу,
формирующему отчет или список, заранее не известно значение отбора, которое введет
пользователь. То есть в данном случае требуется передавать в запрос произвольное
значение отбора, а не задавать его жестко в тексте запроса.

Для этого в условии отбора, в предложении ГДЕ языка запросов, можно использовать
параметры. В тексте запроса параметры обозначаются символом «&», после которого
следует имя параметра (например, параметр &Клиент).

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


background image

Откроем консоль и в окно Текст запроса введем текст запроса из примера, в котором
мы отбирали из справочника тех клиентов, в наименовании которых встречается
определенная подстрока. При помощи оператора ПОДОБНО мы сравнивали значение
поля Наименование со строкой шаблона «%Иван%» (листинг 1.36).

Листинг 1.36. Отбор записей из справочника «Клиенты» по условию

Изменим в данном запросе условие отбора следующим образом (листинг 1.37).

Листинг 1.37. Отбор записей из справочника «Клиенты» по параметризированному условию

В этом запросе мы используем параметр ЧастьНаименования. Символ «%» заменяет в
шаблоне строки любую последовательность символов, а вместо строки «Иван» в
исходном запросе (см. листинг 1.36) мы используем значение параметра
&ЧастьНаименования.

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

Так, если мы зададим значение параметра равным строке «Иван», в результате
выполнения запроса увидим только тех клиентов, часть наименования которых совпадает
с подстрокой «Иван» (рис. 1.29).


background image

Рис. 1.29. Выполнение параметризированного запроса в консоли запросов

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

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

подробнее

Передача параметров в запрос с помощью встроенного языка рассматривается в разделе
«

Передача параметров в запрос

».

Аналогично (с использованием параметров) мы можем переписать запрос для отбора из
справочника тех клиентов, телефоны которых не соответствуют заданному шаблону
(листинг 1.38).