Как вывести отчет из документа 1с

Обновлено: 07.07.2024

Сначала получаем форму.

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

Далее получаем настройки:

Через серверный вызов получаем настройки и если нужно заполняем параметры Компоновщика в отдельной процедуре.

Загружаем измененные настройки в компоновщик

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

Сначала получаем схему компоновки данных. Схема может быть получена из разных источников: общий макет, макет прикладного объекта, такого как справочник или отчет, макет из внешней обработки.

Код выполняется на сервере.

Получение локального макета

Получение макета произвольного отчета

Получение макета во внешней обработке

Получение макета из внешней обработки или отчета

Далее мы получаем настройки. Настройки СКД могут быть взяты из разных источников. Мы можем их получить из самой СКД:

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

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

И когда будем формировать

Далее программно заполняем параметры Компоновщика. Об этом подробно в разделе 4 .

Объявляем создаем необходимые объекты:

Создаем макет компоновки с помощью компоновщика макета:

Если результат выполнения СКД нужно вывести в таблицу значений то соответствующий тип генератора нужно указать в параметрах:

Инициализируем процессор компоновки данных

Создаем процессор вывода:

Для вывода в таблицу значений используется другой процессор вывода:

Запускаем процесс вывода:

Теперь мы можем проводить нужные операции с полученными данными.

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

При программном формировании СКД как в пункте 2 у нас есть огромное количество возможностей по управлению отчетом. Опишем самые часто используемые из них.

Или если с добавлением нового параметра

Переменная Настройки содержит в себе всю палитру настроек которая доступна в редакторе СКД в разделе “Настройки”. Наиболее часто из них программно редактируются отборы, параметры и структура, в случае когда отчет с табличной структурой надо вывести в таблицу значений. Рассмотрим их подробнее.

Параметры

Все параметры создаются при создании исходного отчета, исключение если параметр был добавлен при редактировании запроса. Значение существующего параметра устанавливается следующим образом:

Добавление параметра делается следующим образом

Отбор

У отборов нет специальных функций по установке значений. Поэтому нужно перебирать коллекцию циклом.

Структура

Для адаптации отчета к выводу в таблицу значений нужно очистить структуру группировок отчета и создать поле группировки “Детальные записи”.

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

Приведенные примеры кода были протестированы на платформе 1С:Предприятие 8.3 (8.3.13.1690).

Основы формирования табличного документа на основе макета

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

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

Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7.7, в ячейку нельзя вписать выражение. В версии 8.0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию "Параметры" объекта "ТабличныйДокумент".

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

Общая схема

Общая схема формирования печатной формы на основе макета:

  1. Создание макета в табличном редакторе (определение областей, имен параметров, форматирования).
  2. Создание нового табличного документа (этот пункт не требуется, если отчет выводится в элемент управления ПолеТабличногоДокумента).
  3. Получение макета в переменную (метод ПолучитьМакет).
  4. Получение областей макета (метод ПолучитьОбласть).
  5. Заполнение параметров области (свойство Параметры).
  6. Вывод области в табличный документ (методы Вывести и Присоединить).
  7. Установка свойств отображения табличного документа (сетка, заголовки, только просмотр и т.д.).
  8. Отображение табличного документа на экране (а может быть отправка на принтер или сохранение).

Пример вывода табличного документа

Ниже приведен пример формирования печатной формы расходной накладной из модуля документа:

Процедура Печать(ТабДок) Экспорт

//создание нового табличного документа
ТабДок = Новый ТабличныйДокумент ;

//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная. ПолучитьМакет ("Основной");

//получим область "Заголовок" как новый табличный документ (!)
Область = Макет. ПолучитьОбласть ("Заголовок");

//укажем параметры области
Область. Параметры .НомерДокумента = Номер;
Область.Параметры.От = Дата;
Область.Параметры.Кому = Контрагент;

//выведем заполненную область "Заголовок" в табличный документ
ТабДок. Вывести (Область);

//выведем область "Шапка" в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));

//получение области "Строка"
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть("Строка");

//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл

//заполнение параметров области из строки табличной части
Область.Параметры. Заполнить (СтрСостава);

