Разработка и Конфигурация · 10 мин
Как добавить отбор в пользовательские настройки в 1С
Как добавить отбор в пользовательские настройки 1С: через СКД, настройки динамического списка и программно. Пошаговые инструкции, типичные ошибки и FAQ.
Пользовательские настройки в 1С — это параметры отчётов и динамических списков, которые пользователь может менять сам, без изменения конфигурации: отборы, сортировки, группировки, оформление. Частая задача разработчика и администратора — вывести нужный отбор в эти настройки, чтобы пользователь видел его на форме и мог быстро менять значение, например период, организацию или склад.
Способ зависит от того, где работает отбор: в отчёте на СКД (системе компоновки данных), в динамическом списке формы или в произвольной обработке. Ниже разобраны все три сценария — через конструктор настроек, через свойства реквизита формы и программно на встроенном языке.
Где хранятся пользовательские настройки и как они устроены
В управляемых формах настройки делятся на два уровня. Первый — основные настройки компоновщика, которые скрыты под кнопкой «Ещё → Изменить вариант» или «Настроить список». Второй — пользовательские настройки, которые выводятся прямо на форму: выпадающие поля и флажки в шапке отчёта или над списком. Именно во второй уровень обычно нужно добавить отбор.
У каждого элемента пользовательских настроек есть режим отображения: «Быстрый доступ» (поле видно на форме), «Обычный» (виден в окне пользовательских настроек) и «Недоступный» (скрыт от пользователя). Если отбор добавлен, но пользователь его не видит, почти всегда причина в неправильном режиме отображения.
Добавление отбора в пользовательские настройки отчёта на СКД
Откройте отчёт в конфигураторе, перейдите к основной схеме компоновки данных и откройте закладку «Настройки». На подзакладке «Отбор» добавьте нужное поле: перетащите его из списка доступных полей слева или нажмите «Добавить». Укажите вид сравнения («Равно», «В списке», «В периоде» и т.д.) и значение по умолчанию.
Дальше ключевой шаг: в нижней части окна настроек есть таблица «Пользовательские настройки». Найдите в ней добавленный элемент отбора (он появляется после нажатия кнопки «Добавить» в этой таблице с выбором элемента настроек) и установите режим «Быстрый доступ». После этого поле отбора появится в шапке отчёта рядом с кнопкой «Сформировать».
- 1Откройте схему компоновки данных отчёта, закладка «Настройки»
- 2На подзакладке «Отбор» добавьте нужное поле и вид сравнения
- 3В таблице «Пользовательские настройки» нажмите «Добавить» и выберите элемент отбора
- 4Установите режим «Быстрый доступ»
- 5Сохраните схему, обновите конфигурацию и проверьте форму отчёта
Если отбор должен быть обязательным и недоступным для отключения, добавьте его в основные настройки, но не включайте в пользовательские — тогда пользователь не сможет его снять. Комбинация «обязательный системный отбор + открытый пользовательский» — стандартная практика для разграничения данных по организациям.
Отбор по периоду
Для периодов удобнее использовать не два отдельных отбора «Дата ≥» и «Дата ≤», а параметры «НачалоПериода» и «КонецПериода» или стандартный параметр «Период» типа «СтандартныйПериод». Он выводится в пользовательские настройки одним элементом и даёт пользователю выбор предопределённых периодов — месяц, квартал, год.
Добавление отбора в настройки динамического списка
Для списка документов или справочника откройте форму списка в конфигураторе, выделите реквизит списка (динамический список) и откройте его свойства. Если список построен на произвольном запросе, отборы настраиваются через свойство «Настройки» — там доступен тот же компоновщик, что и в СКД: добавьте отбор и включите его в пользовательские настройки аналогично отчёту.
В пользовательском режиме (без конфигуратора) отбор добавляется через «Ещё → Настроить список»: добавьте поле отбора, а затем в окне настроек отметьте его как пользовательский — в типовых конфигурациях для этого есть команда добавления поля в «быстрые» отборы. Учтите: пользовательские изменения списка сохраняются у конкретного пользователя и не распространяются на остальных.
Программное добавление отбора в пользовательские настройки
Когда отбор нужно добавить динамически — например, при создании формы в зависимости от прав пользователя — используется встроенный язык. Работа идёт с коллекцией «ПользовательскиеНастройки» компоновщика настроек: находится элемент отбора в основных настройках, затем создаётся пользовательский элемент, ссылающийся на него по идентификатору.
&НаСервере
Процедура ДобавитьОтборВПользовательскиеНастройки()
Настройки = Отчет.КомпоновщикНастроек.Настройки;
ПользовательскиеНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
Для Каждого Элемент Из Настройки.Отбор.Элементы Цикл
Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация") Тогда
ПользовательскийЭлемент = ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
ПользовательскийЭлемент.ИдентификаторПользовательскойНастройки = Элемент.ИдентификаторПользовательскойНастройки;
Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
КонецЕсли;
КонецЦикла;
КонецПроцедурыНа практике чаще не создают новый элемент, а меняют свойство «РежимОтображения» у существующего элемента отбора — этого достаточно, чтобы платформа вывела его в пользовательские настройки. Значение отбора при этом можно установить через свойство «ПравоеЗначение» или через параметр «Значение» пользовательского элемента.
Для динамического списка механика аналогична: обращение идёт к «Список.КомпоновщикНастроек» (или напрямую к «Список.Отбор» для простых случаев). Простой отбор через «Список.Отбор» не попадает в пользовательские настройки и невидим для пользователя — используйте его только для служебных ограничений.
Как выбрать способ под свою задачу
Как выбрать действие
Выбор между конфигуратором и программным способом определяется стабильностью требования. Постоянные отборы (период, организация, склад) правильнее зашивать в схему компоновки — они будут работать и в вариантах отчёта, и при вызове извне. Условные отборы, зависящие от ситуации, логичнее добавлять кодом при открытии формы.
Проверка результата и типичные ошибки
После настройки откройте отчёт или список в пользовательском режиме и проверьте три вещи: поле отбора видно на форме, изменение значения реально влияет на данные, настройка сохраняется после закрытия и повторного открытия. Если отбор виден, но не фильтрует данные — проверьте, что поле отбора совпадает с полем запроса и что у элемента не снят флаг «Использование».
Как проверить результат
Поле отбора отображается в шапке отчёта или над списком
Поля нет — проверьте режим отображения элемента настройки
При смене значения список или отчёт перестраивается
Данные не меняются — отбор отключён или поле не совпадает с запросом
После переоткрытия формы значение отбора сохраняется
Значение сбрасывается — настройка переопределяется кодом при открытии
Часто задаваемые вопросы
Почему отбор есть в настройках, но не отображается на форме отчёта?
Проверьте режим отображения элемента: для показа на форме он должен быть «Быстрый доступ». Также убедитесь, что элемент добавлен именно в таблицу пользовательских настроек схемы компоновки, а не только в основные настройки отбора.
Как сделать отбор доступным всем пользователям, а не одному?
Настройки, сделанные через «Настроить список», индивидуальны. Чтобы задать отбор для всех, добавьте его в конфигураторе в схему компоновки или настройки динамического списка формы. Альтернатива — скопировать готовую настройку другим пользователям через стандартный механизм копирования настроек в администрировании.
Можно ли добавить отбор по нескольким значениям, например списку складов?
Да. У элемента отбора установите вид сравнения «В списке» — тогда пользователь сможет выбрать несколько значений. Для удобства в быстром доступе такой отбор отображается как поле с подбором списка значений.
Почему программно добавленный отбор дублируется при каждом открытии формы?
Потому что код добавления выполняется без проверки существующих элементов. Перед добавлением переберите коллекцию элементов отбора и проверьте, нет ли уже элемента с тем же полем компоновки, либо добавляйте отбор один раз и сохраняйте признак в дополнительных свойствах формы.
Чем отличается отбор через Список.Отбор от отбора в настройках компоновщика?
Отбор через свойство «Отбор» динамического списка — служебный: он работает, но невидим и недоступен пользователю. Отбор в настройках компоновщика можно вывести в пользовательские настройки, и тогда пользователь сам управляет значением и может его отключить.
Как задать значение отбора по умолчанию, которое пользователь сможет изменить?
Установите значение в основных настройках отбора схемы компоновки и включите элемент в пользовательские настройки с режимом «Быстрый доступ». Пользователь увидит предзаполненное поле и сможет поменять значение; его выбор сохранится в личных настройках.
Что важно запомнить
Отбор попадает в пользовательские настройки через таблицу «Пользовательские настройки» в СКД или настройках динамического списка, а видимость на форме определяется режимом «Быстрый доступ». Программный способ нужен для условных отборов, но требует проверки дублей и аккуратности с сохранёнными настройками пользователей.