1с постраничный вывод отчета на скд

Обновлено: 06.07.2024

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

Скажем сразу, что из-за некоторых ограничений 1С, данная задача не решается средствами конструктора СКД, через задание макета или как-то иначе. Решается она только программно, определением процедуры ПриКомпоновкеРезультата() в модуле отчета СКД. Но обо всем по порядку.

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

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

В качестве примера создадим отчет «Список сотрудников с фотографиями» в конфигурации ЗУП 3.1.

Создаем отчет конструктором 1С СКД с выводом поля «Фотография», в котором будет ссылка на двоичные данные с картинкой. В ЗУП фотографии физических лиц хранятся в отдельном регистре сведений «ФотографииФизическихЛиц».


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


  1. В процедуре ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) отменим стандартный вывод (СтандартнаяОбработка = Ложь) и выведем макет в табличный документ программно. Тут все стандартно:

Здесь нужно обратить внимание на параметр ДанныеРасшифровки, именно из него мы будем извлекать ссылки на картинки.

Далее просто в двух циклах (по строкам и по колонкам) пробегаемся по получившемуся табличному документу и в нужных полях (в нашем случае это поля с наименованием «Фотография»), если их расшифровка соответствует типу ссылки на картинку (в нашем случае это «ДвоичныеДанные»), добавляем картинки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры

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

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

Отбор

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

Структура

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

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

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

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

Код 1C v 8.х
Автор: also

Разместил: E_Migachev  Версии: | 8.x |  Дата: 09.07.2010   Прочитано: 126581

Распечатать

Похожие FAQ

Еще в этой же категории

Как сформировать отчет СКД без проверки прав (в привилегированном режиме)?  21
Что при разработке отчетов требуется чтобы у пользователя с ограниченными правами, отчет формировался полностью без проверки прав! Особенно если настроен RLS Есть несколько способов как это сделать: 1. Установить привилегированный режим в модул Как программно свернуть группировки в СКД (система компоновки данных)?  19
При формировании отчетов на СКД по умолчанию все группировки развернуты, но бывает что необходимо сразу после формирования показать отчет со свернутыми группировками! Данный код в модуле отчета позволяет свернуть группировки до необходимого уровня Как в СКД вывести дату и время формирования отчета?  6
Есть несколько вариантов вывода информации перед основным отчетом,какой лучше?! - зависит от задачи: Допустим нам нужно вывести дату и время формирования отчета и свою шапку отчета, например так: Варианты решения: 1. Использование группиров СКД не выводит поле в отчет  3
Если в запросе используется конструкция вида регистратор.дата или получение еще какого-либо реквизита через регистратор и это поле не отображается в полях отчета СКД, то: Допустим Вы сделали запрос по регистру накоплений и через регистратор обратил Динамический отчет на СКД с разными вариантами  3
На днях делал несколько однотипных отчетов на СКД. Общий принцип: формируются все варианты отчета, указанные в настройках схемы и каждый вариант выводится на отдельной вкладке. Потом возникла мысль попробовать объединить все схемы в один отчет Посмотреть все в категории Схема Компоновки Данных

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