К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как отключить контекстное меню в 1С

Как отключить контекстное меню в 1С: настройка в конфигураторе, программное управление командной панелью и отключение стандартных команд формы.

Контекстное меню в 1С появляется при щелчке правой кнопкой мыши по таблице, полю или элементу формы. Оно содержит стандартные команды — копирование, вставку, поиск, вывод списка, — и команды, добавленные конфигурацией. В ряде задач это меню нужно убрать полностью или частично: например, чтобы запретить пользователям копировать данные, менять отбор или запускать печать из произвольного места.

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

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

Как отключить контекстное меню в конфигураторе

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

Для таблиц формы дополнительно проверьте свойство «АвтоКоманднаяПанель»: если оно включено, команды дублируются и в панели над таблицей, и в контекстном меню. Отключив оба свойства, вы получите «чистую» таблицу без служебных кнопок. При этом пользовательские команды, добавленные вами вручную, продолжат работать — они выводятся только если явно помещены в меню.

Порядок отключения в конфигураторе
  1. 1
    Откройте форму объекта в конфигураторе и выделите таблицу или поле
  2. 2
    В палитре свойств снимите флажок «АвтоКонтекстноеМеню»
  3. 3
    При необходимости снимите флажок «АвтоКоманднаяПанель»
  4. 4
    Удалите или скройте вручную добавленные кнопки контекстного меню
  5. 5
    Обновите конфигурацию базы данных и проверьте форму в режиме предприятия

Если меню нужно не отключить, а «очистить», оставив пустую оболочку, — раскройте в дереве элементов формы ветку «Контекстное меню» нужного элемента и удалите или сделайте невидимыми все кнопки. Пустое меню платформа обычно не показывает вовсе, что визуально равнозначно отключению.

Программное отключение через код формы

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

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Элементы.Товары.АвтоКонтекстноеМеню = Ложь;

Элементы.Товары.АвтоКоманднаяПанель = Ложь;

Элементы.Товары.КонтекстноеМеню.Видимость = Ложь;

КонецПроцедуры

Условное отключение удобно оформить через проверку роли: функция «РольДоступна» возвращает Истина, если у текущего пользователя есть указанная роль. Например, меню отключается только для кладовщиков, а у администраторов остаётся полным. Такой подход не требует создания отдельных форм под каждую роль.

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

Отключение стандартных команд и ограничения через роли

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

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

Отличия для динамических списков и обычных форм

Динамический список (список документов, справочников) имеет собственное поведение: его контекстное меню наполняется командами объекта метаданных, а не только формы. Чтобы убрать лишнее, проверьте командный интерфейс объекта в конфигураторе — раздел «Командный интерфейс» в свойствах справочника или документа — и отключите видимость команд вроде «Создать на основании» или «Печать».

В управляемых формах большинство настроек доступно и декларативно, и программно. В обычных формах (устаревший режим приложения) логика похожая, но свойства называются иначе, а часть настроек выполняется только в коде через обработчики событий таблицы. Если база работает в режиме обычного приложения, ориентируйтесь на документацию по обычным формам — синтаксис отличается.

Способы отключения

Флажки в конфигураторе

Быстро и надёжно для постоянного ограничения; не подходит, если условие зависит от пользователя или данных

Код в модуле формы

Гибко, поддерживает условия по ролям и реквизитам; требует доработки конфигурации и тестирования

Ограничение через роли

Даёт реальную защиту данных, а не только скрытие кнопок; настройка сложнее и затрагивает всю конфигурацию

Режим «Только просмотр»

Мгновенно убирает команды редактирования; блокирует и ввод данных, что не всегда приемлемо

Проверка результата и типичные ошибки

После изменений обновите конфигурацию базы данных (F7) и откройте форму в режиме предприятия под тем пользователем, для которого действует ограничение. Щёлкните правой кнопкой по таблице и по отдельным полям: меню либо не появляется, либо содержит только разрешённые команды. Проверьте также горячие клавиши (Ctrl+C, F5) — отключение меню их не блокирует.

Типичные ошибки
01
Меню отключили в конфигураторе, но забыли обновить конфигурацию базы данных — изменения не видны пользователям
02
Сняли флажок только у таблицы, но не у командной панели — команды остались доступны в другом месте
03
Пытались скрыть стандартные команды платформы кодом — они управляются только правами и режимами формы
04
Проверяли результат под администратором — у полных прав ограничения ролей не срабатывают
05
Отключили меню, но оставили копирование по Ctrl+C — данные всё равно выносятся из формы

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

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

Можно ли полностью убрать контекстное меню у поля ввода?

Полностью — нет: у полей ввода платформа всегда показывает минимальный набор команд (копировать, вставить, очистить). Можно лишь запретить вставку и копирование косвенно, переведя поле в режим только для чтения или ограничив права на данные.

Как отключить контекстное меню только для одной роли?

В обработчике «ПриСозданииНаСервере» формы проверьте функцию «РольДоступна("ИмяРоли")» и при отрицательном результате установите «АвтоКонтекстноеМеню = Ложь» для нужных элементов. Для надёжности продублируйте ограничение правами самой роли.

Почему после отключения меню команды всё равно выполняются?

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

Как убрать пункт «Печать» из контекстного меню списка?

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

Работает ли способ в расширении конфигурации?

Да. В расширении можно заимствовать форму и изменить свойства элементов так же, как в основной конфигурации, либо добавить программный код в заимствованные обработчики. Это предпочтительный вариант для типовых конфигураций на поддержке.

Что делать, если меню наполняется сторонней подсистемой?

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

Итог

Что важно запомнить

Контекстное меню отключается флажками «АвтоКонтекстноеМеню» и «АвтоКоманднаяПанель» в конфигураторе или теми же свойствами в коде формы. Стандартные команды платформы скрываются только через роли и режимы формы. Для типовых конфигураций используйте расширения и всегда проверяйте результат под пользователем с целевыми правами.