Почему в управляемых формах 1С пропадает кнопка «Создать» и как это исправить?

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

В практике разработки на платформе 1С:Предприятие 8.3 программисты часто сталкиваются с загадочным поведением интерфейса: новый объект (справочник или документ) создан, права настроены, но кнопка «Создать» в форме списка отсутствует, а горячая клавиша Ins не срабатывает. Ситуация осложняется, когда принудительное создание формы «возвращает» кнопку, но сам объект открывается только для просмотра. Разберем по шагам все возможные причины и методы решения этой задачи.

Анализ свойств метаданных и стандартных команд

Первым делом проанализируем базовые настройки объекта в конфигураторе. Для того чтобы платформа автоматически генерировала команды управления, необходимо проверить свойство Использовать стандартные команды на вкладке «Основные» окна редактирования объекта метаданных. Если этот флаг снят, кнопка не появится ни в списках, ни в панелях навигации.

Рассмотрим также влияние Функциональных опций. Это один из самых коварных механизмов: если объект или его стандартная команда «Создать» включены в состав функциональной опции, которая в данный момент выключена в константах или параметрах сеанса, интерфейс будет скрыт. Проверим вкладку «Состав» у всех функциональных опций в системе, чтобы исключить случайную привязку нового справочника к неактивному функционалу.

Проверка прав доступа и механизмов RLS

Часто разработчики полагают, что наличия «Полных прав» достаточно для любых операций. Однако в современных конфигурациях права могут накладываться слоями. Выясним, нет ли противоречий в ролях:

  1. Проверим право Интерактивное добавление. Даже если право Вставка (программная запись) разрешено, отсутствие права на интерактивные действия скроет кнопку в интерфейсе.
  2. Проанализируем RLS (Record Level Security). Если в роли для права Добавление прописано условие, которое возвращает ЛОЖЬ (например, из-за незаполненных параметров сеанса), кнопка «Создать» может исчезнуть автоматически, так как система понимает, что пользователь не сможет записать объект.
  3. Обратим внимание на новые роли. Если права были добавлены в новую роль, убедимся, что она включена в профиль групп доступа пользователя и информационная база обновила вспомогательные данные (параметры сеанса, связанные с правами).

Настройка командного интерфейса подсистем

Если справочник добавлен в подсистему, но кнопки нет в панели действий, необходимо проверить Командный интерфейс подсистемы. Для этого нажмем правой кнопкой мыши на подсистему в дереве метаданных и выберем пункт «Открыть командный интерфейс».

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

Особенности динамического списка на управляемой форме

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

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

Проанализируем текст запроса динамического списка. Если включен режим Произвольный запрос, использование таких конструкций как ОБЪЕДИНИТЬ, СГРУППИРОВАТЬ ПО или СОЕДИНЕНИЕ с определенными типами таблиц может сделать список недоступным для редактирования. В этом случае свойство Основная таблица также может «слететь» или стать недоступным для выбора.

Режим «Только просмотр» на уровне формы и элементов

Ситуация, когда кнопка появляется, но форма открывается в режиме просмотра, сигнализирует о программной блокировке. Рассмотрим, где это может происходить:

  1. Свойство элемента формы: Убедимся, что у элемента формы типа «Таблица», который отображает список, не установлен флаг ТолькоПросмотр.
  2. Свойство самой формы: Проверим аналогичный флаг у всей формы.
  3. Обработчик ПриСозданииНаСервере: Посмотрим, нет ли в модуле формы или в расширениях кода, подобного этому:

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

Также проанализируем наличие Подписок на события, которые могут срабатывать при инициализации нового объекта и устанавливать отказ или режим чтения в зависимости от бизнес-логики (например, проверка заполнения констант или настроек организации). Для оперативной проверки и корректировки параметров элементов интерфейса можно использовать обработку для редактирования свойств форм в режиме предприятия.

Влияние платформы и необходимость реструктуризации

Иногда проблема носит чисто технический характер и связана с кэшем метаданных или особенностями версии платформы. Выясним ситуацию с версиями 8.3.17 и 8.3.18. Известны случаи, когда после реструктуризации или перехода между этими версиями (особенно при отключенном режиме совместимости) команды интерфейса пропадали.

Для решения попробуем выполнить Тестирование и исправление (ТиИ) информационной базы. Нас интересует пункт Реструктуризация таблиц информационной базы. Это позволяет пересобрать внутренние индексы и таблицы описания прав доступа, что часто помогает, если «обычные» методы настройки не дают результата.

Итоги и рекомендации

Подведем итог нашего исследования. Если кнопка «Создать» отсутствует, действуйте по алгоритму:

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

Соблюдение этого порядка действий позволит быстро локализовать проблему и вернуть пользователям возможность полноценной работы с объектами системы.

← На главную