Обучающие статьи. Урок - Простые запросы и условия в BAS

Эта статья была обновлена 03 Июня 2022, Пт
Оглавление
  1. Запросы в языке программирования BAS
  2. Конструкция запроса
  3. Простой запрос к справочнику номенклатура
  4. Простые запросы и условия в BAS
  5. Простой запрос к справочнику номенклатура с условием

Запросы в языке программирования BAS

Наиболее важная часть. Запрос, это некий текст команд, записанных в строковом выражении для обращения к базе денных. Как мы помним из теоретической части курса – база BAS это набор таблиц тесно связанных друг с другом. Запрос как раз и нужен, чтобы получить выборку каких-то данных из определенной таблицы или даже нескольких таблиц, объединяя это в один результат. 

Конструкция запроса

Запрос = Новый Запрос;
Запрос.Текст = «<Текст запроса>»;
РезультатЗапроса = Запрос.Выполнить.Выгрузить();

Давайте разберем. В первой строке мы присвоили переменную «Запрос» новому типу Запрос.

Далее указали сам текст запроса, который, кстати, тоже может быть переменной, организованной ранее. Третей строкой мы указали запросу «Выполниться», а затем «Выгрузить()» результат в переменную «РезультатЗапроса». Итогом наших действий станет таблица значений в переменной «РезультатЗапроса». Метод «Выгрузить()» чем-то похож на метод таблицы значений «ВыгузитьКолонку()».

Текст запроса. Чтобы не писать все вручную, нам на помощь приходит конструктор запросов BAS.
Открыть его можно через контекстное меню в любом месте модуля. После завершения конструирования на этом месте будет текст запроса.

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

Обратите внимание, из какого места я вызвал контекстное меню, между двумя кавычками.

Конструктор задаст вопрос, нужно ли нам в указанном месте создать текст запроса – соглашаемся.

Сам конструктор выглядит так:

Конструктор запроса

Давайте пройдемся кратко по закладкам.

Таблицы и поля – тут мы укажем, какие именно нам нужны таблицы, откуда мы собираемся получить данные. И поля это собственно данные, например наименование. Это основная закладка

Группировка – бывают такие ситуации, когда нужно сгруппировать несколько строк с одинаковыми значениями, в этом случае вам на эту закладку. Тут так же можно суммировать некоторые выражения.

Условия – на этой закладке можно задавать определенные условия запросов.

Дополнительно – тут можно указать параметры выборки, например, выбрать только одну запись или только разрешенные или сделать выборку в виртуальную таблицу. Виртуальная таблица это тоже таблица BAS, вот только ее нигде не существует вне этого запроса. Этот инструмент будет нам полезен в сложных запросах.

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

Порядок – на этой закладке можно установить сортировку выводимых данных. Эта закладка визуализация метода «Сортировать()» от таблицы значений.

Итоги – тут можно указать, по какому полю сделать итоги и что суммировать. Полученный результат запроса, будет иметь вид дерева. Итоги тоже можно отнести к сложным запросам.

Построитель – эту закладку пока пропустим, для нее будет отдельная тема.

Пакет запросов – тут будут расположены пакеты запросов, если их несколько.

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

Конструктор запроса. Формирование текста

Простой запрос к справочнику номенклатура

Текст запроса

Запрос можно изменять, если повторно вызвав, конструктор, находясь курсором на тексте запроса. Сам текст запроса можно редактировать по кнопке «Запрос» в левом нижнем углу конструктора запросов.

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

Результат выгрузки запроса

В результате получаем знакомую уже нам таблицу значений с одной колонкой «Наименование». Если раскрыть саму таблицу внутри нее знакомая строка таблицы значений со значением наименование одной из номенклатур. Вот так просто работает запрос в BAS.

Простые запросы и условия в BAS

Давайте детально разберем закладку «Условия» у конструктора запросов. Откройте ее.

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

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

Давайте попробуем на практике. Возьмем запрос из задания № 1 прошлого урока и добавим условие. Базовая единица измерения, ее код, равен «2009»(проверьте наличие этого кода в режиме предприятия, если такого нет, укажите тот, что есть у вас). Таким образом, в выборку запроса попадут только те позиции, у которых код равен «2009».

Начнем с конструктора запроса. Открываем его как на предыдущем уроке и переходим на закладку условия:

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

Развернем таблицу Номенклатура, далее найдем поле «БазоваяЕденицаИзмерения», развернем и ее, найдем в ней уже поле «Код» и два раза кликнем на нем. В списке условий будет автоматически сформировано условие и его текст, как на картинке выше. Разберем строку с условием. Колонка «Номер» просто отражает номер условия, этот номер ни на что не влияет. Колонка «Произвольное», если установить тут галочку, то текст условия можно отредактировать вручную. Пока не будем так делать. Колонка «Условие», собственно текст условия. В непроизвольной форме в этой колонке существует мини конструктор. Текст колонки разделен на несколько колонок, первая: это поле к которому будет идти условие. Вторая: это вид сравнения и третья- это псевдоним условия. Псевдоним произволен, он чем-то похож на тот псевдоним, который мы находили на закладке «Объединения/Псевдонимы». Сохраним запрос.

В тексте запроса появится блок с оператором «ГДЕ» этот оператор указывает на наличие условий в запросе. Но это еще не все. Для того чтобы задать значение псевдонима нашего условия, вне текста запроса, будем использовать такую конструкцию:

Пример условия

Весь текст выглядит так:

Простой запрос к справочнику номенклатура с условием

Листинг кода 1

Вернемся в конструктор запросов на закладку условия и разберем значения колонки «Вид сравнения».

Колонка Вид сравнения

Операторы сравнения мы разбирали еще на уроках логических условий, а вот начиная с вида условия «В» у нас открываются новые возможности сравнений.

«В» - как можно логически предположить обозначает «в чем-то» в массиве, в списке значений.

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

«Между» - в основном используется для дат. Например, вам нужно отобрать документы за месяц, сделать это можно так: ‘20160701’ МЕЖДУ ‘20160801’.

«Подобно» - этот вид сравнения позволяет сравнить строковое значение, например наименование с шаблоном поиска. Шаблон может содержать один или несколько операторов:

  1. % (процент): последовательность, содержащая любое количество произвольных символов
  2. _ (подчеркивание): один произвольный символ
  3. [...] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок. В перечислении могут задаваться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона
  4. [^...] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания

Например, такая конструкция "[Cc]тул%"вернет Стул, стул, стульчик, стул офисный и т.д.

Так же, наша компания проводит обучение по курсам:

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

Если у вас остались вопросы, Вы всегда можете обратиться к нашим аналитикам по телефонам:
(093) 090-70-20
(095) 090-70-20
(068) 090-70-20

( 18 )
Комментарии
Пока нет комментариев
Написать комментарий

Свяжитесь с нами

Если вы хотите получить больше информации, заполните эту форму. Мы свяжемся с вами в ближайшее время.

(073) 090-70-20 (095) 090-70-20 (068) 090-70-20 info@finsoft.ua