13482

Извлечение информации с помощью запросов

Лабораторная работа

Информатика, кибернетика и программирование

Извлечение информации с помощью запросов Лабораторная работа Задача 1. Создание обработки ИзвлечениеИнформации для отображения результатов запроса. 1. Откройте базу созданную в предыдущей лабораторной в режиме конфигуратора. 2. Создайте обработку ИзвлечениеИнф

Русский

2013-05-11

415.5 KB

1 чел.

Извлечение информации с помощью запросов

Лабораторная работа

Задача 1. Создание обработки ИзвлечениеИнформации для отображения результатов запроса.

1. Откройте базу, созданную в предыдущей лабораторной в режиме конфигуратора.

2. Создайте обработку ИзвлечениеИнформации.

3. Перейдите на закладку Формы и создайте форму без дополнительных панелей инструментов.

4. Расположите на форме элементы управления кнопка (ОтобразитьИнформацию) и поле списка (СписокОтобранныхДанных).

5. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались сведения о квитанциях (договор и сумма по квитанции). Для этого перейдите на закладку Модуль и наберите текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Договор, СуммаПоКвитанции ИЗ РегистрСведений.Квитанции";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Договор)+" "+Строка(Результат.СуммаПоКвитанции)+" руб.");

КонецЦикла;

КонецПроцедуры

6. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

7. Модифицируйте текст процедуры так, чтобы полученная информация сортировалась, а поле СуммаПоКвитанции имело бы псевдоним Сумма. Для этого перейдите на закладку Модуль и исправьте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Договор, СуммаПоКвитанции КАК Сумма ИЗ РегистрСведений.Квитанции УПОРЯДОЧИТЬ ПО Сумма УБЫВ";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Договор)+" "+Строка(Результат.Сумма)+" руб.");

КонецЦикла;

КонецПроцедуры

Замечание. Если необходима сортировка по возрастанию, то используйте ключевое слово ВОЗР.

8. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

9. Модифицируйте текст процедуры так, чтобы полученная информация сортировалась, а после сортировки выбиралось бы только два первых значения. Для этого перейдите на закладку Модуль и исправьте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 2 Договор, СуммаПоКвитанции КАК Сумма ИЗ РегистрСведений.Квитанции УПОРЯДОЧИТЬ ПО Сумма УБЫВ";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Договор)+" "+Строка(Результат.Сумма)+" руб.");

КонецЦикла;

КонецПроцедуры

10. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 2. Извлечение информации из данных иерархической структуры.

1. Откройте справочник Договоры.

2. Укажите, что он будет иметь иерархическую структуру. Затем создайте две группы: Филиал1 и Филиал2. В группу Филиал1 перенесите данные Петрова. Затем в эту же группу добавьте Алексеева (договор 123/35). В группу Филиал2 добавьте Афанасьева (договор 127/77) и перенесите данные Иванова.

3. Сконструируйте запрос, который позволяет выбрать из справочника Договоры номер договора и фамилию плательщика, но с группировкой по филиалам. В созданной нами форме перейдите на закладку Модуль и модифицируйте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Наименование КАК Наим, ФИОПлательщика ИЗ Справочник.Договоры УПОРЯДОЧИТЬ ПО Наименование ИЕРАРХИЯ";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Наим)+" "+Строка(Результат.ФИОПлательщика));

КонецЦикла;

КонецПроцедуры

4. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 3. Извлечение информации. Исключение в отборе повторяющихся данных.

1. Сконструируйте запрос, который позволяет выбрать номера договоров, по которым квитанции выписывались. В созданной нами форме перейдите на закладку Модуль и модифицируйте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Договор ИЗ РегистрСведений.Квитанции УПОРЯДОЧИТЬ ПО Договор ВОЗР";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Договор));

КонецЦикла;

КонецПроцедуры

2. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 4. Извлечение информации. Использование условий отбора

1. Сконструируйте запрос, который позволяет выбрать номера договоров, по которым квитанции выписывались и оплачивались. В созданной нами форме перейдите на закладку Модуль и модифицируйте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Договор ИЗ РегистрСведений.Квитанции ГДЕ Оплачено=Истина УПОРЯДОЧИТЬ ПО Договор ВОЗР";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Договор));

КонецЦикла;

