С помощью конструктора выходных форм можно создать печатную форму отчета

Обновлено: 02.05.2024

Объект 1С "Отчеты" - прикладной объект, предназначенный для представления, просмотра и печати накопленных данных в удобном для анализа виде; это специальный объект метаданных, предназначенный для формирования удобного для пользователя представления данных из таблиц базы данных 1С.

На основе информации из базы данных отчеты выдают печатные формы, содержащие всевозможные реестры, детальную и сводную информацию (например, отчеты "Оборотно-сальдовая ведомость", "Список сотрудников", "Анализ продаж").

Отчеты, как и многие другие объекты конфигурации, могут иметь реквизиты и табличные части, но их смысл отличается от реквизитов и табличных частей справочников и документов. Дело в том, что отчет (и обработки) - это объекты, которые не сохраняются в базе данных, а существуют только в определенные периоды времени, пока с ними работает пользователь. Поэтому назначение реквизитов и табличных частей отчетов (обработок) - указание параметров формирования отчетов и выполнения обработок.

Для отладки отчетов в процессе разработки был создан механизм внешних отчетов. Внешний отчет 1С находится не в конфигурации, а сохранен в отдельный файл (обычно с расширением .erf). Его можно просто открыть, как обычный файл, какв Конфигураторе, что в режиме Предприятие (Файл / Открыть).

Отличие внешних отчетов от встроенных:

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

Отличия отчета от обработки:

  • отчеты нужны для отображения информации, а обработки — для изменения информации;
  • в отчетах можно указать Основную схему компоновки данных (СКД) и указать настройки для сохранения параметров отчетов.

В общем случае, для разработки отчетов используется конструктор СКД, что позволяет создавать отчеты без программирования. В то же время, отчет может быть построен полностью программно, с использованием объектов встроенного языка.

Программная реализация отчета 1С

Создание отчета на основе Системы компоновки данных (СКД)

Система компоновки данных представляет собой механизм, основанный на декларативном описании отчетов и предназначенный:

  1. для построения отчетов, а также
  2. вывода информации, имеющей сложную структуру и содержащей произвольный набор таблиц и диаграмм.

Это самый прогрессивный метод создания отчетов в 1С, рекомендованный и самой фирмой 1С. Система компоновки данных интегрирована в объект конфигурации "Отчет", что позволяет создавать отчеты без программирования.

У объекта конфигурации "Отчет" реализовано свойство "Основная схема компоновки данных".

СКД имеет очень гибкий и функциональный конструктор, который позволяет описать :

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

Создание отчета на основе Системы компоновки данных (СКД)

Настройки компоновки данных могут быть созданы с помощью специального конструктора настроек компоновки данных, или вручную.

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

Предопределенные варианты задаются в конструкторе СКД на закладке "Настройки":

Для создания отчетов в системе 1С:Предприятие используется прикладной объект Отчет. В рамках использования этого объекта существует несколько способов построения отчета. В частности, это способ, предусматривающий использование Конструктора выходной формы. Именно с ним мы познакомимся на данном занятии, рассмотрев простейший вариант построения отчета.

Мы будем разрабатывать отчет который предназначен для вывода количественного остатка всех материалов на определенную дату по выбранному ответственному лицу.

Создадим новый объект Отчет, назовем его ОстаткиМатериалов, рис. 8.1.


Рис. 8.1. Начало создания отчета

Нажмем на кнопку Действия в форме настройки параметров объекта и выберем пункт меню Конструкторы > Конструктор выходной формы. В появившемся окне оставим все по умолчанию и нажмем на кнопку ОК. Появится окно (рис. 8.2), внешне напоминающее окно Конструктора запросов, но с дополнительными вкладками. Основная задача, которая сейчас стоит перед нами - создать с помощью Конструктора запрос, который будет получать нужные нам данные.


Рис. 8.2. Создание запроса

Данные для получения информации об остатках материалов мы будем выбирать из регистра ОстаткиМатериалов, в частности, из виртуальной таблицы ОстаткиМатериалов.Остатки. Это означает, что если мы хотим вводить в запрос какие-либо условия отбора данных, делать это нужно в параметрах виртуальной таблицы.

Мы отобрали следующие поля виртуальной таблицы:

