Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Работа с конструктором запроса с выводом в табличный документ




 

Умение писать текст запроса «вручную» никогда не являлось «лишним», но удобнее использовать конструктор запросов.

Замечание.

К сожалению, в управляемом приложении в обработке «ЗнакомствоСЗапросом» нельзя пользоваться конструктором запроса. Можно им воспользоваться в этой обработке перейдя в обычный режим, но делать этого не будем.

Создадим обработку «КонструкторЗапроса» и определяем ее в подсистему «ОтчетыИОбработки».

Создадим форму обработки и в ней добавляем реквизит формы «ТабДок» типа «Табличный документ», а так же команду «ВыполнитьЗапрос» с действием «ВыполнитьЗапрос». Далее, перетаскиваем их на форму.

В модуле формы, для работы команды, пишем процедуру:

&НаКлиенте

Процедура ВыполнитьЗапрос(Команда)

ВыполнитьЗапросСервер();

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

&НаСервере

Процедура ВыполнитьЗапросСервер()

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

Становимся внутри процедуры вызываемой на сервере и из контекстного меню вызываем «Конструктор запроса с обработкой результата» (рисунок 2.65).

Рисунок 2.65 Конструктор запроса с обработкой результата

 

Ставим тип обработки «Вывод в табличный документ» и нажимаем либо кнопку «Далее», либо закладку «Таблицы и поля».

На закладке «Таблицы и поля» конструктора можно просмотреть существующие на данный момент таблицы в системе (левая часть озаглавленная «База данных») (Рисунок 2.66).

Рисунок 2.67 Конструктор запроса

 

Таблицы, данные из которых будут получаться запросом, переносятся в область «Таблицы», необходимые запросу поля переносятся в область «Поля». Сделаем это как на рисунке 2.68.

Рис 2.68 Конструктор запроса

 

Здесь мы убрали, создаваемое по умолчанию, поле представления - «ПРЕДСТАВЛЕНИЕ (ПоступлениеТоваровТовары.Номенклатура)»

В любой момент работы с конструктором можно смотреть получаемый текст запроса. Для выполнения этой задачи необходимо нажать кнопку «Запрос», расположенную в левом нижнем углу формы конструктора (рисунок 2.69).

Рисунок 2.69 Запрос

 

Можно вручную отредактировать текст запроса, нажав на кнопку «Редактировать».

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

Возвращаемся в процедуру ВыполнитьЗапросСервер() в обработке «КонструкторЗапроса» и из контекстного меню опять вызываем «Конструктор запроса с обработкой результата».

Если требуется «свернуть» результат запроса, то для этой цели можно использовать закладку «Группировка» конструктора запроса.

При определении группировок необходимо придерживаться следующего правила: все поля выборки запроса делятся на поля, по которым производится группировка (свертка), поля вложенных таблиц (суммируемые поля относительно тех, по которым ведется группировка) и на агрегатные функции. Определим группировки (Рисунок 2.70).

Рисунок 2.70 Конструктор запроса

 

Если данные, получаемые запросом должны выбираться по какому-либо условию, то в этом случае может потребоваться задействовать закладку «Условия». Выберем ПоступлениеТоваровТовары.Количество=10 (Рисунок 2.71).

Рисунок 2.71 Условие конструктора запроса.

 

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

Исправить ситуацию можно двумя способами:

• Переопределив условие, отметив флаг «П...»;

• Воспользовавшись возможностью изменения самого текста запроса (получаемого при нажатии на кнопку «Редактировать Запрос»).

Само изменение вручную будет заключаться в том, что необходимо перед числом «10» убрать символ «&». Этим символом в тексте запроса определяются параметры запроса, в которые в дальнейшем (но перед выполнением запроса) должны быть записаны какие-либо значения. Нажмем на кнопку «РедактироватьЗапрос» и правим (Рисунок 2.72).

Рисунок 2.73 Редактирование запроса

 

На закладке «Дополнительно» можно отметить ряд флагов (касающихся ключевого слова «Выбрать» языка запросов) и определить состав таблиц предназначенных для изменения запроса (Рисунок 2.74).

Рисунок 2.74 Дополнительные функции запроса

 

На закладке «Объединения/Псевдонимы» можно изменить имена полей задав «Псевдонимы», но мы этого делать не будем.

На закладке «Порядок» можно определить порядок сортировки записей в результате запроса (Рисунок 2.75).

Рисунок 2.75 Порядок сортировки записей

 

Обратите внимание на флаг «Автоупорядочивание», он может использоваться для упорядочивания по полям ссылочного типа.

При определении раздела «Итоги» следует быть готовым к тому, что в результате запроса появится «дополнительные» итоговые записи. Вместе с этими записями результат запроса становится иерархическим (Рисунок 2.76).

Рисунок 2.76.Итоги конструктора запроса.

 

Допустимо указание нескольких типов итогов:

• Элементы (в выборке результата запроса присутствуют итоги по группировкам и детальные записи);

• Иерархия (в выборке результата запроса в общем случае присутствуют итоговые записи по иерархии, итоговые записи по группировке, детальные записи);

• Только иерархия (в выборке результата запроса в общем случае присутствуют итоговые записи по иерархии).

После нажатия на кнопку «Ок» конструктора, будет сформирован «Макет» и в модуле формы пропишется код процедуры ВыполнитьЗапросСервер():

&НаСервере

Процедура ВыполнитьЗапросСервер()

//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

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

Запрос.Текст =

"ВЫБРАТЬ

| ПоступлениеТоваровТовары.Номенклатура КАК Номенклатура,

| СУММА(ПоступлениеТоваровТовары.Количество) КАК Количество,

| СУММА(ПоступлениеТоваровТовары.Сумма) КАК Сумма

|ИЗ

| Документ.ПоступлениеТоваров.Товары

| КАК ПоступлениеТоваровТовары

|ГДЕ

| ПоступлениеТоваровТовары.Количество > 1

|

|СГРУППИРОВАТЬ ПО

| ПоступлениеТоваровТовары.Номенклатура

|

|УПОРЯДОЧИТЬ ПО

| Количество,

| Сумма УБЫВ

|ИТОГИ

| СУММА(Количество),

| СУММА(Сумма)

|ПО

| Номенклатура ИЕРАРХИЯ";

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

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

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

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

ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");

ОбластьНоменклатураИерархия = Макет.ПолучитьОбласть("НоменклатураИерархия");

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

ТабДок.Очистить();

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

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

ТабДок.НачатьАвтогруппировкуСтрок();

ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

Если ВыборкаНоменклатура.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда

Область = ОбластьНоменклатураИерархия;

Иначе

Область = ОбластьНоменклатура;

КонецЕсли;

 

Область.Параметры.Заполнить(ВыборкаНоменклатура);

ТабДок.Вывести(Область, ВыборкаНоменклатура.Уровень());

КонецЦикла;

ТабДок.ЗакончитьАвтогруппировкуСтрок();

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

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

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

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


 

Список литературы

1) Б. Лоусон, Р. Шарп — Изучаем HTML.
2) Ч. Муссиано, Б Кеннеди — HTML & XHTML. Подробное руководство.

3) Дронов.В.-.HTML.5.CSS.3.и.Web 2.0.Разработка.современных.Web-сайтов.

4) ru.wikipedia.org

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...