Режим редактирования «Недоступно»: как скрыть отбор отчёта от пользователя

· 9 мин

Содержание

«Недоступно» — одно из трёх значений свойства «Режим редактирования» у элемента пользовательских настроек системы компоновки данных. Ставите его тогда, когда отбор, параметр, поле или порядок в отчёте должны действовать, но пользователь не должен их ни видеть, ни менять.

Свойство задаётся в конфигураторе на вкладке «Настройки» схемы компоновки или прямо в пользовательских настройках отчёта из кода. Главная путаница вокруг «Недоступно» — его смешивают с флажком «Использование», который включает и выключает саму настройку. Это разные вещи, и дальше разберём, почему скрытый отбор продолжает фильтровать данные.

Что задаёт режим редактирования в настройках отчёта

У каждого элемента настроек СКД, который вы помечаете как пользовательскую настройку, есть свойство «Режим редактирования». Оно управляет только тем, где и как настройка показывается пользователю, но не тем, работает она или нет.

Значений три:

РежимГде видит пользовательМожет менять
Быстрый доступВ панели быстрых настроек над таблицей отчётаДа
ОбычныйВ форме настроек (Ещё → Изменить вариант / Настройки)Да
НедоступноНигде не показываетсяНет

При режиме «Недоступно» элемент есть в составе настроек и применяется при формировании отчёта, но в интерфейсе его нет совсем. Пользователь не откроет его, не снимет и не подставит своё значение. Для него такого отбора как будто не существует — а данные тем не менее отфильтрованы.

Есть ещё связка с пользовательскими настройками. Режим редактирования есть только у тех элементов, которые помечены как пользовательская настройка. Если элемент не входит в пользовательские настройки, он живёт целиком в схеме отчёта, пользователю недоступен по определению, и свойства «Режим редактирования» у него попросту нет. «Недоступно» нужно именно тогда, когда настройка формально остаётся пользовательской (ей можно управлять из кода, переключать для разных пользователей, хранить в варианте отчёта), но показывать её в интерфейсе не нужно.

«Быстрый доступ» и «Обычный» отличаются только местом вывода. «Недоступно» отличается принципиально: это настройка «для служебного пользования», зашитая разработчиком.

«Недоступно», «Использование», «Видимость» и «Доступность» — не одно и то же

Четыре близких по звучанию понятия, которые решают разные задачи. Разложим по полочкам.

«Использование» — это флажок слева от каждого элемента отбора, поля или порядка. Он включает (Истина) или выключает (Ложь) саму настройку. Снятый флажок = настройка не применяется и в запрос не попадает.

«Режим редактирования» = «Недоступно» — это про видимость для пользователя, а не про работу. Элемент со снятым флажком «Использование» не фильтрует, даже если он «Быстрый доступ». Элемент с режимом «Недоступно» и включённым «Использованием» фильтрует, хотя его не видно. Это ключевое различие, на котором спотыкаются.

«Видимость» и «Доступность» — это свойства не настроек СКД, а элементов управляемой формы (Видимость скрывает элемент, Доступность блокирует ввод). Если вы выводите настройки отчёта на собственной форме своими полями, тогда да — у этих полей есть Видимость и Доступность. Но в стандартной форме отчёта, где настройки рисует сама компоновка, за видимость отбора отвечает именно «Режим редактирования». Не ищите у элемента отбора СКД свойство «Видимость» — его там нет.

Короткая шпаргалка:

  • 🔧 нужно включить/выключить фильтр → Использование;
  • 🙈 нужно спрятать фильтр, но оставить рабочим → Режим редактирования: Недоступно;
  • 🪟 нужно спрятать поле на своей форме → Видимость элемента формы.

Как задать «Недоступно» в конфигураторе

Режим редактирования выставляется один раз при разработке отчёта.

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

После этого отбор применяется всегда, а в форме отчёта пользователь его не найдёт.

Если вы хотите, чтобы отбор действовал, но при этом сам флажок «Использование» нельзя было снять — именно режим «Недоступно» и решает задачу. При «Быстром доступе» или «Обычном» пользователь увидит флажок и сможет его снять.

Примеры: когда стоит ставить режим «Недоступно»

Режим полезен в типовых ситуациях, где логика отбора — забота разработчика, а не пользователя.

Жёсткий отбор по организации или подразделению. Отчёт должен показывать данные только по организации текущего пользователя. Отбор Организация = &ТекущаяОрганизация помечаете пользовательской настройкой, значение подставляете из кода, а режим ставите «Недоступно». Пользователь не сможет ни снять отбор, ни подставить чужую организацию.

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

Служебный параметр схемы. Флаг, который переключает ветку в запросе или в вычисляемом поле (например, «учитывать возвраты»). Пользователю его трогать не нужно — делаете «Недоступно».

Фиксированная сортировка. Порядок, без которого отчёт теряет смысл (скажем, по дате и номеру документа), помечаете «Недоступно», чтобы пользователь случайно не сбил его своими настройками.

Скрытое условное оформление. Правило оформления, которое подсвечивает строки по служебному признаку, тоже можно сделать пользовательской настройкой. Режим «Недоступно» оставит подсветку работать, но не даст пользователю её отключить или перенастроить цвета.

