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