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

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

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

В этой статье мы подробно разберем, почему возникает эта ошибка, как на это влияет Библиотека стандартных подсистем (БСП), и рассмотрим несколько проверенных способов решения проблемы, включая правильное именование и тонкую настройку интерфейса.

Разберем причину возникновения проблемы

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

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

Способ 1: Использование уникального технического имени

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

  1. Откроем схему компоновки данных и перейдем на закладку Параметры.
  2. Найдем наш параметр и изменим его имя с Период на что-то более специфичное, например, ПериодОтчета или СтандартныйПериодВыбора.
  3. В поле Заголовок пропишем понятное пользователю название, например, Период формирования.
  4. Проверим, чтобы в поле Выражение не было конфликтов с переменными &Период.ДатаНачала и &Период.ДатаОкончания. Если вы переименовали основной параметр, то и ссылки на его части в условиях запроса должны обновиться.

Проанализируем пример использования в запросе после переименования:


ГДЕ
    Продажи.Период МЕЖДУ &ПериодОтчета.ДатаНачала И &ПериодОтчета.ДатаОкончания

Такой подход позволяет избежать наложения логики БСП, которая «цепляется» к стандартным именам и пытается обрабатывать их по своим скрытым алгоритмам.

Способ 2: Настройка видимости и доступности в СКД

Иногда заголовок пропадает из-за того, что разработчик пытается одновременно использовать и составной параметр СтандартныйПериод, и отдельные даты. Рассмотрим, как правильно настроить их взаимодействие, чтобы заголовок отображался корректно:

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

Способ 3: Борьба с кэшированием настроек

Часто бывает так: программист внес изменения, переименовал все параметры, но заголовок все равно не появился. Выясним причину: БСП очень агрессивно кэширует структуру настроек отчетов. Даже если вы изменили отчет, система может загружать старую структуру формы из системного хранилища настроек.

Для «чистого» эксперимента выполним следующие действия:

  1. Создадим копию отчета с совершенно новым именем объекта (например, ТестовыйОтчетПоПериоду) и новым синонимом.
  2. Запустим конфигурацию и проверим отображение. Если в новом объекте заголовок появился, значит, проблема была в кэше старого отчета.
  3. Для исправления в рабочем отчете можно воспользоваться обработкой «Управление настройками пользователей» (в составе БСП) и удалить сохраненные настройки для данного отчета у всех пользователей.

Способ 4: Решение проблемы «кривого» выравнивания

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

Использование группировки параметров:

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

Положение заголовка:

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

Дополнительно: Исправление через Общий модуль (для продвинутых)

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

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


Если ТипЗнч(ЗначениеНастройки) = Тип("СтандартныйПериод") Тогда
    ЭлементФормы.Заголовок = НастройкаСКД.Представление;
    ЭлементФормы.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Лево;
КонецЕсли;

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

Резюме

Подводя итог, можно сказать, что наиболее эффективным и безопасным методом является сочетание переименования параметра в ПериодОтчета и сброса пользовательских настроек. Это позволяет избежать конфликтов с внутренними механизмами БСП и гарантирует корректное отображение заголовка в большинстве версий 1С:Предприятие 8.3. В качестве альтернативного варианта, если в отчете требуется выбор именно помесячного интервала, можно использовать готовое решение для выбора месяца в качестве периода в СКД.

← На главную