При разработке или кастомизации форм в системе 1С:Предприятие 8 разработчики часто сталкиваются с ситуацией, когда в одной табличной части стандартные кнопки (Добавить, Удалить, Скопировать) отображаются корректно, а в другой — отсутствуют. Разберем детально, от каких настроек зависит появление команды «Добавить» и как пошагово диагностировать причину её исчезновения.
Первым делом проанализируем основное свойство элемента формы, отвечающее за возможность редактирования строк. В платформе 1С для табличного поля (или таблицы формы) существует логический переключатель, который управляет доступностью команд модификации данных.
Разберем, как это работает: если свойство ИзменятьСоставСтрок установлено в значение Ложь, платформа автоматически исключает команды добавления и удаления из командной панели и контекстного меню. Даже если вы попытаетесь вызвать эти действия горячими клавишами (например, Insert), система их проигнорирует.
Для исправления ситуации выполним следующие действия:
Истина).Иногда свойство ИзменятьСоставСтрок включено, но конкретная кнопка «Добавить» все равно не видна. Это происходит из-за тонкой настройки Состава команд. Платформа позволяет разработчику индивидуально управлять каждой стандартной кнопкой.
Рассмотрим подробнее, как проверить этот список:
Добавить.Важно помнить: если в этом окне вы вообще не видите команду Добавить, значит, на более высоком уровне (например, в правах доступа или свойствах объекта метаданных) это действие запрещено.
Выясним причину, связанную с безопасностью. Система 1С работает по принципу «разрешено только то, что явно указано в ролях». Если у текущего пользователя нет определенных прав на объект метаданных, интерфейсные кнопки будут скрыты платформой автоматически.
Проанализируем необходимые права для документа:
Посмотрим на пример настройки командной панели. В 1С кнопки могут создаваться автоматически или вручную. Если у вашей командной панели (которая привязана к таблице) снято свойство Автозаполнение, то стандартные команды не появятся сами по себе.
В этом случае нам необходимо:
Автозаполнение выключено, нам нужно вручную зайти в раздел команд и перетащить нужную стандартную команду в список элементов командной панели.Часто в типовых конфигурациях (например, БП 3.0 или УТ 11) интерфейс управляется динамически с помощью встроенного языка. Если в конфигураторе все настройки кажутся верными, проанализируем код модуля формы. Нам интересны процедуры ПриСозданииНаСервере или ПриОткрытии.
Ищите строки кода, которые могут блокировать таблицу. Например:
// Пример блокировки изменения состава строк
Элементы.Товары.ИзменятьСоставСтрок = Ложь;
// Или прямая установка видимости конкретной кнопки
Элементы.ТоварыКоманднаяПанельДобавить.Видимость = Ложь;
Также стоит проверить, не вызываются ли общие модули, отвечающие за «состояние» документа. В некоторых решениях кнопки скрываются, если документ имеет статус Проведен или Помечен на удаление.
Разберем иерархию ограничений «сверху вниз». Если кнопка отсутствует, проверьте три уровня блокировки:
ЭтаФорма.ТолькоПросмотр = Истина, то все элементы управления переходят в режим чтения.Таблица есть собственное свойство ТолькоПросмотр.Доступность = Ложь, элемент может быть виден, но неактивен, либо скрыт в зависимости от стиля оформления.Проанализируем ситуацию, когда кнопка исчезает из-за настроек учета. В 1С существуют Функциональные опции (ФО). Если возможность добавления строк (или сам функционал документа) привязан к определенной константе, которая в данный момент выключена в настройках программы, платформа скроет соответствующие кнопки.
Также, если вы работаете в базе с расширениями, убедитесь, что форма документа не перекрыта в одном из них. Настройки в расширении имеют приоритет: если в основной конфигурации галочка «Изменять состав строк» стоит, а в расширении — нет, то кнопка «Добавить» отображаться не будет.
Подводя итог, можно сказать, что отсутствие кнопки «Добавить» — это всегда результат работы одного из уровней ограничений: от прав доступа до программного кода. Последовательная проверка свойств ИзменятьСоставСтрок, окна Состав команд и прав доступа в большинстве случаев позволяет решить проблему без написания сложного кода.