Как вывести текущего пользователя и его должность в подвал макета отчета на СКД?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Шаг 1: Настройка параметров в СКД

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

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

Для получения текущего пользователя:

Если конфигурация построена на базе Библиотеки стандартных подсистем (БСП), в выражении параметра Исполнитель пропишем:

Пользователи.АвторизованныйПользователь()

Или же можно использовать системные параметры сеанса (при условии, что они инициализированы в конфигурации):

ПараметрыСеанса.ТекущийПользователь

Для получения должности:

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

Пользователи.ТекущийПользователь().ФизическоеЛицо.Должность

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


ОбщийМодульКадры.ПолучитьДолжностьСотрудника(ПараметрыСеанса.ТекущийПользователь, ТекущаяДата())

Шаг 2: Создание пустой группировки для подвала

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

  1. Перейдем на вкладку «Настройки» (или «Настройки - Структура»).
  2. Нажмем правой кнопкой мыши на корневой элемент «Отчет» и выберем «Новая группировка».
  3. Появится диалоговое окно выбора поля группировки. Важный момент: оставьте поле пустым! Не выбирайте никакие поля из списка. Просто нажмите ОК.
  4. В структуре появится строка <Детальные записи>. Переименуем её. Перейдем на вкладку «Дополнительные настройки» (в нижней части экрана) и зададим параметр «Имя». Назовем нашу группировку ПодвалОтчета.
  5. В этой же пустой группировке перейдем на вкладку «Выбранные поля» и удалим поле Авто, чтобы система не пыталась вывести сюда данные из запроса.
  6. На вкладке «Дополнительные настройки» для группировки ПодвалОтчета установим параметр «Макет оформления» в значение «Без оформления», а «Расположение группировок» — в значение «Нет».

Шаг 3: Разработка пользовательского макета

Теперь создадим сам визуальный макет подвала. Перейдем на вкладку «Макеты» в схеме компоновки данных.

  1. Добавим «Макет заголовка группировки». В поле «Имя группировки» впишем имя, которое мы задали на предыдущем шаге: ПодвалОтчета.
  2. В поле «Тип макета» выберем «Подвал».
  3. В табличном документе (справа) выделим область ячеек, которая будет нашим подвалом. Настроим границы, шрифт и выравнивание по своему вкусу.
  4. Выберем ячейку, где будет выводиться текст, и в свойствах ячейки укажем параметр «Заполнение» как Шаблон.
  5. Введем текст в ячейку, оборачивая имена параметров СКД в квадратные скобки. Например: Отчет сформировал: [Исполнитель], должность: [Должность].
  6. В нижней части окна настройки макета (в таблице параметров) убедимся, что параметры макета Исполнитель и Должность связались с параметрами СКД. В колонке «Выражение» должно быть указано имя соответствующего параметра СКД.

Шаг 4: Почему параметры могут не отображаться?

Иногда всё настроено верно, но при формировании отчета параметры пустые или вообще не выводятся. Выясним причину и разберем пути решения:

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

2. Ошибка в имени параметра сеанса.
Если вы используете ПараметрыСеанса.ТекущийПользователь, убедитесь, что в дереве метаданных конфигурации действительно существует параметр сеанса с таким точным именем, и он инициализирован при запуске системы.

3. Использование выбранных полей вместо макета.
Если вы решили не рисовать собственный макет на вкладке «Макеты», а просто хотите вывести параметр в детальных записях подвала, вам необходимо добавить этот параметр на вкладку «Выбранные поля» вашей пустой группировки. В списке доступных полей раскройте ветку «Параметры Данных» и перетащите Исполнитель и Должность в выбранные поля.

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

← На главную