Напомним, нам нужны условия, которые позволят отобрать остатки:

1. На определенную дату;

2. По заданному материально ответственному лицу.

Для того, чтобы задать параметры виртуальной таблицы, выделим ее в области Таблицы и нажмем на кнопку Параметры виртуальной таблицы в командной панели формы, вызвав таким образом окно настройки параметров, рис. 8.3.


Рис. 8.3. Окно настройки параметров виртуальной таблицы

В поле Период введем следующий текст: &Дата. Дата - это имя параметра, который будет устанавливать пользователь перед выполнением запроса.

В поле Условие нажмем кнопку с тремя точками и в появившееся окно ввода условия (рис. 8.4) введем следующий текст:


Рис. 8.4. Ввод произвольного выражения для поля Условие

Его можно вводить как полностью вручную, так и выбирая доступные поля таблицы и функции из списков в верхней части окна. Здесь переменная Ответственный так же будет устанавливаться пользователем перед выполнением запроса и передаваться в запрос.

Вот как, в итоге, выглядит окно настройки параметров виртуальной таблицы, рис. 8.5.


Рис. 8.5. Окно настройки параметров виртуальной таблицы

Обратите внимание на вычисляемые функции (f(x) ПРЕДСТАВЛЕНИЕ…), которые автоматически добавляются в раздел Поля при добавлении туда полей, соответствующих измерениям регистра. Эти функции предназначены для получения строкового представления данных, они будут использоваться для вывода строковых представлений в отчет.

Перейдем на вкладку Итоги, рис. 8.6.


Рис. 8.6. Конструктор выходной формы, вкладка Итоги

На этой вкладке укажем в качестве группировочного поля ЦентрОтветственности. Это улучшает наглядность отчета, не приводя в каждой строке выводимых данных ФИО сотрудника и наименование подразделения, а выводя их лишь один раз.

Перейдем на вкладку Отчет. Здесь нужно настроить параметры вывода отчета. Мы, для того, чтобы сделать процесс конструирования отчета максимально наглядным, снимем галочку в поле Использовать построитель отчета, рис. 8.7. Построитель отчета расширяет возможности пользователя по работе с запросом, однако, для того, чтобы не перегружать наш пример, мы в данный момент не будем им пользоваться.


Рис. 8.7. Конструктор выходной формы, вкладка Отчет

Переместимся на вкладку Выходная форма. Здесь нужно задать типы параметров, которые мы собираемся передавать в отчет, рис. 8.8. Параметру Дата установим тип Дата, параметру Ответственный -СправочникСсылка.Сотрудники. Это позволит нам выбирать дату из календаря, а сотрудника, по которому строится отчет, из справочника.


Рис. 8.8. Конструктор выходной формы, вкладка Выходная форма

Работа с Конструктором завершена, нажмем на кнопку ОК. Посмотрим, что создал конструктор, рис. 8.9.


Рис. 8.9. Результаты работы Конструктора выходной формы

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

Запрос формируется по нажатию на кнопку Сформировать.

Конструктор, помимо визуальных элементов, генерирует программный код. Его можно найти в модуле выходной формы, рис. 8.10.


Рис. 8.10. Процедуры, сгенерированные Конструктором выходной формы

А именно, здесь мы видим две процедуры. Одна из них - ДействияФормыОстаткиМатериаловСформировать() - это обработчик события нажатия на кнопку. Вторая - ОстаткиМатериалов() отвечает за формирование отчета. Рассмотрим эти процедуры подробнее. Для начала - обработчик события.

ОстаткиМатериалов(ТабДок, Дата, Ответственный);

В этой процедуре мы сначала присваиваем переменной ТабДок ссылку на поле табличного документа, расположенное на форме и предназначенное для вывода отчета.

Далее, мы вызываем процедуру ОстаткиМатериалов(), передавая ей в качестве параметров ссылку на поле табличного документа, а так же - два параметра, которые мы будем использовать при формировании отчета - это Дата и Ответственный. Эти параметры нужно предварительно задать в окне формы.

Прежде чем рассматривать процедуру ОстаткиМатериалов(), сделаем в ней одно исправление. Оно будет касаться приведения даты, переданной в параметре Дата к концу дня. Дело в том, что если этого не сделать, то в отчет, скажем, за 6 мая, не попадут данные, сформированные документами за этот день.