Во всех этих случаях работает один принцип: значение задаёт разработчик (в схеме или из кода), а режим «Недоступно» убирает настройку из поля зрения пользователя. Поле «Представление» в свойствах пользовательской настройки для режима «Недоступно» роли не играет — раз элемент не выводится, подпись к нему всё равно никто не увидит, поэтому заполнять её не обязательно.

Какой режим редактирования выбрать для настройки?

Как задать «Недоступно» из кода

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

Сначала получаете коллекцию отборов настроек, добавляете или находите нужный элемент и задаёте ему левое значение (поле), вид сравнения и правое значение:

Отбор = КомпоновщикНастроек.Настройки.Отбор;
ЭлементОтбора = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ТекущаяОрганизация;
ЭлементОтбора.Использование = Истина;

Этот отбор уже фильтрует данные. Чтобы он не показывался пользователю, остаётся перевести его в режим «Недоступно».

У элемента пользовательской настройки есть свойство режима редактирования — именно оно принимает значение «Недоступно». Точное имя свойства и перечисления подскажет синтакс-помощник (раздел по элементам настроек компоновки данных): присвойте этому свойству значение «Недоступно», и элемент перестанет показываться на форме, оставаясь рабочим.

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

Чаще из кода достаточно задать Использование и значение, а сам режим «Недоступно» оставить зашитым в схеме — так проще и предсказуемее.

Влияет ли режим «Недоступно» на запрос и скорость отчёта

Сам по себе режим редактирования на текст запроса и на производительность не влияет. Это свойство интерфейса, оно не участвует в компоновке запроса.

На запрос влияет другое — флажок «Использование» и наличие значения. Если отбор включён (Использование = Истина) и значение задано, компоновка добавит условие в запрос независимо от того, виден отбор пользователю или скрыт. Если флажок снят — условия в запросе не будет, хоть при «Быстром доступе», хоть при «Недоступно».

Косвенная польза всё же есть. Скрытый, но включённый отбор (например, жёсткое ограничение по организации) не даёт пользователю случайно снять фильтр и запросить всю базу. В этом смысле «Недоступно» бережёт производительность — но не как оптимизация запроса, а как защита от лишней выборки данных.

Не ждите от режима «Недоступно» ускорения отчёта там, где тормозит сам запрос. Разбирайтесь с индексами, временными таблицами и соединениями — режим редактирования к скорости выборки отношения не имеет.

Частые ошибки при работе с режимом «Недоступно»

Диагностика: выберите симптом

Ещё одна тонкая ошибка — ждать, что «Недоступно» запретит менять значение, которое приходит из сохранённых настроек. Если настройка однажды попала в пользовательские и была сохранена со «своим» значением, смена режима на «Недоступно» в новой версии отчёта не перетрёт уже сохранённое значение автоматически. Для таких случаев либо задавайте значение из кода при каждом построении, либо чистите сохранённые настройки.

Чем заменить «Недоступно» и когда он не нужен

Режим «Недоступно» — не единственный способ зафиксировать настройку. Выбор зависит от того, должна ли настройка вообще существовать как пользовательская.

  • Не включать элемент в пользовательские настройки. Если отбор или параметр никогда не меняется и его не нужно даже хранить в пользовательских настройках — просто не помечайте его пользовательской настройкой. Он останется жёстко в схеме. Это чище, чем «Недоступно», когда гибкость не нужна совсем.
  • Задавать значение из кода. Когда значение вычисляется (организация пользователя, дата начала учёта), подставляйте его программно, а в схеме держите режим «Недоступно». Так настройка и скрыта, и всегда актуальна.
  • Фиксированный отбор прямо в запросе. Если условие постоянное и не зависит от пользователя — пропишите его в тексте запроса схемы. Тогда вопрос режима редактирования вообще не возникает.

Режим «Недоступно» не нужен, если настройку и так никто не трогает и показывать её не планировалось: лишняя пользовательская настройка только утяжеляет хранение вариантов отчёта. Берите «Недоступно» именно там, где настройка должна жить в составе пользовательских (чтобы ей управлять кодом или переключать для разных пользователей), но в руки пользователю попадать не должна.

Перед тем как скрыть настройку режимом «Недоступно»
Выполнено: 0 / 5

Частые вопросы

Чем «Недоступно» отличается от выключенного флажка «Использование»?
«Недоступно» прячет настройку от пользователя, но она продолжает работать. Снятый флажок «Использование» наоборот: настройка видна (если режим не «Недоступно»), но в отчёте не применяется.
Можно ли пользователю как-то добраться до настройки в режиме «Недоступно»?
Через стандартную форму отчёта — нет. Такой элемент не выводится ни в быстрые, ни в расширенные настройки. Изменить его может только разработчик в конфигураторе или код.
Почему после смены режима на «Недоступно» в отчёте осталось старое значение отбора?
У пользователя сохранены собственные настройки отчёта, и они перекрывают схему. Сбросьте сохранённые настройки или подставляйте значение из кода при каждом построении.
Режим «Недоступно» ускоряет отчёт?
Напрямую нет. На скорость и на текст запроса влияют флажок «Использование» и значение, а не режим редактирования. Косвенно скрытый жёсткий отбор защищает от случайной выборки всех данных.
Есть ли «Недоступно» у параметров, а не только у отбора?
Да. Режим редактирования есть у элементов отбора, параметров данных, выбранных полей, сортировки и условного оформления — везде, где элемент можно пометить пользовательской настройкой.