Опубликован: 21.09.2010 | Уровень: для всех | Доступ: свободно
Лекция 7:

Запросы, обработки

Как видите, в результат запроса попали не только элементы справочника ( Одеколон, Стрижка и т.д.), но и группы ( Парфюмерия, Парикмахерские услуги ). Для того, чтобы при работе с иерархическим справочником ограничить выбор всеми элементами, исключая группы, в текст запроса нужно ввести условие отбора. Обратите внимание на поле ЭтоГруппа, его можно увидеть на рис. 7.14. Это поле у обычных элементов справочника принимает значение ложь, у групп - истина.

Для отбора элементов можно использовать ключевое слово ГДЕ. Оно позволяет задавать условия отбора. Напишем запрос, который отбирает наименования элементов справочника Номенклатура, исключая наименования групп ( рис. 7.15).

ВЫБРАТЬ
	ТабНоменклатура.Наименование
ИЗ
	Справочник.Номенклатура КАК ТабНоменклатура
ГДЕ
	НЕ ТабНоменклатура.ЭтоГруппа
Результат выполнения запроса

увеличить изображение
Рис. 7.15. Результат выполнения запроса

Рассмотрим еще один вариант отбора результатов запроса, а заодно еще немного продвинемся в изучении Конструктора запроса.

Нам нужно отобрать среди документов поступления материалов лишь те, сумма которых превышает 2000 рублей, и вывести в результаты запроса даты, номера документов, ФИО материально-ответственного лица, принявшего материалы, а так же сумму документа, упорядочив выводимые строки по сумме документа.

Откроем Конструктор запроса и на вкладке Таблицы и поля отберем в область Таблицы таблицу документов ПоступлениеМатериалов, в область Поля перенесем следующие поля, рис. 7.16:

  • ПоступлениеМатериалов.Дата
  • ПоступлениеМатериалов.Номер
  • ПоступлениеМатериалов.ОтветственныйСотрудник
  • ПоступлениеМатериалов.СтоимостьМатериалов
Конструктор запроса, вкладка Таблицы и поля

увеличить изображение
Рис. 7.16. Конструктор запроса, вкладка Таблицы и поля

Теперь нам нужно задать условие отбора. Для этого перейдем на вкладку Условия. Здесь нам нужно перенести поле СтоимостьМатериалов из области Поля в область задания условий. После этого ( рис. 7.17) нужно выбрать условие выбором их списка (мы выбрали условие "больше") и заменить выражение СтоимостьМатериалов на число 2000.

Конструктор запроса, вкладка Таблицы и поля

увеличить изображение
Рис. 7.17. Конструктор запроса, вкладка Таблицы и поля

Здесь нас подстерегает одна особенность конструктора запросов. Дело в том, что и выражение СтоимостьМатериалов, и число 2000 он будет воспринимать как имя переменной, которая должна быть передана в запрос до его исполнения. Нам же нужно, чтобы 2000 было воспринято именно как число, а не как имя переменной. Для того, чтобы это сделать, установим галочку в поле Произвольное. Это приведет к тому, что поле Условие превратится в одну строку, в которой будет написано следующее:

ПоступлениеМатериалов.СтоимостьМатериалов > &2000

Символ & нам не нужен - он, как раз, и даст понять системе, что 2000 - это переменная. Поэтому мы удалим его вручную, и, в итоге, получим следующий вид вкладки Условие, рис. 7.18.

Конструктор запроса, вкладка Условия

увеличить изображение
Рис. 7.18. Конструктор запроса, вкладка Условия

Для того чтобы упорядочить результат запроса по сумме документа, перейдем на вкладку Порядок, из области Поля добавим в область настройки упорядочивания поле СтоимостьМатериалов и зададим их упорядочивание, рис. 7.19.

Конструктор запроса, вкладка Порядок

увеличить изображение
Рис. 7.19. Конструктор запроса, вкладка Порядок

Работа с Конструктором запроса завершена. Нажмем на кнопку ОК, текст запроса попадет в поле обработки Консоль запросов, нажмем на кнопку Выполнить и убедимся в том, что запрос выполнен правильно, рис. 7.20.

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

увеличить изображение
Рис. 7.20. Текст запроса и результат выполнения запроса

Вот, какой текст сгенерировал Конструктор запроса:

ВЫБРАТЬ
	ПоступлениеМатериалов.Дата,
	ПоступлениеМатериалов.Номер,
	ПоступлениеМатериалов.ОтветственныйСотрудник,
	ПоступлениеМатериалов.СтоимостьМатериалов КАК СтоимостьМатериалов
ИЗ
	Документ.ПоступлениеМатериалов КАК ПоступлениеМатериалов
ГДЕ
	ПоступлениеМатериалов.СтоимостьМатериалов > 2000

УПОРЯДОЧИТЬ ПО
	СтоимостьМатериалов

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

Существуют следующие виды соединения таблиц:

  1. Левое внешнее соединение;
  2. Правое внешнее соединение;
  3. Полное внешнее соединение;
  4. Внутреннее соединение;

Рассмотрим эти виды соединения таблиц на примере.

В нашей конфигурации есть два взаимосвязанных справочника. А именно, речь идет о справочниках Номенклатура и ЕдиницыИзмерения. Элементам справочника Номенклатура могут быть назначены единицы измерения, взятые из справочника ЕдиницыИзмерения. Причем, в справочнике Номенклатура могут существовать элементы, которым не назначена ни одна единица измерения, а в справочнике ЕдиницыИзмерения могут присутствовать элементы, которые не назначены элементам справочника Номенклатура. В таблице 7.1 представлена таблица справочника Номенклатура - наименования номенклатурных позиций и соответствующие им единицы измерения.

Таблица 7.1. Таблица справочника Номенклатура
Номенклатура Единица измерения Группа
Бальзам для волос ложь
Духи Штука ложь
Завивка Час ложь
Лак для волос Упаковка ложь
Одеколон Упаковка ложь
Парикмахерские услуги истина
Парфюмерия истина
Стрижка Час ложь
Уход за волосами истина

Как видите, Бальзам для волос не имеет установленной единицы измерения, остальным элементам единицы измерения назначены. Группам, естественно, единицы измерения так же не назначены.

В таблице 7.2 вы можете видеть состав справочника ЕдиницыИзмерения.

Таблица 7.2. Таблица справочника ЕдиницыИзмерения
Единица измерения
Килограмм
Метр
Упаковка
Час
Штука
Ринат Гатауллин
Ринат Гатауллин

Здравствуйте. Интересует возможность получения диплома( https://intuit.ru/sites/default/files/diploma/examples/P/955/Nekommerch-2-1-PRF-example.jpg ). Курс пройден. Сертификат не подходит. В сертификате ошибка, указано по датам время прохождения около 14 дней, хотя написано 576 часов.

Вячеслав Кузнецов
Вячеслав Кузнецов

Здравствуйте.

Как оплатить курс?

Владимир Крючков
Владимир Крючков
Россия, Москва