КонецПроцедуры

2. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 5. Извлечение информации. Использование логических операторов в условиях отбора

1. Сконструируйте запрос, который позволяет выбрать номера договоров, по которым имеются оплаченные квитанции на сумму более 7000. В созданной нами форме перейдите на закладку Модуль и модифицируйте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Договор ИЗ РегистрСведений.Квитанции ГДЕ Оплачено=Истина И СуммаПоКвитанции > 7000 УПОРЯДОЧИТЬ ПО Договор ВОЗР";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Договор));

КонецЦикла;

КонецПроцедуры

2. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 6. Извлечение информации. Использование логических операторов в условиях отбора

1. Сконструируйте запрос, который позволяет выбрать номера договоров, по которым выписывались квитанции в 2007 году и с началом интервала оплаты в сентябре или октябре. В созданной нами форме перейдите на закладку Модуль и модифицируйте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Договор ИЗ РегистрСведений.Квитанции ГДЕ ГодНачала = 2007 И (МесяцНачала=9 ИЛИ МесяцНачала=10) СуммаПоКвитанции > 7000 УПОРЯДОЧИТЬ ПО Договор ВОЗР";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Договор));

КонецЦикла;

КонецПроцедуры

2. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 7. Извлечение информации. Использование агрегатных функций в запросах

Агрегатные функции используются для группировки результатов запросов, а также при подсчете итогов: СУММА, МАКСИМУМ, МИНИМУМ, СРЕДНЕЕ, КОЛИЧЕСТВО.

1. Создайте новый документ – отчет. Присвойте ему имя СводнаяВедомостьПоКвитанциям.

2. Перейдите на закладку Формы и создайте форму произвольного вида. Разместите на ней кнопку СформироватьОтчет.

3. Перейдите на закладку Макет и создайте макет табличного документа по образцу:

4. В созданной нами форме перейдите на закладку Модуль и напишите текст процедуры:

Процедура СформироватьОтчетНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

| Договор КАК Договор,

| СУММА(СуммаПоКвитанции) КАК Сумма,

| МАКСИМУМ(СуммаПоКвитанции) КАК Максимум,

| МИНИМУМ(СуммаПоКвитанции) КАК Минимум,

| СРЕДНЕЕ(СуммаПоКвитанции) КАК Среднее,

| КОЛИЧЕСТВО(*) КАК Количество

| ИЗ

| РегистрСведений.Квитанции

| ГДЕ Оплачено = Истина

| СГРУППИРОВАТЬ ПО Договор";

Выборка = Запрос.Выполнить().Выбрать();

ТабДок = Новый ТабличныйДокумент;

Макет = Отчеты.СводнаяИнформацияПоКвитанциям.ПолучитьМакет("Макет");

Область = Макет.ПолучитьОбласть("Заголовок");

ТабДок.Вывести(Область);

Область = Макет.ПолучитьОбласть("Шапка");

ТабДок.Вывести(Область);

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

Область = Макет.ПолучитьОбласть("Строка");

Область.Параметры.Договор = Выборка.Договор;

Область.Параметры.Сумма = Выборка.Сумма;

Область.Параметры.Максимум = Выборка.Максимум;

Область.Параметры.Минимум = Выборка.Минимум;

Область.Параметры.Среднее = Выборка.Среднее;

Область.Параметры.Количество = Выборка.Количество;

ТабДок.Вывести(Область);

КонецЦикла;

ТабДок.ОтображатьСетку = Ложь;

ТабДок.Защита = Ложь;

ТабДок.ТолькоПросмотр = Ложь;

ТабДок.ОтображатьЗаголовки = Ложь;

ТабДок.Показать();

КонецПроцедуры

5. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 8. Создание запросов с параметрами.

1. Создайте обработку ИзвлечениеИнформации.

2. Перейдите на закладку Формы и расположите на форме еще один элемент управления поле ввода (МаксимальнаяСумма – тип данных число).

3. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались сведения о квитанциях (договор и сумма по квитанции) на сумму, не превышающую максимальную. Для этого перейдите на закладку Модуль и исправьте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Договор, СуммаПоКвитанции ИЗ РегистрСведений.Квитанции ГДЕ СуммаПоКвитанции <= &МаксимальнаяСумма";

