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