Рассмотрим частую ситуацию при разработке в 1С: на форме есть поле ввода (например, период регистрации), которое у пользователя с полными правами доступно для изменения, а у обычного пользователя отображается недоступным (серым) и кнопки регулирования не работают. При этом программная проверка показывает, что свойства элемента формы Доступность = Истина и ТолькоПросмотр = Ложь. Разберем по шагам, в чем кроется проблема и как вернуть пользователям возможность редактирования.
Проанализируем возможные причины такого поведения. Чаще всего подобная блокировка связана с платформенными ограничениями прав доступа на уровне метаданных или скрытыми программными механизмами. Выясним причину, проверив следующие варианты:
ТолькоПросмотр может происходить в модулях присоединенных расширений. Отладка основной конфигурации этот код не покажет.Посмотрим на конкретные шаги, которые помогут решить проблему:
/ЗапуститьБезРасширений под проблемным пользователем, чтобы исключить или подтвердить влияние стороннего кода на форму.Если из соображений безопасности обычным пользователям действительно нельзя давать прямые права на изменение объекта или его реквизита, рассмотрим альтернативный механизм. Сам элемент на форме оставляется недоступным, а рядом добавляется отдельная кнопка. При ее нажатии открывается диалоговое окно ввода значения, после чего выполняется серверный код, который обновляет данные.
Разберем пример серверного кода для записи данных в таком случае:
Процедура ЗаписатьНовоеЗначениеНаСервере(НовоеЗначение)
// Включаем привилегированный режим для обхода ограничений прав
УстановитьПривилегированныйРежим(Истина);
ОбъектДокумент = РеквизитФормыВЗначение("Объект");
ОбъектДокумент.ПериодРегистрации = НовоеЗначение;
ОбъектДокумент.Записать();
ЗначениеВРеквизитФормы(ОбъектДокумент, "Объект");
КонецПроцедуры
Таким образом, мы выяснили, что видимое противоречие между программными свойствами и реальным поведением формы чаще всего обусловлено базовыми механизмами платформы и типовых библиотек, которые имеют приоритет над настройками элементов формы.