Запрос.УстановитьПараметр("МаксимальнаяСумма",ЭлементыФормы.МаксимальнаяСумма.Значение);

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Договор)+" "+Строка(Результат.СуммаПоКвитанции)+" руб.");

КонецЦикла;

КонецПроцедуры

4. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

5. Перейдите на закладку Формы, отключите видимость элемента управления МаксимальнаяСумма и расположите на форме еще два элемента управления поле ввода (Дата1 – тип данных дата и Дата2 – тип данных дата).

6. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались сведения о квитанциях (договор и сумма по квитанции) за указанный период. Для этого перейдите на закладку Модуль и исправьте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Договор, СуммаПоКвитанции ИЗ РегистрСведений.Квитанции ГДЕ РегистрСведений.Квитанции.Период МЕЖДУ &Дата1 и &Дата2";

Запрос.УстановитьПараметр("Дата1",ЭлементыФормы.Дата1.Значение);

Запрос.УстановитьПараметр("Дата2",ЭлементыФормы.Дата2.Значение);

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Договор)+" "+Строка(Результат.СуммаПоКвитанции)+" руб.");

КонецЦикла;

КонецПроцедуры

7. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

8. Перейдите на закладку Формы, отключите видимость элементов управления Дата1 и Дата2 и включите видимость элемента управления МаксимальнаяСумма.

9. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались сведения о квитанциях (договор и сумма по квитанции) в которых мтоговая сумма по оплаченным квитанциям не превышает значения МаксимальнаяСумма. Для этого перейдите на закладку Модуль и исправьте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Договор, СУММА(СуммаПоКвитанции) КАК Сумма ИЗ РегистрСведений.Квитанции ГДЕ Оплачено=Истина СГРУППИРОВАТЬ ПО Договор ИМЕЮЩИЕ СУММА(СуммаПоКвитанции)<=&МаксимальнаяСумма";

Запрос.УстановитьПараметр("МаксимальнаяСумма",ЭлементыФормы.МаксимальнаяСумма.Значение);

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Договор)+" "+Строка(Результат.Сумма)+" руб.");

КонецЦикла;

КонецПроцедуры

10. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 9. Использование функции расчета итогов в  запросе.

1. Перейдите на закладку Формы, отключите видимость элемента управления МаксимальнаяСумма.

2. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались сведения о квитанциях (договор и сумма по квитанции), а также общий итог. Для этого перейдите на закладку Модуль и исправьте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Договор, СуммаПоКвитанции КАК Сумма, Период ИЗ РегистрСведений.Квитанции ИТОГИ СУММА(Сумма) ПО Общие";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

   СписокОтобранныхДанных.Добавить(Строка(Результат.Период)+Строка(Результат.Договор)+" "+Строка(Результат.Сумма)+" руб.");

КонецЦикла;

КонецПроцедуры

3. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

4. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались сведения о квитанциях (договор и сумма по квитанции), а также общий итог, причем итоговая строка должна выводиться в отдельный элемент надпись на форме (ИтогПоКвитанциям). Для этого перейдите на закладку Модуль и исправьте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Договор, СуммаПоКвитанции КАК Сумма, Период ИЗ РегистрСведений.Квитанции ИТОГИ СУММА(Сумма) ПО Общие";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

 Если Результат.ТипЗаписи()=ТипЗаписиЗапроса.ОбщийИтог Тогда

  ЭлементыФормы.ИтогПоКвитанциям.Значение = Строка(Результат.Сумма)

 Иначе

        СписокОтобранныхДанных.Добавить(Строка(Результат.Период)+Строка(Результат.Договор)+" "+Строка(Результат.Сумма)+" руб.");

 КонецЕсли;

КонецЦикла;

КонецПроцедуры

5. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

6. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались сведения о квитанциях (договор и сумма по квитанции), а также общий итог по каждому договору. На форме отключите видимость надписи  ИтогПоКвитанциям. Затем перейдите на закладку Модуль и исправьте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Договор, СуммаПоКвитанции КАК Сумма, Период ИЗ РегистрСведений.Квитанции ИТОГИ СУММА(Сумма) ПО Договор";

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

 СписокОтобранныхДанных.Добавить(Строка(Результат.Период)+Строка(Результат.Договор)+" "+Строка(Результат.Сумма)+" руб.");

