При работе с типовыми отчетами на базе Системы компоновки данных (СКД) пользователи и аналитики часто сталкиваются с жесткими ограничениями, заложенными разработчиками конфигурации. Одной из типичных проблем является невозможность гибко настраивать периоды отборов. Например, стандартные параметры НачалоПериода и КонецПериода могут быть скрыты, заблокированы для изменения или настроены на выбор только целого года, в то время как требуется указать произвольную дату (например, конкретный день в середине месяца).
В этой статье мы подробно разберем, как обойти подобные ограничения исключительно в пользовательском режиме предприятия, не прибегая к доработке конфигурации в конфигураторе. Мы рассмотрим механизмы создания пользовательских полей-выражений с типом дата, научимся задавать пустую дату средствами языка выражений СКД, а также разберем более простые альтернативные варианты решения этой задачи через стандартный механизм отборов.
Если вам действительно необходимо создать новое расчетное поле в отчете, значением которого должна быть определенная дата или «пустая дата», мы можем сделать это через расширенные настройки варианта отчета. Этот способ опирается на встроенный язык выражений СКД, который во многом похож на язык запросов 1С, но имеет свои синтаксические особенности.
Разберем по шагам, как добавить такое поле в пользовательском режиме:
ПустаяДата или КонтрольнаяДата). В поле Заголовок укажите то название, которое будет отображаться в списке доступных полей (например, Контрольная дата).Для создания конкретного значения даты в языке выражений СКД используется функция ДАТАВРЕМЯ. Рассмотрим варианты написания выражений для различных сценариев:
Если вам необходимо задать конкретную статическую дату (например, 1 января 2020 года), запишите следующее выражение:
ДАТАВРЕМЯ(2020, 1, 1, 0, 0, 0)
В платформе 1С «пустая дата» технически представлена как начало нашей эры, то есть 1 января 0001 года. Чтобы вернуть пустую дату в пользовательском поле, введите в формулу выражения:
ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
Вы также можете строить более сложные логические условия в выражении детальных записей. Например, если вам нужно вернуть дату начала, только если она превышает определенный порог, воспользуйтесь условным оператором:
Выбор
Когда [Дата начала] > ДАТАВРЕМЯ(2020, 1, 1)
Тогда [Дата начала]
Иначе ДАТАВРЕМЯ(1, 1, 1)
Конец
Важное ограничение метода: Пользовательское поле-выражение является расчетным (вычисляемым). Это значит, что оно формируется на основе формулы и данных информационной базы. Конечный пользователь не сможет напрямую вводить произвольную дату в это поле на форме отчета, как в обычный параметр. Чтобы изменить дату, ему придется каждый раз заходить в настройки варианта отчета и вручную переписывать параметры внутри функции ДАТАВРЕМЯ. Если требуется регулярный интерактивный ввод даты пользователем, лучше использовать Метод 2.
Зачастую создание промежуточного пользовательского поля «Пустая дата» — это избыточный путь, усложняющий логику отчета. Если ваша конечная цель состоит в том, чтобы сравнивать периоды или фильтровать данные по определенной дате, вводимой пользователем «на лету», стандартный механизм отборов СКД справится с этим гораздо быстрее и удобнее.
Давайте настроим гибкий отбор по дате с выводом поля ввода прямо на форму отчета:
Дата начала или Период).Больше или равно (для нижней границы) или Меньше или равно (для верхней границы).Теперь на форме вашего отчета появится удобное поле для ввода даты. Пользователь сможет выбирать абсолютно любую дату через стандартный календарь 1С, а СКД автоматически применит фильтрацию к данным.
Если в вашем отчете параметры Начало периода и Конец периода скрыты разработчиком или настроены так, что позволяют выбирать только год целиком, мы можем решить эту проблему двумя путями в пользовательском режиме:
Вариант А. Проверка доступности параметров в настройках варианта
Часто разработчики отключают видимость параметров на быстрой панели формы, но оставляют их доступными внутри схемы. Чтобы проверить это, зайдите в Еще — Прочее — Изменить вариант... и откройте вкладку Параметры. Если параметры отображаются в этой таблице (даже если у них сняты флажки использования), вы можете вручную установить точные даты начала и окончания периода (например, 01.02.2019 и 31.12.2019) непосредственно здесь.
Вариант Б. Полный отказ от использования жестких параметров
Если формат параметров жестко зафиксирован в конфигураторе (например, формат редактирования настроен строго на выбор года) и вы не можете ввести точную дату, выполните следующие действия:
Дата, Период или Дата документа).В интервале. Данный вид сравнения позволяет пользователю гибко задавать произвольный период с точностью до секунды.Таким образом, мы полностью обходим ограничения типового кода конфигурации и предоставляем пользователю возможность работать с любыми произвольными интервалами дат, используя стандартный функционал платформы 1С:Предприятие.