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

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

При разработке отчетов на базе Системы компоновки данных (СКД) в 1С программисты часто сталкиваются с эстетической проблемой: системные пути к данным в окне отборов выглядят громоздко и непонятно для конечного пользователя. Например, вместо лаконичного «Дата начала» пользователь видит путь вида Дата.Даты начала.Начало дня. Особенно остро эта проблема проявляется при использовании внешних наборов данных типа «Набор данных - Объект», где структуру полей невозможно скорректировать на уровне SQL-запроса.

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

Выясняем причину: почему пропадает выбор значения?

Прежде чем перейти к решениям, проанализируем поведение платформы 1С. Поле «Представление» в свойствах элемента пользовательских настроек отбора предназначено для создания так называемых быстрых или фиксированных отборов. Заполняя его, разработчик сообщает системе: «Этот отбор имеет фиксированное значение и понятное описание, пользователю нужно лишь управлять его активностью». Платформа скрывает вид сравнения (например, «Равно», «В списке») и само поле ввода значения, заменяя весь интерфейс отбора одной строкой с флажком.

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

Решение 1. Изменение заголовка поля в наборе данных

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

Рассмотрим этот процесс по шагам:

  1. Откроем схему компоновки данных нашего отчета и перейдем на вкладку «Наборы данных».
  2. В дереве полей найдем нужное нам поле со сложным путем, например, Дата.Даты начала.Начало дня.
  3. Обратим внимание на колонку «Заголовок». По умолчанию там может быть установлен флажок «Авто».
  4. Снимем флажок «Авто» и введем понятное для пользователя название, например: Дата начала.
  5. Перейдем на вкладку «Настройки» и добавим наше поле в область отборов. В свойствах элемента пользовательских настроек поле «Представление» оставляем пустым!

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

Решение 2. Использование механизма вычисляемых полей

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

Добавим новое поле, которое будет дублировать значение исходного, но иметь простое имя:

  1. В схеме компоновки данных перейдем на вкладку «Вычисляемые поля».
  2. Добавим новую строку нажатием на кнопку «Плюс».
  3. В колонке «Путь к данным» укажем новое простое имя без точек, например: ДатаНачала.
  4. В колонке «Выражение» пропишем путь к исходному полю из нашего внешнего набора данных: Дата.Даты начала.Начало дня
  5. В колонке «Заголовок» укажем представление, которое должен увидеть пользователь: Дата начала.
  6. Теперь перейдем на вкладку «Настройки» и в настройках отбора выберем именно наше новое вычисляемое поле ДатаНачала.

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

Решение 3. Использование параметров и стандартного периода

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

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

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

← На главную