КонецЦикла;

КонецПроцедуры

7. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 10. Объединение результатов нескольких запросов.

1. Создайте независимый периодический регистр сведений БезналичнаяОплата (период – одна секунда) и заполните закладку Данные:

2. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались сведения об оплаченных за определенный период квитанциях и банковских перечислениях (дата, договор и сумма по квитанции). На форме включите видимость надписей Дата1 и Дата2. Затем перейдите на закладку Модуль и исправьте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Договор, СуммаПоКвитанции КАК Сумма, Период ИЗ РегистрСведений.Квитанции ГДЕ (Период МЕЖДУ &Дата1 И &Дата2) И ОПЛАЧЕНО = Истина

|ОБЪЕДИНИТЬ

|ВЫБРАТЬ Договор, ПеречисленнаяСумма КАК Сумма, Период ИЗ РегистрСведений.БезналичнаяОплата ГДЕ Период МЕЖДУ &Дата1 И &Дата2";

Запрос.УстановитьПараметр("Дата1",ЭлементыФормы.Дата1.Значение);

Запрос.УстановитьПараметр("Дата2",ЭлементыФормы.Дата2.Значение);

Результат = Запрос.Выполнить().Выбрать();

СписокОтобранныхДанных.Очистить();

Пока Результат.Следующий()>0 Цикл

 СписокОтобранныхДанных.Добавить(Строка(Результат.Период)+Строка(Результат.Договор)+" "+Строка(Результат.Сумма)+" руб.");

КонецЦикла;

КонецПроцедуры

3. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора и завершите работу с базой.

Задача 10. Отбор специалистов по  указанной должности.

1. Откройте базу МояБаза р режиме конфигуратора.

2. Создайте обработку ИзвлечениеИнформации.

3. Перейдите на закладку Формы и создайте форму без дополнительных панелей инструментов.

4. Расположите на форме элементы управления кнопка (ОтобратьИнформацию), поле ввода Должность (тип данных – СправочникСсылка.Должности) и поле списка (РезультатыОтбора).

5. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались специалисты (с указанием места их работы), имеющих выбранную должность. Для этого перейдите на закладку Модуль и наберите текст процедуры:

Процедура ОтобратьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Ссылка.Наименование КАК Наименование, Должность ИЗ Справочник.Специалисты.МестаРаботы ГДЕ Должность= &Должность";

Запрос.УстановитьПараметр("Должность",ЭлементыФормы.Должность.Значение);

Результат = Запрос.Выполнить().Выбрать();

РезультатыОтбора.Очистить();

   Пока Результат.Следующий()>0 Цикл

 РезультатыОтбора.Добавить(Строка(Результат.Наименование)+" "+ Строка(Результат.Должность));

КонецЦикла;

КонецПроцедуры

6. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора

Задача 11. Отбор специалистов по  указанной должности.

1. Откройте базу МояБаза р режиме конфигуратора.

2. Создайте обработку ИзвлечениеИнформации1.

3. Перейдите на закладку Формы и создайте форму без дополнительных панелей инструментов.

4. Расположите на форме элементы управления кнопка (ОтобратьИнформацию), поле ввода Преподаватель (тип данных – СправочникСсылка.Специалисты) и поле списка (РезультатыОтбора).

5. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались студенты, обучающиеся у выбранного преподаателя. Для этого перейдите на закладку Модуль и наберите текст процедуры:

Процедура ОтобратьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Наименование, Стоимость, Преподаватель ИЗ Справочник.Курсы ГДЕ Преподаватель= &Преподаватель";

Запрос.УстановитьПараметр("Преподаватель",ЭлементыФормы.Преподаватель.Значение);

Результат = Запрос.Выполнить().Выбрать();

РезультатыОтбора.Очистить();

   Пока Результат.Следующий()>0 Цикл

 РезультатыОтбора.Добавить(Строка(Результат.Наименование)+" "+ Строка(Результат.Преподаватель)+" "+ Строка(Результат.Стоимость));

КонецЦикла;

КонецПроцедуры

6. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора

Задача 12. Соединение таблиц при организации запроса.

1. Создайте обработку ИзвлечениеИнформации2.

2. Перейдите на закладку Формы и создайте форму без дополнительных панелей инструментов.

