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