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

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

Как убрать кнопку «Добавить» в табличной части 1С

Способы скрыть или отключить кнопку «Добавить» в табличной части 1С: настройка формы, код на встроенном языке, роли и права. Примеры для управляемых и обычных форм.

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

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

Где именно появляется кнопка и почему её не всегда видно в конфигураторе

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

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

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

Способ 1. Отключить изменение состава строк в конфигураторе

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

Порядок действий в конфигураторе:

  1. Откройте нужный объект (документ, справочник, обработку) и перейдите на закладку «Формы».
  2. Откройте основную форму и найдите в дереве элементов таблицу, связанную с табличной частью.
  3. В палитре свойств найдите свойство «ИзменятьСоставСтрок» и снимите флажок.
  4. Обновите конфигурацию базы данных и проверьте форму в режиме предприятия.

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

Способ 2. Скрыть или отключить командную панель таблицы

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

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

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

Способ 3. Программное управление через код формы

Когда кнопку нужно убирать по условию — например, только для определённого статуса документа или конкретного пользователя, — настройки в конфигураторе недостаточно. Управление выполняется кодом в модуле формы.

Пример для управляемой формы в обработчике ПриОткрытии:

&НаКлиенте

Процедура ПриОткрытии(Отказ)

Если Объект.Проведен Тогда

Элементы.Товары.ИзменятьСоставСтрок = Ложь;

Элементы.Товары.ТолькоПросмотр = Истина;

КонецЕсли;

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

Свойство ИзменятьСоставСтрок убирает кнопки добавления и удаления, а ТолькоПросмотр блокирует и редактирование ячеек. Если нужно оставить редактирование количества, но запретить добавление строк — используйте только первое свойство.

Дополнительный вариант — запрет через событие ПередНачаломДобавления таблицы. Установите в обработчике параметр Отказ = Истина, и строка не будет добавлена независимо от того, как пользователь пытается её создать:

&НаКлиенте

Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)

Отказ = Истина;

ПоказатьПредупреждение(, "Строки добавляются только по кнопке ""Заполнить"".");

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

bsl
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
    Отказ = Истина;
КонецПроцедуры

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

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

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

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

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

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

Программно в обычной форме кнопку можно найти по имени действия и скрыть:

Кнопки = ЭлементыФормы.КоманднаяПанельТовары.Кнопки;

Кнопки.Добавить.Доступность = Ложь;

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

Сравнение способов

Свойство ИзменятьСоставСтрок

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

Событие ПередНачаломДобавления

Гибкий запрет только на добавление с возможностью вывести пояснение; требует кода в модуле формы.

Скрытие командной панели

Убирает все кнопки разом; подходит, когда таблица только для просмотра.

Роли и права

Защита на уровне данных, но не позволяет скрыть отдельную кнопку — только запретить изменение объекта целиком.

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

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

Если кнопка скрыта, но строка всё равно добавляется через Insert — значит, вы скрыли только кнопку, а не запретили изменение состава. Установите «ИзменятьСоставСтрок = Ложь» или добавьте обработчик ПередНачаломДобавления с Отказ = Истина.

Типичные ошибки
01
Скрыли только кнопку, но не запретили добавление через Insert и буфер обмена — пользователи продолжают добавлять строки вручную.
02
Изменили общую форму, а документ использует свою собственную — изменения не применились. Проверьте, какая форма назначена основной.
03
Внесли изменение в конфигурацию поставщика без расширения — при обновлении типовой конфигурации доработка потеряется.
04
Установили ТолькоПросмотр вместо ИзменятьСоставСтрок — пользователи не могут даже исправить количество в существующих строках.

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

Контрольные точки

Как проверить результат

Кнопка «Добавить» в командной панели таблицы
Норма

Кнопка отсутствует или недоступна

Тревожный признак

Кнопка видна и активна — изменения не применились

Нажатие Insert в таблице
Норма

Новая строка не создаётся

Тревожный признак

Строка добавляется — нужен запрет через ИзменятьСоставСтрок или событие

Программное заполнение таблицы
Норма

Код заполнения работает, строки появляются

Тревожный признак

Заполнение сломалось — проверьте, не заблокирована ли таблица целиком

FAQ

Как убрать только «Добавить», но оставить «Удалить» и «Скопировать»?

Используйте событие ПередНачаломДобавления таблицы: установите Отказ = Истина. Кнопка останется видимой, но добавление будет блокироваться. Если нужно скрыть и саму кнопку, отключите автозаполнение командной панели и добавьте на неё нужные кнопки вручную.

Почему кнопка «Добавить» не исчезает после изменения свойств формы?

Чаще всего не обновлена конфигурация базы данных (F7) или изменена не та форма — у объекта может быть несколько форм, а основной назначена другая. Также проверьте, не переопределяются ли свойства программно в обработчиках ПриСозданииНаСервере или ПриОткрытии.

Можно ли скрыть кнопку через расширение конфигурации, не меняя типовую?

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

Как запретить добавление строк только для проведённых документов?

В обработчике ПриОткрытии формы проверьте Объект.Проведен и при истине установите Элементы.Товары.ИзменятьСоставСтрок = Ложь. Учтите, что в типовых конфигурациях проведённые документы часто и так защищены механизмом дат запрета изменения данных.

Кнопка скрыта, но строки добавляются вставкой из Excel. Что делать?

Вставка из буфера обмена обходит видимость кнопки. Установите у таблицы ИзменятьСоставСтрок = Ложь — это блокирует все способы изменения состава строк, включая вставку, или добавьте обработчик ПередНачаломДобавления с отказом.

Итог

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

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