4. Расположите на форме элементы управления кнопка (ОтобратьИнформацию) и поле списка (РезультатыОтбора).

5. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались из справочников Преподаватели и Курсы только те записи, у которых преподаватель в обоих справочниках совпадают. Для этого перейдите на закладку Модуль и наберите текст процедуры:

Процедура ОтобратьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Спр1.Наименование КАК Курс, Спр1.Стоимость КАК Ст, Спр1.Преподаватель КАК Преп, Спр2.Рейтинг КАК Рейт ИЗ Справочник.Курсы КАК Спр1 СОЕДИНЕНИЕ Справочник.Специалисты КАК Спр2 ПО Спр1.Преподаватель= Спр2.Ссылка";

Результат = Запрос.Выполнить().Выбрать();

РезультатыОтбора.Очистить();

   Пока Результат.Следующий()>0 Цикл

 РезультатыОтбора.Добавить(Строка(Результат.Курс)+" "+ Строка(Результат.Преп)+" "+ Строка(Результат.Ст)+" руб. Рейтинг: "+Строка(Результат.Рейт));

КонецЦикла;

КонецПроцедуры

6. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора

Задача 13. Внешнее соединение таблиц при организации запроса.

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

1. Создайте обработку ИзвлечениеИнформации3.

2. Перейдите на закладку Формы и создайте форму без дополнительных панелей инструментов.

4. Расположите на форме элементы управления кнопка (ОтобратьИнформацию) и поле списка (РезультатыОтбора).

3. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались из справочников Преподаватели и Курсы только те записи, у которых преподаватель в обоих справочниках совпадают (кроме того будут выведены курсы, для которых не указан преподаватель). Для этого перейдите на закладку Модуль и наберите текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Спр1.Наименование КАК Курс, Спр1.Стоимость КАК Ст, Спр1.Преподаватель КАК Преп, Спр2.Рейтинг КАК Рейт ИЗ Справочник.Курсы КАК Спр1 ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Специалисты КАК Спр2 ПО Спр1.Преподаватель= Спр2.Ссылка";

Результат = Запрос.Выполнить().Выбрать();

РезультатыОтбора.Очистить();

   Пока Результат.Следующий()>0 Цикл

 РезультатыОтбора.Добавить(Строка(Результат.Курс)+" "+ Строка(Результат.Преп)+" "+ Строка(Результат.Ст)+" руб. Рейтинг: "+Строка(Результат.Рейт));

КонецЦикла;

КонецПроцедуры

6. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

4. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались из справочников Преподаватели и Курсы только те записи, у которых преподаватель в обоих справочниках совпадают (преподаватели, которые не ведут никаких курсов). Для этого перейдите на закладку Модуль и модифицируйте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Спр1.Наименование КАК Курс, Спр2.Наименование КАК Преп, Спр1.Ссылка КАК СпрСсылка1, Спр2.Ссылка КАК СпрСсылка2, Спр1.Стоимость КАК Ст, Спр2.Рейтинг КАК Рейт ИЗ Справочник.Курсы КАК Спр1 ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Справочник.Специалисты КАК Спр2 ПО Спр1.Преподаватель= Спр2.Ссылка";

Результат = Запрос.Выполнить().Выбрать();

РезультатыОтбора.Очистить();

Пока Результат.Следующий()>0 Цикл

 Если Результат.СпрСсылка2.ЭтоГруппа = Ложь Тогда

    РезультатыОтбора.Добавить(Строка(Результат.Курс)+" "+ Строка(Результат.Преп)+" "+ Строка(Результат.Ст)+" Рейтинг: "+Строка(Результат.Рейт));

 КонецЕсли;

КонецЦикла;

КонецПроцедуры

5. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

6. Сделайте так, чтобы при нажатии кнопки ОтобразитьИнформацию отображались из справочников Преподаватели и Курсы только те записи, у которых преподаватель в обоих справочниках совпадают (преподаватели, которые не ведут никаких курсов и курсы, которые не ведут преподаватели). Для этого перейдите на закладку Модуль и модифицируйте текст процедуры:

Процедура ОтобразитьИнформациюНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Спр1.Наименование КАК Курс, Спр2.Наименование КАК Преп, Спр1.Ссылка КАК СпрСсылка1, Спр2.Ссылка КАК СпрСсылка2, Спр1.Стоимость КАК Ст, Спр2.Рейтинг КАК Рейт ИЗ Справочник.Курсы КАК Спр1 ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Справочник.Специалисты КАК Спр2 ПО Спр1.Преподаватель= Спр2.Ссылка";

Результат = Запрос.Выполнить().Выбрать();

РезультатыОтбора.Очистить();

Пока Результат.Следующий()>0 Цикл

 Если Результат.СпрСсылка1=NULL Тогда

   Если Результат.СпрСсылка2.ЭтоГруппа = Ложь  Тогда

    РезультатыОтбора.Добавить(Строка(Результат.Преп)+" "+" Рейтинг: "+Строка(Результат.Рейт));

   КонецЕсли;

    Иначе

   Если Результат.СпрСсылка2=NULL Тогда

       РезультатыОтбора.Добавить(Строка(Результат.Курс)+" "+Строка(Результат.Ст)+"руб.");

   Иначе

    РезультатыОтбора.Добавить(Строка(Результат.Курс)+" "+Строка(Результат.Преп)+" "+Строка(Результат.Ст)+"руб. Рейтинг: "+Строка(Результат.Рейт));

   КонецЕсли;

   КонецЕсли;

КонецЦикла;

КонецПроцедуры

7. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 14. Использование функции выбора в запросе.

1. Создайте в конфигураторе непериодический и независимый регистр сведений БаллыУчащихся. Перейдите на закладку Данные и добавьте одно измерение – Учащийся и один ресурс – Баллы.

2. Создайте обработку ИзвлечениеИнформации4.

3. Перейдите на закладку Формы и создайте форму без дополнительных панелей инструментов.

4. Расположите на форме элементы управления кнопка (СформироватьОценки) и поле списка (ОценкиУчащихся).

5. Сделайте так, чтобы при нажатии кнопки СформироватьОценки отображались оценки слушателей в соответствии с набранными баллами. Для этого перейдите на закладку Модуль и наберите текст процедуры:

Процедура СформироватьОценкиНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Учащийся,

|ВЫБОР

|Когда Баллы>=40 Тогда 5 Когда Баллы>30 Тогда 4 Когда Баллы>22 Тогда 3 Когда Баллы>11 Тогда 2 Иначе 0

|КОНЕЦ КАК Оценка ИЗ РегистрСведений.БаллыУчащихся УПОРЯДОЧИТЬ ПО Оценка ВОЗР";

Результат = Запрос.Выполнить().Выбрать();

ОценкиУчащихся.Очистить();

   Пока Результат.Следующий()>0 Цикл

 ОценкиУчащихся.Добавить(Строка(Результат.Учащийся)+" "+ Строка(Результат.Оценка));

КонецЦикла;

КонецПроцедуры

6. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.

Задача 15. Поиск частичного совпадения при организации запроса.

1. Создайте обработку ИзвлечениеИнформации5.

2. Перейдите на закладку Формы и создайте форму без дополнительных панелей инструментов.

4. Расположите на форме элементы управления кнопка (Выбор), поле списка (Отобранные учащиеся) и поле ввода ДанныеДляПоиска.

3. Сделайте так, чтобы при нажатии кнопки Выбор отображались только те учащиеся, у которых в фамилии присутствует значения поля ДанныеДляПоиска. Для этого перейдите на закладку Модуль и наберите текст процедуры:

Процедура ВыборНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Наименование ИЗ Справочник.Клиенты ГДЕ Наименование ПОДОБНО &Фрагмент";

Запрос.УстановитьПараметр("Фрагмент","%"+ЭлементыФормы.ДанныеДляПоиска.Значение+"%");

Результат = Запрос.Выполнить().Выбрать();

ОтобранныеУчащиеся.Очистить();

   Пока Результат.Следующий()>0 Цикл

 ОтобранныеУчащиеся.Добавить(Строка(Результат.Наименование));

КонецЦикла;

КонецПроцедуры

Замечание. В операторе ПОДОБНО могут использоваться:

Символ

Комментарий

%

Обозначает последовательность, содержащую любое количество символов

_

Обозначает один произвольный символ

[…] один или несколько символов в квадратных скобках

