Создание отчета с помощью конструктора выходной формы 1с
Как известно, с помощью Системы Компоновки Данных (СКД) в 1С 8.3 и 8.2 можно быстро построить отчет практически любой сложности. Простота и скорость создания отчета достигается удобным визуальным конструктором, который обеспечивает необходимый результат без написания кода. Но все же бывает необходимость «вмешаться» в работу конструктора и программно сформировать отчет.
Когда может потребоваться программный вывод отчета в 1С на СКД:
- программная установка параметров СКД;
- использование внешних данных в отчете;
- специфика табличного документа при выводе на печать;
- прочие нестандартные ситуации.
Предлагаю на примере рассмотреть, как можно сформировать отчет на СКД и заполнить его параметры программно.
Создадим новый внешний отчет. Напишем простейший запрос на примере 1С Бухгалтерия, который выводит начальный и конечный остатки и обороты по счету:
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Счет,
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Субконто2,
ХозрасчетныйОстаткиИОбороты.Субконто3,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.СуммаОборот
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты
Вот, как выглядит отчет в стандартном виде:
Теперь сформируем его программно. Для этого нам нужно добавить Основную Форму:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Добавим команду и кнопку на форме:
В действиях команды пропишем следующий код (читать код на сайте достаточно трудно, поэтому рекомендуем скачать уже готовый пример отчета и посмотреть код в нем):
Отчеты 1С 8.3 — это специальный объект метаданных, предназначенный для формирования удобного для пользователя представления данных из таблиц базы данных 1С.
Разберемся, как настроить отчеты, для чего они нужны, чем отличаются внешние отчеты от встроенных и чем отличаются отчеты от обработки.
Создание и настройка отчетов в 1С 8.3
Для того чтобы создать или настроить отчет, необходимо знать встроенный язык программирования 1С 8.3 и язык запросов 1С. Как ни крути, в основе создания практически любого отчета лежит первоначальный запрос, который получает данные. Эти данные мы обрабатываем и выводим в удобной пользователю форме.
Отчеты — это главное в любой информационной системе, поэтому фирма 1С обратила на разработку отчетов пристальное внимание и создала большое количество конструкторов и механизмов для их создания.
Рассмотрим основные методики создания отчетов
Как сделать отчет в 1С с помощью макета
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Создание с помощью макета — самый рутинный способ. Однако к нему часто прибегают от безысходности, т.к. в этом способе разработчик полностью прописывает кодом каждое действие, а значит, мы можем сделать всё что угодно. Этим не могут похвастаться другие механизмы.
Но в этом случае все пунктики, меню и прочие «бантики» придется прописывать вручную, что очень трудоёмко.
Создание отчета с помощью конструктора выходной формы
Конструктор выходной формы — встроенный в платформу механизм, который облегчает разработку отчета. Конструктор доступен только для обычных форм.
Конструктору указывается запрос и все необходимые параметры будущего отчета, а он, в свою очередь, генерирует модули и формы отчета. Механизм основан на объекте встроенного языка 1С 8.2 — ПостроительОтчетов.
Создание отчета с помощью Универсального отчета
Универсальный отчет — механизм типовых конфигураций, позволяющий облегчить разработку отчетов в системе. Этот способ был самым популярным до появления СКД. Метод так же основан на построителе отчетов. В идеале, отчет должен быть построен по регистру накопления.
Универсальный отчет имеет большой функционал, удобный интерфейс настроек, привычный пользователю:
Отчеты на основе Системы компоновки данных
Это самый прогрессивный метод создания отчетов в 1С, рекомендованный и самой фирмой 1С. Система компоновки данных (СКД) появилась в платформе 1С в версии 8.1.
СКД позволяет создать несложные отчеты вообще без строчки программирования, потому что он имеет очень гибкий и функциональный конструктор создания схемы компоновки данных:
Во всех последних конфигурациях все отчеты написаны с использованием системы компоновки данных.
Чем отличаются внешние отчеты от встроенных
Как написано в документации — ничем. Механизм внешних отчетов был создан для того, чтобы отлаживать отчеты в процессе разработке.
Единственное отличие при разработке решения — Вы не можете обратиться к внешнему отчету «по имени», в отличие от встроенного отчета.
Чем отчет отличается от обработки
На самом деле — практически ничем. Главное различие — назначение использования объекта: отчеты нужны для отображения информации, а обработки — для изменения информации.
Основные различия в свойствах: в отчетах можно указать Основную схему компоновки данных (СКД) и указать настройки для сохранения параметров отчетов.
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Создать в 1С 8.3 отчет за считанные минуты можно с помощью СКД (система компоновки данных). Приведу пример такого отчета для конфигурации 1С:Бухгалтерия 3.0.
В нашем примере отчет показывает выпуск продукции и услуг в разрезе подразделений, номенклатурных групп и с разбивкой по месяцам.
Вот главная страница отчета:
Вызывается данная страничка из конфигуратора в меню Файл – Новый – Внешний отчет.
Сначала добавляем набор данных (НаборДанных1). В окошке «Запрос» можно набрать текст запроса самостоятельно, создать с помощью Конструктора запроса или загрузить из файла. Удобнее всего использовать конструктор запроса. Как работает конструктор, читайте здесь.
Например, заголовки колонок (галочка «Количество» на рисунке выше позволяет набрать любой текст заголовка для данного поля), можно задать формат вывода данных(см. Формат в строке Количество). Формат редактируется для любого вида данных – строк, дат, чисел.
На закладке Ресурсы выбираем сами ресурсы и настраиваем вывод итогов для них:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Закладка Параметры содержит все, от чего меняется содержимое отчета (например, период, за который будут выбираться данные). Заполняется автоматически на основании параметров запроса (см. первую страничку). Галочками можно регулировать видимость, доступность этих параметров, задавать первоначальное значение и т.д:
И, наконец, Настройки. Тут рисуется внешний вид отчета – колонки, строки, их положение относительно друг друга, группировки и т.д. Кнопочка «Открыть конструктор настроек» поможет выстроить строчки и колонки в нужном порядке. Кнопочка «Пользовательские настройки элемента» позволит вывести параметры в шапку отчета:
Обратите внимание на колонку Период.ЧастиДат.НазваниеМесяца. Как же вывести название месяца в заголовок колонки? Вот тут и выводится.
Кстати, именно такая настройка позволяет выводить данные сразу за несколько периодов в соседних колонках отчета:
Еще одна важная закладка – Выбранные поля. Если она будет пустой, отчет не сформируется. Обычно заполняется автоматом по кнопке «Открыть конструктор настроек»:
Собственно, вот все, что нужно из минимально необходимого. В результате будем иметь отчет следующего вида:
«Красивости» (заголовок, фон) настраиваются на закладках «Условное оформление», «Другие настройки».
Создание такого отчета занимает на порядок меньше времени, чем его описание. По ссылке можете скачать получившийся отчет для конфигурации 1С 8.3 Бухгалтерия 3.0.
Смотрите также видео по созданию таких отчетов:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Для создания отчетов в системе 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. Отчет Остатки материалов
Теперь переходим к рассмотрению процедуры, ответственной за формирование этого отчета.
Процедура ОстаткиМатериалов(ТабДок, Дата, Ответственный) Экспорт
Запрос = Новый Запрос;
| ОстаткиМатериаловОстатки.ЦентрОтветственности КАК ЦентрОтветственности,
| РегистрНакопления.ОстаткиМатериалов.Остатки(&Дата, ЦентрОтветственности = &Ответственный)
Цель лекции: освоить технологию разработки отчетов .
8.1. Создание отчета
Для создания отчетов в системе 1С:Предприятие используется прикладной объект Отчет. В рамках использования этого объекта существует несколько способов построения отчета . В частности, это способ, предусматривающий использование Конструктора выходной формы . Именно с ним мы познакомимся на данном занятии, рассмотрев простейший вариант построения отчета .
Мы будем разрабатывать отчет который предназначен для вывода количественного остатка всех материалов на определенную дату по выбранному ответственному лицу.
Создадим новый объект Отчет, назовем его ОстаткиМатериалов, рис. 8.1.
Нажмем на кнопку Действия в форме настройки параметров объекта и выберем пункт меню Конструкторы > Конструктор выходной формы. В появившемся окне оставим все по умолчанию и нажмем на кнопку ОК. Появится окно ( рис. 8.2), внешне напоминающее окно Конструктора запросов, но с дополнительными вкладками. Основная задача, которая сейчас стоит перед нами - создать с помощью Конструктора запрос , который будет получать нужные нам данные.
Данные для получения информации об остатках материалов мы будем выбирать из регистра ОстаткиМатериалов, в частности, из виртуальной таблицы ОстаткиМатериалов.Остатки. Это означает, что если мы хотим вводить в запрос какие-либо условия отбора данных, делать это нужно в параметрах виртуальной таблицы.
Мы отобрали следующие поля виртуальной таблицы:
- ЦентрОтветственности;
- Номенклатура;
- КоличествоОстаток.
Напомним, нам нужны условия, которые позволят отобрать остатки:
- На определенную дату;
- По заданному материально ответственному лицу.
Для того, чтобы задать параметры виртуальной таблицы, выделим ее в области Таблицы и нажмем на кнопку Параметры виртуальной таблицы в командной панели формы, вызвав таким образом окно настройки параметров, рис. 8.3.
В поле Период введем следующий текст: &Дата. Дата - это имя параметра, который будет устанавливать пользователь перед выполнением запроса.
В поле Условие нажмем кнопку с тремя точками и в появившееся окно ввода условия ( рис. 8.4) введем следующий текст:
Его можно вводить как полностью вручную, так и выбирая доступные поля таблицы и функции из списков в верхней части окна. Здесь переменная Ответственный так же будет устанавливаться пользователем перед выполнением запроса и передаваться в запрос .
Вот как, в итоге, выглядит окно настройки параметров виртуальной таблицы, рис. 8.5.
Обратите внимание на вычисляемые функции (f(x) ПРЕДСТАВЛЕНИЕ…) , которые автоматически добавляются в раздел Поля при добавлении туда полей, соответствующих измерениям регистра. Эти функции предназначены для получения строкового представления данных, они будут использоваться для вывода строковых представлений в отчет .
Перейдем на вкладку Итоги, рис. 8.6.
На этой вкладке укажем в качестве группировочного поля ЦентрОтветственности. Это улучшает наглядность отчета , не приводя в каждой строке выводимых данных ФИО сотрудника и наименование подразделения , а выводя их лишь один раз.
Читайте также: