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