Любой одиночный символ из перечисленных внутри квадратных скобок. В перечислении могут встречаться диапазоны, например,
a-z, что означает произвольный символ, входящий в диапазон

[^…]

Любой одиночный символ, кроме перечисленных за знаком ^

6. Перейдите в режим 1С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.


 

А также другие работы, которые могут Вас заинтересовать

18895. Символизм в Русском искусстве рубежа 19-20 вв 12.75 KB
  Символизм в Русском искусстве рубежа 1920вв. М.А.Врубель.БорисовМусатов. Можно сказать что символизм в русском искусстве конца XIX начала XX в.в. стал апофеозом творческой индивидуальности. В символизме индивидуальность сделала попытку подчинить себе весь окружающий м
18896. СПЕЦИАЛИСТ ПО СВЯЗЯМ С ОБЩЕСТВЕННОСТЬЮ: ПРОФЕССИОНАЛЬНЫЕ И ЛИЧНЫЕ КАЧЕСТВА 34.5 KB
  СПЕЦИАЛИСТ ПО СВЯЗЯМ С ОБЩЕСТВЕННОСТЬЮ: ПРОФЕССИОНАЛЬНЫЕ И ЛИЧНЫЕ КАЧЕСТВА Как отмечает С. Блэк: ПР могут принести максимальный результат лишь тогда когда люди ими занимающиеся получат в свое распоряжение широкие знания и ресурсы. В соответствие с мировым опытом п...
18897. Специалист по связям с общественностью: профессиональные и личные качества 48 KB
  Специалист по связям с общественностью: профессиональные и личные качества Качества необходимые специалист у ПР условно можно разделить на 3 сферы: Коммуникативная сфера. Эмоциональноволевая сфера. Познавательная сфера. Конечно нередко очень сло...
18898. Психогенетика, шпаргалка 402 KB
  Большинство направлений в науке возникает в связи с запросом общества или рождается в результате практической деятельности человека. Если говорить о генетике в целом, то совершенно очевидно, что практическая генетика уходит корнями в глубокую древность
18899. Связи с общественностью: предмет, объект, цели и задачи, понятийный аппарат 60 KB
  Связи с общественностью: предмет объект цели и задачи понятийный аппарат Существует ок. 500 определений PR. Налицо много самых разных толкований данного понятия. Классическое определение ПР С. Блэка звучит так: ПР это искусство и наука достижения гармонии посредством в...
18900. Связи с общественностью: предмет, объект, цели и задачи, понятийный аппарат 40.5 KB
  Связи с общественностью: предмет объект цели и задачи понятийный аппарат Public Relations коммуникативная активность компании направленная на формирование гармоничных отношений с обществом установление и поддержание результативных отношений с полезными аудиториями из
18901. ЗАНЯТИЯ ЛЕПКОЙ КАК СРЕДСТВО РАЗВИТИЯ ТВОРЧЕСКИХ СПОСОБНОСТЕЙ ДЕТЕЙ СТАРШЕГО ДОШКОЛЬНОГО ВОЗРАСТА 172.5 KB
  Лепка имеет большое значение для обучения и воспитания детей дошкольного возраста. Она способствует развитию зрительного восприятия, памяти, образного мышления, привитию ручных умений и навыков. Лепка, также как и другие виды изобразительной деятельности
18902. Процедурные технологии PR: переговоры, фасилитация и медиация 77 KB
  Процедурные технологии PR: переговоры фасилитация и медиация Любое сообщение является попыткой влияния стремлением заставить человека смотреть на мир глазами коммуникатора. Уже софисты пытались с помощью приемов риторики изменить в нужном направлении мнение и пост...
18903. ПРОЦЕДУРНЫЕ ТЕХНОЛОГИИ PR: ПЕРЕГОВОРЫ, ФАСИЛИТАЦИЯ И МЕДИАЦИЯ 44.5 KB
  ПРОЦЕДУРНЫЕ ТЕХНОЛОГИИ PR: ПЕРЕГОВОРЫ ФАСИЛИТАЦИЯ И МЕДИАЦИЯ Любое сообщение является попыткой влияния стремлением заставить человека смотреть на мир глазами коммуникатора. Уже софисты пытались с помощью приемов риторики изменить в нужном направлении мнение и пост...