- •Язык запросов
- •Отчет РеестрДокументовОказаниеУслуги
- •Процедура РеестрДокументовОказаниеУслуги(ТабДок) Экспорт
- •/Л}конструктор_выходных_форм КонецПроцедуры
- •Отчет Рейтинг услуг
- •Перечисления.ВидыНоменклатуры.Услуга);
- •Отчет ВыручкаМастеров
- •Отчет ПереченьУслуг
- •Процедура ПриОткрытии() // Заполним список поля выбора
- •Создание универсального отчета
- •|{Итоги по Номенклатура, Клиент, Мастер}
- •ЭлементыФормы.ПолеТабличногоДокумеита
- •Отчет Универсальный2
Процедура РеестрДокументовОказаниеУслуги(ТабДок) Экспорт
//{{КОНСТРУКТОР_ВЫХОДНЬК_ФОРМ(РеестрДокументовОказаниеУслугн) // Данный фрагмент построен конструктором. // При повторном использовании конструктора, // внесенные вручную изменения будут утеряны!!!
Макет = ПолучитьМакет("РеестрДокументовОказаниеУслуги"); Запрос = Новый Запрос;
Результат = Запрос.Выполнить();
ОбластъЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал =
Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы =
Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы =
Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей =
Макет.ПолучитьОбласть("Детали");
ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогрутшировкуСтрок();
ВыборкаДетали = Результат.Выбрать();
Пока ВыборкаДетали.Следукнций() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
ТабДок.Вывести(ОбластьДетальньпсЗаписей, ВыборкаДетали.Уровень()); КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
/Л}конструктор_выходных_форм КонецПроцедуры
В форме отчета расположен элемент управления ПолеТабличногоДокумента с именем «ТабДок», который заполняется данными на основе макета, сформированного конструктором.
В начале процедуры мы получаем макет отчета, из которого затем получаем существующие в нем области в соответствующие переменные:
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал =
Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы =
Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы =
Макет.ПолучитьОбласть("ПодвалТаблицы"'); ОбластьДетальныхЗаписей =
Макет.ПолучитьОбласть("Детали");
Затем мы очищаем табличный документ и выводим в него те области, которые не содержат данных, получаемых из результата запроса:
ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок();
В последней строке конструктор добавил начало автогруппировки строк. В данном примере у нас нет строк, которые нужно было бы группировать, но по умолчанию конструктор всегда предлагает выполнить группировку строк в табличном документе. На скорость вывода отчета такой вызов влиять не будет, поэтому оставим текст конструктора без изменений.
После этого мы получаем выборку из результата запроса, которую перебираем в цикле:
В последней строке конструктор добавил начало автогруппировки строк. В данном примере у нас нет строк, которые нужно было бы группировать, но по умолчанию конструктор всегда предлагает выполнить группировку строк в табличном документе. На скорость вывода отчета такой вызов влиять не будет, поэтому оставим текст конструктора без изменений.
После этого мы получаем выборку из результата запроса, которую перебираем в цикле:
В каждой итерации цикла мы заполняем параметры полученной ранее области макета значениями, полученными из очередной записи выборки результата запроса и выводим эту область в табличный документ.
В заключение процедуры, мы выводим в табличный документ завершающие области макета:
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
Теперь запустим 1С:Предприятие в режиме отладки и посмотрим на результат работы нашего отчета:
Таким образом на примере этого отчета мы продемонстрировали, как использовать конструктор выходной формы и познакомились с некоторыми основными конструкциями языка запросов.