Часто при доработке типовых отчетов в 1С возникает задача добавить новое поле не только в результат, но и в панель фильтров (отборов). Однако после добавления поля в запрос схемы компоновки данных (СКД) оно не всегда автоматически появляется в настройках. Разберем по шагам, как правильно добавить поле в отбор и что делать, если оно все равно не отображается на форме отчета.
Проанализируем типичную ситуацию: вы изменили запрос в СКД, добавили поле, например, "Склад". Оно появилось в списке "Выбранные поля", но в разделе "Отбор" его нет. А даже если и удалось его туда добавить, на самой форме отча в пользовательском режиме новый фильтр не виден. Выясним причины и найдем решение.
Самая распространенная ошибка — считать, что простого добавления поля в список ВЫБРАТЬ в тексте запроса достаточно. Система компоновки данных должна "знать", как именно вы планируете использовать это поле. Для этого существуют специальные настройки в конструкторе запроса.
Рассмотрим по шагам, как указать, что поле должно быть доступно для отбора:
Важный момент: если у вас внизу конструктора СКД отключено автозаполнение (снят флажок "Автозаполнение"), то после внесения изменений в запрос новые поля могут не появиться в настройках автоматически. В этом случае на вкладке "Настройки" в СКД нажмите кнопку "Настройки по умолчанию" (иконка с волшебной палочкой), чтобы схема обновила список доступных полей, отборов и параметров на основе измененного запроса. Если вы работаете с компоновкой программно, рекомендуем использовать СКДБилдер: упрощаем программное создание СКД.
После выполнения этих действий поле должно появиться в списке доступных полей на вкладке "Настройки" в разделе "Отбор" в самой схеме компоновки данных.
Итак, вы все настроили на уровне СКД, но в пользовательском режиме на форме отчета новый фильтр так и не появился. Это вторая по популярности проблема, и связана она чаще всего с сохраненными пользовательскими настройками.
Система 1С сохраняет варианты отчетов и настройки, которые пользователь установил во время предыдущих сеансов. Если вы, как разработчик, изменили структуру отчета (добавили поле), система по умолчанию продолжит использовать старые, сохраненные настройки, в которых этого поля еще не было.
Самый простой способ "подтянуть" изменения из СКД на форму — это сбросить сохраненные настройки отчета. Сделать это можно прямо в пользовательском режиме.
После сброса настроек форма отчета будет перестроена на основе актуальной схемы компоновки данных, и ваше новое поле для отбора должно появиться.
Иногда помогает простой трюк — переименование объекта метаданных отчета в конфигураторе. Поскольку настройки часто привязаны к имени, система не найдет старых настроек для "нового" отчета и сформирует их с нуля.
Что делать, если вы сбросили настройки, но поле все равно не появилось в быстрых отборах на форме? Это часто случается в сложных типовых отчетах (например, в 1С:Бухгалтерия 3.0), где разработчики создают кастомизированную форму для удобства пользователя.
Проанализируем ситуацию:
В таких отчетах быстрые фильтры на форме (например, поля для выбора периода, организации, контрагента) — это не автоматический вывод всех доступных отборов из СКД. Это отдельные элементы формы, которые разработчик разместил вручную и программно связал с соответствующими отборами компоновщика настроек.
Это означает, что простое добавление поля в СКД не приведет к автоматическому появлению нового элемента на управляемой форме. Выясним, что нужно делать в этом случае.
ПолеВвода. В его свойствах укажите тип данных, соответствующий вашему полю (например, СправочникСсылка.Склады).ПриИзменении для поля "Организация").КомпоновщикНастроек.Настройки.Отбор).Таким образом, мы приходим к выводу, что проблема отсутствия поля на форме, после его корректной настройки в СКД, почти всегда кроется либо в кеше пользовательских настроек, либо в логике самой управляемой формы, которая требует ручной доработки для отображения новых элементов управления.