Почему поле Дата недоступно для редактирования при верных настройках Доступность и ТолькоПросмотр?

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

В разработке на платформе 1С:Предприятие 8.3, особенно при использовании механизмов расширений, программисты часто сталкиваются с парадоксальной ситуацией. Элемент формы (например, поле Дата) отображается серым и не дает ввести данные, хотя программная проверка в отладчике или через специальные команды показывает, что Доступность = Истина, а ТолькоПросмотр = Ложь. Кажется, что все логические условия соблюдены, но интерактивное изменение заблокировано.

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

Причина 1: Права на стандартные реквизиты в расширении

Это самая распространенная причина при работе с новыми ролями в расширениях. Когда мы создаем роль внутри расширения и даем права на объект (например, документ СТД_Р), платформа не всегда автоматически проставляет права на так называемые стандартные реквизиты. К ним относятся Дата, Номер, Проведен, ПометкаУдаления и другие.

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

Что нужно сделать:

  1. Откройте ваше расширение.
  2. Найдите роль, которую вы создали или изменили.
  3. Перейдите к объекту (документу), у которого заблокировано поле.
  4. Нажмите кнопку «Стандартные реквизиты» (обычно находится над списком обычных реквизитов объекта в окне редактирования роли).
  5. Убедитесь, что для реквизита Дата установлены галочки «Просмотр» и, что критически важно, «Редактирование».

Причина 2: Свойство «Редактирование» в свойствах реквизита формы

Если с правами все в порядке, следует заглянуть в настройки самой формы в расширении. Существует системное свойство реквизита формы, которое часто путают со свойством элемента формы.

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

Разберем по шагам, как это проверить:

  1. Откройте форму документа в расширении.
  2. В правой части окна (дерево реквизитов) найдите основной реквизит Объект и разверните его.
  3. Найдите реквизит Дата.
  4. Нажмите на него правой кнопкой мыши и выберите «Свойства» (или нажмите Alt+Enter).
  5. В палитре свойств перейдите в раздел «Использование».
  6. Найдите пункт «Редактирование». Если там стоит «Ложь» или галочка снята, то поле будет недоступно для изменения пользователем, независимо от настроек программного кода.

Интересно, что программно это свойство может не отражаться напрямую в Элементы.Дата.ТолькоПросмотр, так как оно относится к данным (реквизиту), а не к визуальному элементу.

Причина 3: Групповое управление доступом и свойство формы

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

Если ЭтаФорма.ТолькоПросмотр = Истина, то все вложенные элементы автоматически становятся недоступными для редактирования. Это часто случается в типовых конфигурациях (например, БП КОРП), когда срабатывает механизм Даты запрета редактирования или документ имеет статус «Завершен» / «Передан в ПФР».

Для проверки можно использовать следующий фрагмент кода в отладочной команде:


Сообщить("Элемент ТолькоПросмотр: " + Элементы.Дата.ТолькоПросмотр);
Сообщить("Элемент Доступность: " + Элементы.Дата.Доступность);
Сообщить("Форма ТолькоПросмотр: " + ТолькоПросмотр);
Сообщить("Реквизит доступен для изменения: " + Объект.Ссылка.Пустая()); // Пример проверки состояния объекта

Причина 4: Условное оформление

Проанализируем еще один механизм — Условное оформление формы. В 1С Управляемых формах настройки условного оформления имеют очень высокий приоритет. Если в списке правил условного оформления (на вкладке «Условное оформление» в редакторе формы или программно через УсловноеОформление) задано правило, устанавливающее ТолькоПросмотр для поля Дата, то это перекроет любые установки в свойствах элемента.

Проверьте вкладку «Условное оформление» в конфигураторе. Ищите правила, где в колонке «Оформление» указано «Только просмотр», а в «Оформляемые поля» включена ваша Дата.

Причина 5: Функциональные опции

В системе 1С функциональные опции (ФО) могут управлять видимостью и доступностью реквизитов на уровне платформы. Если реквизит Дата (или объект в целом) привязан к функциональной опции, которая в данный момент выключена, платформа может блокировать редактирование. Хотя для стандартного реквизита Дата это встречается редко, в кастомных решениях это возможный сценарий.

Причина 6: Влияние типовых механизмов (БП КОРП)

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

Посмотрите в модуле формы или в методах расширения &После("ПриСозданииНаСервере"), не вызываются ли процедуры типа УстановитьСостояниеПоляПриЗапретеРедактирования(). Часто они отрабатывают уже после вашего кода, переопределяя значения свойств.

Резюме и рекомендации

Если вы столкнулись с "необъяснимой" блокировкой поля Дата, пройдите по этому списку:

  1. Проверьте права доступа в расширении (именно на Стандартные реквизиты в роли).
  2. Проверьте свойство «Редактирование» у самого реквизита формы (на вкладке «Использование»).
  3. Убедитесь, что вся форма не находится в режиме «Только просмотр».
  4. Проверьте Условное оформление формы.
  5. Изучите влияние функциональных опций.

Как показывает практика, в 90% случаев при использовании расширений проблема кроется именно в первом пункте — правах доступа на стандартные реквизиты, которые нужно прописывать вручную при создании новых ролей в контуре расширения.

← На главную