1с универсальный отчет программно
Сначала получаем форму.
Если отчет хранится в базе тогда выполняем на клиенте код:
Далее получаем настройки:
Через серверный вызов получаем настройки и если нужно заполняем параметры Компоновщика в отдельной процедуре.
Загружаем измененные настройки в компоновщик
Код выполняется на клиенте, сначала мы формируем структуру с необходимыми параметрами формы, а потом вызываем процедуру открытия. Часто используемые параметры в данном случае это:
Сначала получаем схему компоновки данных. Схема может быть получена из разных источников: общий макет, макет прикладного объекта, такого как справочник или отчет, макет из внешней обработки.
Код выполняется на сервере.
Получение локального макета
Получение макета произвольного отчета
Получение макета во внешней обработке
Получение макета из внешней обработки или отчета
Далее мы получаем настройки. Настройки СКД могут быть взяты из разных источников. Мы можем их получить из самой СКД:
Мы можем создать новый компоновщик настроек на основе схемы и получить настройки из него.
Мы можем получить настройки с отдельного компоновщика настроек, добавленного на произвольную форму.
И когда будем формировать
Далее программно заполняем параметры Компоновщика. Об этом подробно в разделе 4 .
Объявляем создаем необходимые объекты:
Создаем макет компоновки с помощью компоновщика макета:
Если результат выполнения СКД нужно вывести в таблицу значений то соответствующий тип генератора нужно указать в параметрах:
Инициализируем процессор компоновки данных
Создаем процессор вывода:
Для вывода в таблицу значений используется другой процессор вывода:
Запускаем процесс вывода:
Теперь мы можем проводить нужные операции с полученными данными.
Если вывод в таблицу значений завершился ошибкой “Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений” значит настройки СКД не подходят для такой выгрузки, и нужно их изменить, об этом ниже.
При программном формировании СКД как в пункте 2 у нас есть огромное количество возможностей по управлению отчетом. Опишем самые часто используемые из них.
Или если с добавлением нового параметра
Переменная Настройки содержит в себе всю палитру настроек которая доступна в редакторе СКД в разделе “Настройки”. Наиболее часто из них программно редактируются отборы, параметры и структура, в случае когда отчет с табличной структурой надо вывести в таблицу значений. Рассмотрим их подробнее.
Параметры
Все параметры создаются при создании исходного отчета, исключение если параметр был добавлен при редактировании запроса. Значение существующего параметра устанавливается следующим образом:
Добавление параметра делается следующим образом
Отбор
У отборов нет специальных функций по установке значений. Поэтому нужно перебирать коллекцию циклом.
Структура
Для адаптации отчета к выводу в таблицу значений нужно очистить структуру группировок отчета и создать поле группировки “Детальные записи”.
Программист может упростить работу пользователя по вводу параметров и отборов если есть некоторая закономерность в них, но они всё таки не фиксированы. К примеру, сравнительный отчет по продажам за этот месяц этого года и аналогичные месяца трех предыдущих годов.
Приведенные примеры кода были протестированы на платформе 1С:Предприятие 8.3 (8.3.13.1690).
Добрый день, коллеги! Тема библиотеки стандартных подсистем обширна и недостаточно раскрыта. Все новые конфигурации построены на основе этой библиотеки, - ЗУП 3.1, УТ 11, ERP 2.4 и другие. Поэтому Вашему вниманию предлагаю простой способ разработки контекстного отчета на основе СКД, поскольку большинство отчетов построено на СКД, и в экзамене на 1С Специалист по платформе тоже отчеты строятся на СКД, которые позволяют на своей основе построить отчеты с универсальными настройками и не создавать полностью макет вручную и программно его заполнять.
Пример построения подобного отчета можно посмотреть демо конфигурации БСП соответствующей версии на примере отчета _ДемоОтчетПоСчетамНаОплатуКонтекстный.
Для программы ЗУП 3.1.12 используется версия библиотеки стандартных подсистем 3.1.2. В отчете используется макет ОсновнаяСхемаКомпоновкиДанных.
В данной схеме компоновки отчета отсутствуют параметры, но в полях выборки есть поле ссылка, именно по нему происходит отбор, при открытии отчета.
В модуле отчета, имеются процедуры:
- СведенияОВнешнейОбработке() Экспорт - для регистрации отчета в системе
2.И две процедуры, с помощью которых происходит передача параметров из вызывающего объекта в отчет:
Таким образом в нашем случае отбор по ссылке происходит в этом участке кода:
На основе этого примера, я сделал отчет "Лист ознакомления с графиком отпусков", который вызывается из формы списка, и формы документа "График отпусков", причем в этом отчете параметры присутствуют, и они корректно заполняются. Вместо "Ссылка" в вышеприведенном коде нужно вставить название вашего параметра.
После добавления внешнего отчета в Дополнительные отчеты и обработки необходимо также указать размещение, в нашем случае документ "График отпусков".
После этого в меню Еще. появляется пункт Дополнительные отчеты, откуда и вызывается отчет "Лист ознакомления".
Универсальный отчет может использоваться в любой конфигурации 1С:Предприятия 8.1 и 8.2 (толстый клиент) без изменения кода. Для запуска отчета под 8.2, отчет необходимо открыть в конфигураторе для конвертации.
Про универсальность
Этот Универсальный отчет не имеет привязки к конкретной конфигурации. Т.е. работает в любой конфигурации 1С:Предприятия 8, в том числе и как внешний отчет. Также с легкостью заменит типовой УниверсальныйОтчет.
Этот Универсальный отчет подключается ко многим типовым механизмам конфигураций при их наличии (обработки подключаемые к отчету, сохранение настроек и т.д.).
Расширен список источников данных с которыми умеет работать Универсальный отчет. Добавлена работа со справочниками и документами, а также их табличными частями. Добавлена работа с регистрами сведений. Расширена работа с регистрами накопления.
Добавлена возможность суммирования по выделенным в отчете ячейкам. В том числе и по нескольким пересекающимся областям.
Добавлена возможность выполнить замер времени формирования отчета.
Благодаря возможности сохранения настроек в файлы, пользователи могут обмениваться сохранёнными настройками даже между различными базами, если источники данных в этих базах имеют одинаковую структуру.
Про скорость
В этом Универсальном отчете изменен порядок расчета ширины колонок. В результате расчет выполняется в несколько раз (десятков раз) быстрее. Особенно эффект заметен на больших или сложных отчетах с большим количеством группировок.
За счет чего достигается ускорение?
При расчете ширины колонки отчета:
- пропускаются пустые ячейки не влияющие на ширину колонки;
- обрабатываются ячейки только из первых 100 строк отчета;
- если в первых 100 строках все ячейки в колонке пустые, то ищется первая не пустая ячейка в колонке, по ней выполняется расчет ширины колонки;
- выполнена оптимизация кода по быстродействию;
- цикл расчета ширины колонок записан в 1 строку. Подробнее об этом методе ускорения здесь
Как показала практика, такой подход дает минимальную погрешность расчета и значительное ускорение даже на небольших отчетах.
Про кнопки
У табличных документов 1С:Предприятия 8 есть возможность создания групп. Группы бывают горизонтальные (включают в себя отмеченные строки) и вертикальные (включают в себя отмеченные столбцы). Управлять уровнями группировок строк и колонок, можно используя специальные маркеры или через контекстное меню, что не очень удобно. А при включении заголовков для отображения маркеров теряется драгоценное место на экране. Да и сами типовые элементы управления группировками выглядят не очень.
Кнопки для управления уровнями группировок строк и колонок создаются автоматически. Так как кнопки привязываются к полю табличного документа, то влючении быстрых отборов или других перемещениях табличного документа в форме, кнопки остаются на своих местах.
Про отчеты на основе Универсального отчета
В некоторых конфигурациях большинство отчетов построено на основе типового Универсального отчета включая некоторые внешние отчеты. Разумеется, что все доработки могут быть доступны во всех отчетах построенных на базе Универсального отчета. Для этого необходимо заменить УниверсальныйОтчет в конфигурации на этот Универсальный отчет.
Про шаблон
На основе Шаблона для универсального отчета можно создавать сложные отчеты, которые смогут использовать все возможности Универсального отчета. Шаблон для универсального отчета можно скачать здесь. Шаблон демонстрирует работу отчета по регистру накопления Продажи с дополнительными полями.
Как быстро разработать красивый отчет используя Универсальный отчет в прикладных решениях фирмы 1С можно посмотреть здесь
Идея программной генерации кнопок почерпнута здесь
Пример программной генерации кнопок для отчета на СКД можно посмотреть здесь
Для любителей отчетов на основе Универсального отчета полезная информация здесь
Читайте также: