Как скрыть или отключить команду добавления копированием в управляемой форме 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке интерфейсов на управляемых формах 1С:Предприятия часто возникает необходимость ограничить пользователя в стандартных действиях, например, убрать возможность копирования строк в табличной части или объектов в динамическом списке. Если просто скрыть кнопку или очистить автозаполнение, пользователь все равно может вызвать действие с помощью контекстного меню или горячей клавиши F9. Рассмотрим по шагам все варианты решения этой задачи — от штатной настройки формы до программного контроля бизнес-логики.

Способ 1. Штатное отключение через свойство «Состав команд» таблицы

Проанализируем наиболее правильный и комплексный способ настройки интерфейса в конфигураторе. Когда мы управляем составом стандартных команд напрямую у элемента формы Таблица, платформа автоматически отключает действие сразу во всех интерфейсных точках вызова.

Разберем по шагам, как выполнить данную настройку:

  1. Открываем нужную управляемую форму в конфигураторе.
  2. В дереве элементов формы выбираем элемент Таблица (это может быть табличная часть документа или динамический список справочника).
  3. В окне палитры свойств находим группу Командная панель.
  4. Нажимаем на кнопку открытия свойства Состав команд (значок с многоточием или гиперссылка Открыть).
  5. В открывшемся окне находим стандартную команду Скопировать (или Добавить копированием) и снимаем с нее флаг.
  6. Сохраняем форму и конфигурацию.

При таком подходе платформа 1С комплексно решает задачу:

  1. Кнопка копирования полностью пропадает с командной панели таблицы.
  2. Пункт исключается из контекстного меню, открываемого по правому клику мыши.
  3. Стандартное клавиатурное сокращение F9 перестает обрабатываться платформой для данной таблицы.

Способ 2. Отключение автозаполнения и ручное формирование командной панели

Рассмотрим ситуацию, когда требуется кардинально переработать состав кнопок и расположить их в строгом индивидуальном порядке. Для этого у командной панели отключают свойство Автозаполнение.

Разберем последовательность действий:

  1. Выделяем элемент КоманднаяПанель нужной таблицы или формы в окне элементов.
  2. В палитре свойств снимаем флаг Автозаполнение. После этого все стандартные кнопки исчезнут из панели.
  3. В структуру командной панели вручную перетаскиваем только те стандартные или пользовательские команды, которые должны быть доступны пользователю (например, Добавить, Удалить).

Важный нюанс: если вы отключаете автозаполнение только у командной панели, обязательно проверьте свойства самого элемента Таблица. У таблицы есть собственное контекстное меню со своим свойством автозаполнения. Если не настроить состав команд или контекстное меню, команда копирования останется доступной по правому клику мыши.

Способ 3. Программная блокировка в событии «ПередНачаломДобавления»

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

Разберем программный код клиентского обработчика события ПередНачаломДобавления для таблицы:


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

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

Проанализируем работу данного обработчика: параметр Копирование принимает значение Истина, если пользователь инициировал создание строки нажатием кнопки копирования, выбором пункта меню или горячей клавишей F9. Установка значения Отказ = Истина прерывает стандартное действие платформы.

Способ 4. Ограничение на уровне прав доступа (в ролях)

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

Разберем этот вариант настройки:

  1. В дереве метаданных переходим в ветку Общие — Роли и открываем настраиваемую роль.
  2. Находим необходимый объект метаданных (например, конкретный документ или справочник).
  3. В списке прав снимаем флаг с права Интерактивное добавление копированием.

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

Способ 5. Программное управление свойствами кнопок и состава строк

Рассмотрим дополнительные методы управления интерфейсом из встроенного языка 1С:

  1. Если команда вынесена на форму как отдельная кнопка, управлять ее доступностью и видимостью можно в процедуре ПриСозданииНаСервере:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Скрытие конкретной кнопки на форме
    Элементы.ТоварыСкопировать.Видимость = Ложь;
    
КонецПроцедуры
  1. Если необходимо полностью запретить любое интерактивное изменение строк таблицы (включая добавление, копирование и удаление), можно использовать свойство таблицы ИзменятьСоставСтрок:

&НаСервере
Процедура УстановитьРежимПросмотраТаблицы()
    
    // Запрет добавления, копирования и удаления строк
    Элементы.Товары.ИзменятьСоставСтрок = Ложь;
    
КонецПроцедуры

Таким образом, для постоянного запрета копирования в рамках конкретной формы рекомендуется использовать редактирование свойства Состав команд, для глобального запрета — роли и права доступа, а для условного запрета по бизнес-логике — событие ПередНачаломДобавления.

← На главную