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


 

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

1835. КОНСТИТУЦИОННО-ПРАВОВОЕ РЕГУЛИРОВАНИЕ ПОЛИТИЧЕСКОГО УЧАСТИЯ ГРАЖДАН В ОСУЩЕСТВЛЕНИИ ГОСУДАРСТВЕННОЙ ВЛАСТИ 1.31 MB
  Взгляды на формы политического участия граждан в осуществлении государственной власти. Становление современного конституционного законодательства о формах политического участия граждан в осуществлении государственной власти. Тенденции развития и совершенствования российского конституционного законодательства о формах политического участия граждан в осуществлении государственной власти.
1836. ПЕДАГОГИЧЕСКИЕ УСЛОВИЯ ОБЕСПЕЧЕНИЯ КАЧЕСТВА ОБУЧЕНИЯ СТУДЕНТОВ ЭКСТЕРНАТА В ВУЗЕ 1.3 MB
  Теоретическое обоснование педагогических условий обеспечения качества обучения студентов экстерната. Апробация условий обеспечения качества подготовки экстернов в системе высшего образования. Экспериментальная проверка педагогических условий обеспечения качества подготовки специалистов в форме экстерната в вузе.
1837. ФЛОРА ПРИКАЛАУССКОГО ФЛОРИСТИЧЕСКОГО РАЙОНА (ЦЕНТРАЛЬНОЕ ПРЕДКАВКАЗЬЕ) И ЕЕ АНАЛИЗ 1.3 MB
  Физико-географическая характеристика Прикалаусского флористического района. Вопросы фитосозологии и перспективы использования. Конспект флоры Прикалаусского флористического района. Список редких, охраняемых и нуждающихся в охране видов Прикалаусского флористического района. Иллюстрации эндемичных и реликтовых видов флоры Прикалаусского флористического района, занесенные в Красную книгу Ставропольского края
1838. VBScript Scripting Reference 1.3 MB
  Working with the Properties Tables. ExportOptionsIllustrator. PDFSaveOptions. Running JavaScript based Action Manager code from VBScript. Appendix A: Event ID Codes.
1839. ПАРАЛЛЕЛИЗМ ИЗМЕНЕНИЙ ДЕРМАТОГЛИФИКИ, ЭНДОКРИННОГО И ПСИХИЧЕСКОГО СТАТУСА В ПОПУЛЯЦИИ ДЕТСКОГО НАСЕЛЕНИЯ, ПРОЖИВАЮЩЕГО В РАЙОНАХ С ВЫСОКОЙ АНТРОПОГЕННОЙ НАГРУЗКОЙ 1.3 MB
  Современное состояние окружающей среды (региональные аспекты). Генетические детерминанты формирования рельефа кожи пальцев рук и ладоней человека. Методика исследования кожного узора кисти человека. Методы исследования функционального состояния центральной нервной системы. Особенности эндокринного статуса подростков, проживающих в экологически неблагоприятных условиях.
1840. ПОВЫШЕНИЕ ЭФФЕКТИВНОСТИ СИСТЕМЫ УПРАВЛЕНИЯ ЗАПАСАМИ НА ОСНОВЕ ПРИМЕНЕНИЯ МЕТОДОВ ИНФОРМАЦИОННОЙ ПОДДЕРЖИ ПРИНЯТИЯ РЕШЕНИЙ 1.29 MB
  Анализ состояния и пути повышения эффективности систем управления запасами на машиностроительных предприятиях. Структуризация процессов управления и производственного процесса. Методика определения оптимального графика поступлений запасов. Применение разработанных методик и оценка эффективности их использования.
1841. ПРОИЗВОДСТВО И ВОСПРОИЗВОДСТВО ЗНАНИЯ: КОГНИТИВНО-АНТРОПОЛОГИЧЕСКИЙ АСПЕКТ 1.29 MB
  Производство и воспроизводство знания: когнитивно-антропологическая модель. Когнитивно-антропологические основания познания. Познание как проблема современной философии. Образование с позиций когнитивно-антропологического подхода.
1842. КОНЦЕПТОСФЕРА ВНУТРИСЕМЕЙНЫХ РОДОСЛОВНЫХ 1.29 MB
  Жанровая и языковая специфика внутрисемейных родословных. Художественные и публицистические реминисценции в языке внутрисемейных родословных. Специфика интертекстуальности. Система концептов, регулирующих жанр внутрисемейных родословных, и их лексическая объективация. Методика исследования частотности языковой объективации концептов и межконцептных связей. Математическое моделирование концептосферы внутрисемейных родословных. Результаты исследования.
1843. Основы маркетинга и современная маркетинговая концепция 1.4 MB
  Основные понятия маркетинга. Маркетинговая концепция. Используемые в маркетинге термины. Уровни маркетинга. Концепции маркетинговой деятельности организаций. Управленческий маркетинг должен показать свою рентабельность. Рыночные факторы, определяющие содержание маркетинг-микса. Основные продуктивные информационные легенды, используемые при проведении исследований конкурентов.