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С:Предприятие и проверьте результат работы. Затем вернитесь в окно конфигуратора.


 

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

37799. Побудова корпоративної комп’ютерної мережі з доступом до ресурсів Internet 57 KB
  Мета роботи: Вивчити основні принципи побудови корпоративних комп’ютерних мереж на основі комутаторів Fst Ethernet маршрутизуючого комутатора 3го рівня Fst Ethernet програмного маршрутизатора на базі ПК з операційною системою FreeBSD 8.1 принципи організації доступу корпоративної комп’ютерної мережі до ресурсів Internet через апаратний маршрутизатор Fst Ethernet отримати практичні навики по налаштуванню та діагностуванню роботи корпоративної комп’ютерної мережі створенню та використанню спільних ресурсів. Завдання: Дослідити...
37800. Робота з базами даних в мережі 88.5 KB
  Робота з базами даних в мережі. Вивчення архітектури мережевих баз даних. Архітектура серверних баз даних. Оскільки настільні СУБД такі як dBse Prdox FoxPro ccess не містять спеціальних додатків і сервісів для роботи в мережі щоб керувати даними а використовують для цієї цілі файлові сервіси операційної системи вся реальна обробка даних в таких СУБД здійснюється клієнтськими додатками і будьякі бібліотеки доступу до даних в цьому випадку також знаходяться в адресному просторі клієнтського додатку.
37801. Амплитудные детекторы радиосигналов 374 KB
  Приводятся теоретические сведения о принципах детектирования амплитудно модулированных сигналов процессах происходящих при детектировании АМ сигналов основные соотношения и рекомендации по выбору параметров элементов детекторов. В работе изучается влияние элементов принципиальных схем детекторов на характеристики детектирования и на выходные сигналы.1 Определение детектора и процесса детектирования. Процесс детектирования радиосигналов определяется как обратный процессу получения модулированных колебаний радиосигналов.
37802. ЗНЯТТЯ РЕГУЛЯТОРНОЇ І ШВІДКИСНОЇ ХАРАКТЕРИСТИКИ КАРБЮРАТОРНОГО ДВИГУНА 71 KB
  На підставі цього аналізу оцінити економічність ефективність режимів роботи двигуна і динамічні якості. При роботі двигуна з відкритою дросельною заслінкою в дифузорі створюється розрідження і паливо з розпилювача поступає в дифузор розпилюється там і перемішується з повітрям. Регулювальні характеристики Регулювальні характеристики є залежностями основних показників двигуна від значення одного або декількох з регулювальних параметрів при постійній частоті обертання...
37803. Ознайомлення з особливостями застосування на мові Асемблера системи команд керування програмою та процесором, вивчення команд умовного розгалуження 81 KB
  Вивчити основні команди керування програмою та процесором, отримати навички та вміння щодо застосування команд умовного розгалуження.
37804. Робота з дисками папками та файлами в середовищі Windows 669.5 KB
  Вивчив призначення програм основного меню при натисканні на клавішу пуск. запустив програму блокнот зафіксував у звіт призначення меню файли. За допомогою правої правої клавіші миші обо через меню Программы війти в програму проводник.
37805. Програмування лінійних та розгалужених алгоритмів 62.52 KB
  Блоксхема 2 початок Ввестиbc mx:= А А – b mx – c mx mx:=b mx:=c min:= – b min – c min min:=b min:=c – ≠mx ≠min – b≠mx b≠min p:= p:=b c≠mx c≠min – p:=c Вивестиmxpmin кінець uses crt; vr b c mx min p: rel; Оголошуємо основні та допоміжні змінні begin clrscr; writeln...
37806. Види модуляцій в сучасних інформаційних системах 8.77 MB
  Мета роботи: Дослідження і вивчення особливості видів модуляції які застосовуються в цифровій техніці ознайомитися з елементами модуляторів і демодуляторів а також із принципами їх роботи. Порядок виконання роботи Ознайомитися з принципами математичного моделювання модуляції які використовуються лабораторною програмою.
37807. Вказівники 2.14 MB
  Мета: навчитися програмувати з використанням вказівників та динамічних змінних, створювати та опрацьовувати черги та стеки.