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