//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);

КонецЦикла;

//вывод области "Подвал"
Область = Макет.ПолучитьОбласть("Подвал");
Область.Параметры.ИтогоКоличество = Состав.Итог("Количество");
Область.Параметры.ИтогоСумма = Состав.Итог("Сумма");
ТабДок.Вывести(Область);

//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;

//покажем табличный документ на экране
ТабДок. Показать ();

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

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

Метод табличного документа ПроверитьВывод()

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

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

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

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

2.1. проверяем, вмещается ли на текущую страницу область со строкой ведомости и область итога по странице;
2.2. если области помещаются на странице - выводим строку области;
2.3. иначе - выводим подвал страницы, выводим горизонтальный разделитель страницы, выводим шапку страницы, выводим строку ведомости;

3. выводим подвал отчета.

Ниже приведен пример того, как подобный алгоритм может быть реализован на встроенном языке 1С:Предприятия 8.0:

Метод табличного документа ПроверитьПрисоединение()

Метод табличного документа ПроверитьПрисоединение() работает аналогично методу ПроверитьВывод() , с тем отличием, что данный метод проверяет, изменится ли количество страниц по горизонтали при выводе в отчет областей при помощи метода Присоединить() .

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

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

Чтобы вклиниться в процесс формирования отчета вам необходимо программно получить результат отчета. Поэтому постобработка ВСЕГДА связана с программным формированием отчета. Можно конечно на форме сделать специальную кнопку, чтобы пользователь нажимал ее после формирования отчета, но это будет выглядеть нелепо. Поэтому будем считать, что для постработки отчет на 1С СКД формируется программно всегда.

Есть два способа как можно программно выполнить отчет на СКД:

  • Простой. Из формы отчета (нужно чтобы у отчета была форма) вызвать метод СкомпоноватьРезультат. Вы заменяете стандартную кнопку Сформировать собственной командой. В этой команде вызываете указанный выше метод, передав (в случае управляемой формы) режим компоновки – Непосредственно. Затем выполняете постобработку над полученным табличным документом (обычно это реквизит «Результат»). Метод неудобен тем, что нужно добавлять форму (если ее нет), нужно формировать отчет непосредственно, плюс довольно часто для доработки табличного документа нужно переходить на сервер (что не есть хорошо)
  • Чуть сложнее. В модуле отчета в предопределенной процедуре «ПриКомпоновкеРезультата» программно формируете отчет. Стандартный шаблон (код) для этого приведен ниже. После получения табличного документа вы выполняете свой код постобработки. Для этого подхода существует еще один вариант реализации, когда обработка выполняется не после формирования табличного документа, а в процессе. Делается это с помощью поэлементного вывода в табличный документ с помощью методов процессора компоновки данных – НачатьВывод, Следующий, ВывестиЭлемент.

С помощью этого шаблона вы можете программно формировать отчет на СКД:

Теперь рассмотрим конкретные примеры, когда вам может понадобиться постобработка. В этих примерах я не всегда буду приводить полный код решения. Где-то будет достаточно идеи, а где-то ссылки на уже готовый отчет.

Вывод картинок

До недавнего времени только с помощью постобработки в отчетах на СКД можно было вывести картинки в отчете. Начиная с релиза платформы 8.3.14 в СКД 1С:Предприятие 8 появилась возможность вывода картинок без постобработки.

Вот такой кусок кода в ПриКомпоновкеРезультата выводить после программного формирования картинку в колонке прайса:

Отчет прайс лист мы разбирали в нашем курсе по СКД

Нумерация колонок отчета

Здесь мы рассмотрим вариант постобработки из формы отчета

Повторение шапки отчета и вывод колонтитулов

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

Повторение шапки реализуется кодом:

Вывод колонтитулов реализуется через свойство ВерхнийКолонтитул табличного документа:

«Красивые» заголовки для группировок колонок таблицы

Вот так заголовки выводятся совсем некрасиво:


Вот так чуть лучше:


Настройка для такого варианта (для второй и третей группировок колонок):


