Работа с запросами во встроенном языке
Сначала создадим подсистему «ОтчетыИОбработки». В будущем будем помещать туда созданные отчеты и обработки. Для формирования запросов, выборки и обработки результатов запросов в языке предусмотрен специальный набор объектов. С помощью этих объектов выполняется формирование запроса, обход записей запроса и т.д. Рассмотрим в качестве первого примера обработку «ЗнакомствоСЗапросом». При создании обработки определим у него следующие реквизиты: • ЗначениеСсылка тип ЛюбаяСсылка»; • ЗначениеЧисло тип «Число»; • ЗначениеДата1 тип «Дата» состав «Дата+Время»; • ЗначениеДата2 тип «Дата» состав «Дата+Время»; • ЗначениеСтрока тип «Строка» Длина 100; Определим основную форму обработки включив все реквизиты. При настройке формы необходимо создать группу «Страницы» и в ней 3 группы «Страница» с названиями как на рисунке (Рисунок 2.58). Рисунок 2.58 Форма обработки «ЗнакомствоСЗапросом»
Далее необходимо создать реквизиты формы: · ПолеТекста тип Текстовый документ, в свойстве «Сохраняемые данные» поставить галочку. · РезультатЗапроса тип Табличный документ (Рисунок 2.59). Рисунок 2.59 Реквизиты формы
Затем на первую вкладку реквизит формы ПолеТекста. Аналогично все остальные реквизиты размещаем в остальных вкладках (Рисунок 2.60). Рисунок 2.60 Элементы формы
Создаем команду ВыполнитьЗапрос, перетаскиваем ее в командную панель формы и определяем для неё следующий код: &НаКлиенте Процедура ВыполнитьЗапрос(Команда) ВыполнитьЗапросСервер(ПолеТекста.ПолучитьТекст()); КонецПроцедуры &НаСервере Процедура ВыполнитьЗапросСервер(Текст) Запрос=Новый Запрос; Запрос.Текст=Текст;
Запрос.УстановитьПараметр("ЗначениеСсылка",Объект.ЗначениеСсылка); Запрос.УстановитьПараметр("ЗначениеЧисло",Объект.ЗначениеЧисло); Макет = Обработки.ЗнакомствоСЗапросом.ПолучитьМакет("Макет"); Результат=Запрос.Выполнить(); Выборка=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); РезультатЗапроса.Очистить(); Область = Макет.ПолучитьОбласть("Значение"); ОблЗаголовок = Макет.ПолучитьОбласть("Заголовок"); Вход=Истина; Для Каждого Колонка Из Результат.Колонки Цикл ОблЗаголовок.Параметры.Значение=Колонка.Имя; Если Вход Тогда РезультатЗапроса.Вывести(ОблЗаголовок); Вход=Ложь; Иначе РезультатЗапроса.Присоединить(ОблЗаголовок); КонецЕсли; КонецЦикла; РезультатЗапроса.НачатьАвтогруппировкуСтрок(); Пока Выборка.Следующий() Цикл Вход=Истина; Для Каждого Колонка Из Результат.Колонки Цикл Область.Параметры.ВыводимоеЗначение=Выборка[Колонка.Имя]; Если Вход Тогда РезультатЗапроса.Вывести(Область,Выборка.Уровень()); Вход=Ложь; Иначе РезультатЗапроса.Присоединить(Область); КонецЕсли; КонецЦикла; КонецЦикла; РезультатЗапроса.ЗакончитьАвтогруппировкуСтрок(); КонецПроцедуры Для получения результата обработки необходимо вручную создать макет. Создаем макет (типа «Табличный документ») на закладке «Макеты» (Рисунок 2.61). Рисунок 2.61 Макет обработки
Вводим в макет два параметра «Значение» и «ВыводимоеЗначение». Для ячейки «Значение» назначаем имя секции «Заголовок» (рисунок. 2.62). Рисунок 2.63 Свойства ячеек макета.
Аналогично для ячейки «ВыводимоеЗначение» определяем имя секции «Значение». Для наглядности обведем границы сплошной линией в свойствах оформления и в ячейке «Значение» определим фон каким-либо цветом (Рисунок 2.64). Рисунок 2.64 Свойства ячеек макета
Замечание. Этот запрос пока не работает. Он будет работать когда в ПолеТекстаЗапроса в пользовательском режиме мы вставим запрос, при этом запрос мы будем писать на первой закладке, а результат будет выводиться на второй. Параметры запроса, при необходимости, задаются на третьей закладке.
Перейдем в 1С: Предприятие и проверим работу нашей обработки. На первой закладке вручную напишем запрос: ВЫБРАТЬ * ИЗ Справочник.Номенклатура Итогом будет вывод всех данных из справочника «Номенклатура». Замечание. В будущем все созданные запросы можно проверять на работоспособность в пользовательском режиме (например, создав запрос с помощью конструктора в конфигураторе его можно перенести пользовательский режим и запустить на выполнение в созданной обработке).
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|