Приведение даты к концу дня можно выполнить с помощью функции КонецДня(). Эта функция возвращает дату и время конца дня для переданной даты.

Найдите такую строку в процедуре ОстаткиМатериалов():

Отредактируйте ее, чтобы она стала выглядеть так:

Теперь, прежде чем приступить к разбору этой процедуры, давайте проверим, как работает созданный отчет в режиме 1С:Предприятие. Его можно найти в меню Операции > Отчет. В открывшейся форме выберем ответственного сотрудника, по которому мы хотели бы получить данные, укажем дату, на которую нас интересуют остатки и нажмем на кнопку Сформировать. Вот, что у нас получилось (рис. 8.11).


Рис. 8.11. Отчет Остатки материалов

Здесь видно, что отчет, с точки зрения поставленных перед его созданием целей, выводит данные верно. Однако внешний вид отчета можно улучшить. В частности, можно поменять наименования столбцов ЦентрОтветственности и КоличествоОстаток на что-нибудь более благозвучное, уменьшить ширину столбцов и добавить границы ячеек. Все эти действия можно выполнить в редакторе макета, вводя текст в нужные ячейки и настраивая их размер и форматирование. Вот как выглядит отчет после исправления "косметических" недочетов, рис. 8.12.


Рис. 8.12. Отчет Остатки материалов

Теперь переходим к рассмотрению процедуры, ответственной за формирование этого отчета.

Процедура ОстаткиМатериалов(ТабДок, Дата, Ответственный) Экспорт

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

| ОстаткиМатериаловОстатки.ЦентрОтветственности КАК ЦентрОтветственности,

| РегистрНакопления.ОстаткиМатериалов.Остатки(&Дата, ЦентрОтветственности = &Ответственный)

Выходную форму вместе с запросом можно создавать, используя для ускорения процесса конфигурирования Конструктор выходных форм.

Вызвать этот Конструктор можно разными способами. Наиболее простой — из окна «Конфигурация» (рис. 7.27).

Сразу после описанных выше действий, Конструктор откроет диалог по выбору места расположения выходной формы (рис. 7.28).

Запустите Конструктор выходных форм для справочника «Подразделения». Укажите на первом этапе для новой выходной формы название — «Подразделения».

Используя кнопки «>» в окне диалога Конструктора, выберите в качестве полей: Код, Наименование и Владелец из справочника «Подразделения» (рис. 7.29).

Переключитесь на закладку «Порядок».

Вызов Конструктора выходных форм

Рис. 7.27. Вызов Конструктора выходных форм

Выбор места расположения выходной формы

Рис. 7.28. Выбор места расположения выходной формы

Очевидно, что записи в запросе следует сначала упорядочить по названию фирм, а потом уже «внутри» каждой фирмы следует сохранить иерархию записей справочника «Подразделения». На закладке укажите следующий порядок сортировки (рис. 7.30).

Рис. 7.29. Выбор таблиц и полей запросов

Выбор порядка сортировки

Рис. 7.30. Выбор порядка сортировки

Перейдите к закладке «Выходная форма».

На закладке «Выходная форма» мы сможем указать конструктору, где расположить процедуру и нужно ли связать ее соответствующей кнопкой.

Установите переключатель «Расположение элементов управления» в положение «Новая форма» (рис. 7.31).

И нажмите на кнопку 0К.

Итак, выходная форма создана. Теперь необходимо добавить ее вызов из формы списка справочника «Подразделения».

Упражнение № 7.38 -

Выделите мышью кнопку на нижней панели инструментов и заполните ее свойства следующими значениями:

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

Упражнение № 11.9 -

Добавьте в конфигурацию новый отчет со следующими свойствами:

Список организаций объединения

Перейдите к закладке «Макеты», така как наш отчет не будет иметь ни формы, ни реквизитов. Используя кнопку «Конструкторы» выберите пункт «Конструктор выходных форм. » (рис. 11.8).

Запуск Конструктора выходных форм

Рис. 11.8. Запуск Конструктора выходных форм

Сразу после описанных выше действий Конструктор откроет диалог по выбору места расположения выходной формы (рис. 11.9). Не меняйте предлагаемое конструктором значение и нажмите на кнопку «ОК», чтобы перейти к шагам формирования выходной формы.