И только постобработкой (хотя может быть есть какой-то другой секретный способ) можно сделать так:


Вставить разрыв страницы для группировки

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

Как сделать отчет в 1С

Научимся создавать отчеты в конфигураторе 1С. Для того, чтобы создать отчет, в конфигураторе необходимо выделить ветку Отчеты, вызвать правой клавишей мышки контекстное меню и выполнить команду Добавить.

Как сделать отчет в 1С

Как сделать отчет в 1С

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

Подсистемы для отчета в 1С

А на закладке Права указать, у каких ролей будет право на использование и просмотр отчета.

Права на отчет в 1С

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

В этой статье я покажу пример создания простого отчета с помощью СКД.

Открыть схему компоновки данных 1С

Конструктор макета в 1С

Будет создана схема компоновки данных, в которой добавим набор данных Запрос.

Набор данных Запрос в СКД

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

Схема компоновки данных в 1С

Осталось перейти в настройки, и создать группировку.

Настройки схема компоновки данных в 1С

В группировке выберем единственное поле.

Настройки схема компоновки данных в 1С

Выбранное поле появится в дереве Отчет закладки Настройка, и, в принципе, наш отчет будет готов.

Настройки схема компоновки данных в 1С

Заметьте, созданная схема компоновки появится в редакторе отчета на закладке Макеты.

Схема компоновки данных отчета в 1С

Наш отчет готов, осталось озаботиться тем, чтобы пользователь мог формировать этот отчет.

Вывести отчет в 1С

Проверим, сможет ли наш пользователь увидеть этот отчет.

Откроем командный интерфейс подсистемы, в которую включили отчет при его создании.

Открыть командный интерфейс 1С

Отчет должен быть в группе Панель Действий.Отчеты.

Отчет в командном интерфейсе 1С

Чтобы отчет был в этой группе, должно выполняться несколько условий.

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

Использовать стандартные команды отчета 1С

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

Основная схема компоновки данных отчета 1С

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

Группа отчеты подсистемы 1С

И его можно будет сформировать.

Отчеты 1С

Внешний отчет 1С

Создать внешний отчет в 1С

Второй способ – сделать из существующего отчета в конфигураторе новый внешний отчет.

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

Откроется окно «Выбор вида документа», в котором следует указать «Внешний отчет», а после нажать кнопку ОК.

Создать внешний отчет в 1С

Откроется знакомый нам редактор отчёта, с которым работаете так, как работаете с редактором обычного отчёта.

Редактор внешнего отчета в 1С

После того, как вы выполните все работы по созданию отчёта, следует его сохранить на жесткий диск. Для этого нужно или нажать на кнопку «Сохранить» панели «Стандартная», или выполнить команду «Сохранить» в меню Файл, или нажать комбинацию клавиш Ctrl + S. Как результат, откроется окно «Сохранить как…», в котором нужно выбрать место, где будет находиться файл вашего внешнего отчёта.

Сохранение внешнего отчета в 1С

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

Сохранение внешнего отчета в 1С

В результате выполнения команды, будет открыто окно «Сохранить как…», в котором следует выбрать путь хранения нового отчета.

Сохранение внешнего отчета в 1С

Открыть внешний отчет в 1С

Для того, чтобы пользователь имел возможность открывать внешний отчет из клиентского приложения «1С: Предприятия 8.3», необходимо, чтобы у роли этого пользователя было включено право «Интерактивное открытие внешних отчетов».

Интерактивное открытие внешнего отчета 1С

Если это право включено, то внешний отчет в 1С можно открыть, используя команду «Открыть» подменю файл, которое находится в меню «Сервис и настройка» (начиная с версии платформы 1С 8.3.14).

Открыть внешний отчет в 1С

В окне «Открыть» нужно выбрать файл внешнего отчета (с расширением erf).

Открыть внешний отчет в 1С

Выйдет предупреждение безопасности.

Открыть внешний отчет в 1С

И если вы нажмете «Да», то откроется внешний отчет, с которым можно уже работать.

Открыть внешний отчет в 1С

Другие статьи по конфигурированию в 1С:

Программировать в 1С за 11 шагов

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

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