Как открыть редактирование поля на форме документа 1С, если свойства «Только просмотр» и «Доступность» настроены верно

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

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

Проанализируем ситуацию на примере документа Отпуск и реквизита СреднийЗаработок. Это поле часто становится объектом споров, так как система защищает расчетные данные от случайной корректировки.

Способ 1. Проверка программного изменения свойств в модулях

Самая распространенная причина — программное переопределение свойств формы в момент ее открытия или при изменении других реквизитов. Рассмотрим, как это работает в типовых конфигурациях. Разработчики часто используют общие модули для централизованного управления элементами. Выясним причину, изучив обработчик ПриСозданииНаСервере или связанные с ним процедуры.

В случае с конфигурацией ЗУП 3.1 управление доступностью может находиться в специализированных модулях. Например, обратим внимание на программный код:


ЗарплатаКадрыРасширенный.УстановитьОтображениеГруппыФормы(Элементы, "СреднийЗаработокСтраницы", "ТолькоПросмотр", Истина);

Проанализируем этот пример. Здесь метод УстановитьОтображениеГруппыФормы жестко устанавливает свойство для целой группы элементов. Если ваше поле находится внутри этой группы (или любой другой родительской группы, для которой установлен ТолькоПросмотр), оно унаследует это ограничение. Даже если у самого поля в конфигураторе стоит разрешение на редактирование, родительский контейнер его блокирует.

Рекомендация: выполните глобальный поиск (Ctrl+Shift+F) по конфигурации, используя имя вашего элемента формы или имя реквизита. Ищите ключевые слова ТолькоПросмотр, Доступность или Элементы.ИмяПоля.

Способ 2. Использование флага «Редактировать вручную»

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

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


Если Не Объект.ПересчитаноВручную Тогда
    Элементы.СреднийЗаработок.ТолькоПросмотр = Истина;
КонецЕсли;

Способ 3. Проверка условного оформления формы

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

Рассмотрим, как проверить это программно. Ищите в коде обращения к коллекции УсловноеОформление. Например:


ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СреднийЗаработок");

Если такое правило существует, поле будет заблокировано при выполнении определенных условий (например, если документ уже проведен или не заполнен сотрудник).

Способ 4. Влияние прав доступа и ролей

Выясним, не связана ли проблема с правами пользователя. В 1С существует разделение прав на уровне метаданных и на уровне программной логики. В ЗУП 3.1 роли Кадровик и Расчетчик имеют разные полномочия.

  1. Проверьте роли: Если у пользователя нет прав на изменение данных о зарплате, система может программно блокировать поля, связанные с суммами, даже если на уровне реквизита доступ есть.
  2. Функциональные опции: Проверьте, не включена ли функциональная опция, которая ограничивает редактирование зарплатных показателей в кадровых документах.

Способ 5. Состояние документа и даты запрета

Проанализируем статус самого документа. Поле может становиться недоступным автоматически в следующих случаях:

Итог и алгоритм действий

Если вы столкнулись с блокировкой поля, рекомендуем придерживаться следующего плана действий:

  1. Убедитесь, что поле не находится внутри Группы, у которой программно установлено свойство ТолькоПросмотр = Истина.
  2. Проверьте наличие кнопок «разблокировки» (карандаш) на самой форме.
  3. Выполните поиск по коду модуля формы и связанных общих модулей (например, ЗарплатаКадрыРасширенный) на предмет динамического изменения свойств Доступность и ТолькоПросмотр.
  4. Проверьте вкладку «Условное оформление» в редакторе формы в конфигураторе.
  5. Зайдите под пользователем с полными правами (Администратор), чтобы исключить влияние ограничений ролей.

Используя этот комплексный подход, мы сможем найти точную причину блокировки и корректно настроить доступность необходимых реквизитов.

← На главную