При разработке отчетов на базе Системы компоновки данных (СКД) в 1С программисты часто сталкиваются с эстетической проблемой: системные пути к данным в окне отборов выглядят громоздко и непонятно для конечного пользователя. Например, вместо лаконичного «Дата начала» пользователь видит путь вида Дата.Даты начала.Начало дня. Особенно остро эта проблема проявляется при использовании внешних наборов данных типа «Набор данных - Объект», где структуру полей невозможно скорректировать на уровне SQL-запроса.
Попытка решить эту задачу «в лоб» — путем заполнения свойства «Представление» в настройках пользовательского отбора — приводит к неприятному поведению системы. Поле выбора даты или иного значения просто исчезает, оставляя пользователю лишь флажок включения/выключения отбора. В этой статье мы подробно разберем, почему так происходит, и рассмотрим три надежных способа изменения представления отбора с сохранением полноценного интерактивного выбора значений.
Прежде чем перейти к решениям, проанализируем поведение платформы 1С. Поле «Представление» в свойствах элемента пользовательских настроек отбора предназначено для создания так называемых быстрых или фиксированных отборов. Заполняя его, разработчик сообщает системе: «Этот отбор имеет фиксированное значение и понятное описание, пользователю нужно лишь управлять его активностью». Платформа скрывает вид сравнения (например, «Равно», «В списке») и само поле ввода значения, заменяя весь интерфейс отбора одной строкой с флажком.
Для динамических отборов, где пользователь должен самостоятельно выбирать даты или элементы справочников, этот механизм не подходит. Нам необходимо изменить отображаемый заголовок поля, не затрагивая настройки самого элемента отбора.
Это самый простой и архитектурно правильный способ, который отлично работает в том числе для внешних наборов данных (объектов). Нам не нужно менять настройки компоновщика, достаточно задать понятный заголовок для самого поля СКД.
Рассмотрим этот процесс по шагам:
Дата.Даты начала.Начало дня.Дата начала.При формировании отчета система автоматически возьмет заданный нами заголовок поля из метаданных схемы компоновки. Пользователь увидит красивое название «Дата начала», но при этом у него сохранится стандартный календарь для выбора даты.
Если по каким-то причинам изменить заголовок напрямую в наборе данных невозможно или требуется сохранить оригинальное поле для других целей, мы можем воспользоваться механизмом вычисляемых полей. Проанализируем, как правильно его настроить.
Добавим новое поле, которое будет дублировать значение исходного, но иметь простое имя:
ДатаНачала.
Дата.Даты начала.Начало дня
Дата начала.ДатаНачала.Этот способ позволяет гибко переименовывать любые сложные структуры данных. СКД корректно обработает тип данных вычисляемого поля (в данном случае Дата) и предоставит пользователю стандартный диалог выбора периода.
Когда речь идет об отборах по датам начала и окончания, использование двух раздельных полей отбора часто усложняет жизнь пользователю. Гораздо удобнее предоставить ему единый выбор периода (например, «Текущий месяц», «Прошлый квартал»). Разберем, как реализовать это через параметры компоновки данных.
ПериодОтчета. Установим для него тип данных СтандартныйПериод.НачалоПериода и КонецПериода) в колонке «Выражение» укажем связь с новым параметром:
&ПериодОтчета.ДатаНачала
&ПериодОтчета.ДатаОкончания
НачалоПериода и КонецПериода, чтобы скрыть их от пользователя и не загромождать интерфейс.В результате пользователь получит один эстетичный элемент управления периодом с возможностью быстрого выбора стандартных интервалов времени, а система автоматически передаст нужные границы дат в ваш внешний набор данных.