Почему неактивна кнопка Создать в справочнике Физические лица и как это исправить

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

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

Анализ функциональных опций

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

Выясним причину через конфигуратор. Нам необходимо найти справочник ФизическиеЛица в дереве метаданных и проверить свойство Функциональные опции. Однако, как показывает практика, глобальный поиск по ссылкам может не дать мгновенного результата, если опция привязана не к самому справочнику, а к команде его открытия или к параметру сеанса.

Рассмотрим порядок действий для глубокой проверки:

  1. Откроем конфигуратор и найдем справочник ФизическиеЛица.
  2. Перейдем на закладку Данные и проверим, не установлены ли там ограничения.
  3. Используем глобальный поиск (Ctrl+Shift+F) по строке "ФизическиеЛица" с фильтром по метаданным, чтобы найти все упоминания в объектах типа ФункциональнаяОпция.
  4. Проверим общие настройки программы в режиме «Предприятие». Иногда достаточно включить одну «галочку» в разделе настроек персонала или общих настроек системы, чтобы интерфейс обновился.

Проверка свойств формы и командной панели

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

Свойство «Только просмотр» (ReadOnly): Проверим, не установлен ли этот флаг у всей формы. Если ТолькоПросмотр = Истина, кнопка Создать будет скрыта платформой автоматически.

Состав команд: Посмотрим на элемент формы «Командная панель». В свойствах таблицы (или самой панели) есть пункт «Состав команд». Разберем, включена ли там стандартная команда Создать. Бывает, что разработчики намеренно исключают эту команду из стандартного набора и заменяют её на кастомную, которая в свою очередь может быть скрыта по условию.

Программные запреты в коде формы

Очень часто доступность элементов управления меняется динамически при открытии формы. Нам нужно изучить программный код в модуле формы. Основное внимание уделим процедуре ПриСозданииНаСервере.

Рассмотрим пример кода, который может блокировать создание:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Проверка прав или условий системы
    Если Не ПолучитьФункциональнуюОпцию("ИспользоватьФизическихЛиц") Тогда
        Элементы.Список.ТолькоПросмотр = Истина;
        Элементы.ФормаСоздать.Видимость = Ложь;
    КонецЕсли;

    // Проверка через параметры сеанса
    Если ПараметрыСеанса.РаботаВАвтономномРежиме Тогда
        Элементы.Список.ТолькоПросмотр = Истина;
    КонецЕсли;

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

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

Влияние расширений конфигурации

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

Посмотрим, как это проверить:

  1. Откроем список расширений в конфигураторе.
  2. Проверим, нет ли расширений, которые заимствуют справочник ФизическиеЛица или его формы.
  3. Изучим методы &Перед, &Вместо или &После для процедур открытия формы. Скорее всего, блокировка находится именно там.

Синхронизация данных и распределенные базы (РИБ)

Выясним, не является ли ваша информационная база «подчиненным узлом». В распределенных информационных базах (РИБ) часто накладывается запрет на редактирование справочников, которые должны приходить только из «Центра». В этом случае справочник ФизическиеЛица может быть заблокирован на уровне платформы.

Также проанализируем настройки синхронизации данных. Если включен обмен с другими программами (например, ЗУП или ERP), и эта система назначена «мастером» (владельцем данных), то в текущей базе создание новых элементов может быть заблокировано программно, чтобы исключить дублирование при обмене.

Использование механизмов БСП и ограничения доступа (RLS)

В конфигурациях на базе БСП существует механизм «Запрет редактирования реквизитов объектов». Хотя чаще он блокирует поля уже записанных объектов, в некоторых случаях он может влиять и на возможность создания. Также стоит проверить настройки прав доступа на уровне записей (RLS). Даже если у пользователя роль «Полные права», в некоторых нетиповых конфигурациях могут быть прописаны жесткие ограничения в самих ролях на право Интерактивное добавление.

Проверим права в конфигураторе:

  1. Найдем роль, назначенную пользователю.
  2. Перейдем к справочнику ФизическиеЛица.
  3. Убедимся, что галочки Интерактивное добавление и Ввод по строке установлены.

Проверка через программное создание объекта

Чтобы окончательно понять, где кроется проблема — в интерфейсе или в правах доступа — проведем эксперимент. Попробуем создать элемент справочника программно, используя внешнюю обработку или консоль кода. Это позволит нам исключить влияние свойств формы.

Выполним следующий фрагмент кода:


НовыйФизлицо = Справочники.ФизическиеЛица.СоздатьЭлемент();
НовыйФизлицо.Наименование = "Тестовое Лицо";
Попытка
    НовыйФизлицо.Записать();
    Сообщить("Объект успешно создан программно!");
Исключение
    Сообщить("Ошибка при записи: " + ОписаниеОшибки());
КонецПопытки;

Результаты теста:

1. Если объект создался успешно — проблема исключительно в интерфейсе (свойства формы, команды, функциональные опции, код ПриСозданииНаСервере).

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

3. Если возникла ошибка, связанная с обменом данными — значит, база находится в режиме «только чтение» из-за настроек синхронизации.

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

← На главную