Почему в документе 1С:ERP не видна кнопка у одного пользователя и как ее вернуть?

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

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

Выясним причину такого поведения платформы 1С:Предприятие 8.3 и разберем по шагам все способы решения этой проблемы — от простых пользовательских действий до программной очистки системных хранилищ настроек.

Почему настройки пользователя перекрывают настройки конфигуратора

Платформа 1С:Предприятия хранит персональные настройки интерфейса для каждого пользователя отдельно в системном хранилище. Когда пользователь открывает форму, платформа выполняет следующий алгоритм:

  1. Инициализирует форму на сервере в процедурах ПриСозданииНаСервере.
  2. Применяет программные настройки видимости и доступности элементов.
  3. Накладывает сохраненные пользовательские настройки формы поверх программных изменений.

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

Кроме того, в интерфейсе «Такси» на видимость кнопок влияют:

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

Способ 1. Восстановление стандартных настроек из интерфейса формы

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

Разберем по шагам порядок действий:

  1. В сеансе пользователя откроем проблемный документ.
  2. В правом верхнем углу командной панели нажмем кнопку Еще.
  3. В выпадающем меню выберем пункт Изменить форму.
  4. В открывшемся окне настройки формы нажмем кнопку Еще (в командной панели самого окна настройки).
  5. Выберем пункт Установить стандартные настройки и нажмем ОК.

После сброса форма перезагрузится, применит параметры по умолчанию из конфигуратора, и скрытая кнопка снова станет видна на панели.

Способ 2. Централизованный сброс настроек через режим предприятия

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

Разберем по шагам:

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

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

Способ 3. Программное удаление настроек формы из хранилища

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

Посмотрим на пример программного удаления настроек формы:


// Укажем имя пользователя и ключ проблемной формы
ИмяПользователя = "ИвановИИ";
КлючОкна = "Документ.Выработка.Форма.ФормаДокумента/НастройкиОкна";
КлючФормы = "Документ.Выработка.Форма.ФормаДокумента/НастройкиФормы";

// Удаляем пользовательские настройки интерфейса для указанной формы
ХранилищеСистемныхНастроек.Удалить(КлючОкна, "", ИмяПользователя);
ХранилищеСистемныхНастроек.Удалить(КлючФормы, "", ИмяПользователя);

После выполнения данного кода и перезапуска сеанса пользователем форма вернется к типовому виду, заложенному разработчиком.

Способ 4. Очистка кэша тонкого клиента

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

Для устранения проблемы выполним следующие действия:

  1. Завершим все запущенные сеансы «1С:Предприятия» на компьютере пользователя.
  2. Добавим параметр /ClearCache в строку дополнительных параметров запуска базы в окне списка информационных баз либо вручную удалим папки с буквенно-цифровыми именами из директорий:
    %LocalAppData%\1C\1Cv8
    %AppData%\1C\1Cv8
  3. Запустим сеанс заново и проверим видимость кнопки.

Как разработчику предотвратить скрытие кнопок

Если кнопка выполняет критически важную бизнес-логику и пользователи не должны скрывать ее или терять из вида при сужении окна программы, разработчик конфигурации или расширения может управлять поведением элементов на этапе проектирования формы в конфигураторе:

  1. Запрет редактирования формы: для формы документа можно установить свойство РазрешитьИзменятьФорму в значение Ложь. В этом случае пункт «Изменить форму» в меню «Еще» станет недоступен обычным пользователям.
  2. Управление приоритетом отображения: в свойствах самой кнопки выставим свойство Важность при отображении в значение Высокая. Элементы с высокой важностью платформа удерживает на командной панели в первую очередь, убирая в меню «Еще» менее значимые команды.
  3. Свойство кнопки «Только во "Все действия"»: убедимся, что для реквизита кнопки установлено значение Ложь. Если там установлено Истина, кнопка принудительно отображается только внутри выпадающего списка дополнительных действий.
← На главную