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