Выбор места расположения выходной формы

Рис. 11.9. Выбор места расположения выходной формы

Упражнение № 11.9 (продолжение)

Используя кнопки «>» в окне диалога Конструктора, выберите в качестве полей Код и Наименование из справочника «Фирмы».

Перейдите к закладке «Порядок».

Используя кнопки «>» в окне диалога Конструктора, выберите в качестве порядка сортировки поле «Код». Перейдите к закладке «Выходная форма».

Поскольку формы у нашего отчета не будет, то переключатель «Расположение элементов управления» установите в положение «Не располагать» (рис. 11.10).

Выбор выходной формы

Рис. 11.10. Выбор выходной формы

Примечание: при выполнении последней операции в закладке «Отчет» уберите галочку из пункта «Использовать построитель отчета». Нажмите на кнопку «ОК», чтобы закончить работу с Конструктором.

Посмотрим, что у нас получилось.

Если отрыть закладку «Макеты», то можно увидеть, что конструктор добавил в макеты макет «СписокФирм».

А текст Модуля объекта отчета «СписокФирм», сформированный Конструктором, будет следующим:

Процедура СписокФирм(ТабДок) Экспорт // [1] К0НСТРУКТ0Р_ВЫХ0ДНЫХ_Ф0РМ

Упражнение № 11.10 -

Вставьте в меню «Отчеты» основного интерфейса конфигурации пункт меню «Список фирм» и обеспечьте вызов нашего отчета.

Проверьте работоспособность Конфигурации.

Примечание: если данный способ не сработает, то в конструкторе выходной формы на вкладе «Выходная форма» необходимо оставить галочку на поле «Новая форма» (иначе придется самим создавать форму для данного отчета).

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

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

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

| Фирмы.Код КАК Код,

I Фирмы.Наименование |ИЗ

| Справочник.Фирмы КАК Фирмы

I УПОРЯДОЧИТЬ по

ОбластьЗаголовок = Макет.ПолучитьОбласть(«Заголовок»); ОбластьПодвал = Макет.ПолучитьОбласть(«Подвал»); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть(«ШапкаТаблицы»); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть(«ПодвалТаблицы»); ОбластьДетали = Макет.ПолучитьОбласть(«Детали»); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы);

Пока ВыборкаДетали.СледующийО Цикл ОбластьДетали.Параметры.Заполнить(ВыборкаДетали); ТабДок.Вывести(ОбластьДетали);

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

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

  • табличный документ- представляет результаты в виде документа, похожего на электронную таблицу;
  • сводную таблицу- многомерная таблица с возможностью интерактивного формирования состава строк и столбцов;
  • диаграмму- поддерживает несколько различных видов диаграмм (линейная, круговая, гистограмма и пр.);
  • сводную диаграмму- диаграмма с возможностью интерактивного формирования состава строк и столбцов.

Допускается использование перечисленных элементов управленияв различных комбинациях, так что итоговый документ может содержать, например, график и расположенную рядом с ним таблицу с данными этого графика. Конструктор позволяет управлять размещением группировок, итогов и реквизитов в итоговом документе, а также выбирать один из вариантов стандартного оформлениядокумента.

Конструктор выходной формы может создавать отчетс использованием построителя отчета(в этом случае пользователь получает возможность интерактивной настройки параметров отчета). Соответственно в конструкторе существует возможность настройки как формысамого отчета, так и формы, с помощью которой пользователь будет задавать параметры построителя отчета.


Результатом работы конструктора является набор связанных процедур, которые могут располагаться в различных модулях, и готовый макет отчета. Разработчику остается лишь запустить отчет на выполнение и проверить правильность его работы. Никакого дополнительного программирования или конфигурирования не требуется - конструктор создает полностью работоспособный элемент системы.

В качестве иллюстрации использования конструктора можно привести пример создания отчета о продажах по месяцам. В первом случае использован вариант оформления Классика и объемная гистограмма:

Во втором случае для этого же отчета использован вариант оформления Апельсин и круговая объемная диаграмма:

Как в первом, так и во втором случае, отчеты созданы исключительно средствами конструктора, без написания какого-либо кода вручную.

Читайте также: