Как настроить видимость обычного интерфейса в 1С и решить проблему с запуском управляемого рабочего стола?

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

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

Как определяется видимость интерфейса на этапе конфигурирования

Если мы откроем палитру свойств объекта метаданных Интерфейс в конфигураторе, то обнаружим интересную деталь: там присутствует свойство Переключаемый, но полностью отсутствует флаг или свойство Видимость. При этом в режиме отладки при анализе коллекции ГлавныйИнтерфейс мы отчетливо видим у элементов интерфейса булево свойство Видимость.

Давайте разберем по шагам, по каким правилам платформа 1С автоматически рассчитывает начальную видимость обычных интерфейсов при запуске сеанса пользователя:

  1. Основной интерфейс пользователя: Тот интерфейс, который назначен конкретному пользователю в качестве основного (в списке пользователей в конфигураторе) или указан по умолчанию в свойствах самой конфигурации, при старте системы всегда принудительно получает значение Видимость = Истина. Это происходит автоматически, даже если у интерфейса в конфигураторе установлен флаг Переключаемый = Истина.
  2. Непереключаемые интерфейсы: Если у интерфейса свойство Переключаемый установлено в значение Ложь, платформа воспринимает его как постоянный (общий) интерфейс. При запуске системы все такие интерфейсы автоматически получают значение Видимость = Истина. Они накладываются на экран поверх основного интерфейса (например, так часто реализуется общее системное меню).
  3. Остальные переключаемые интерфейсы: Все прочие доступные пользователю интерфейсы (к которым у него есть права по ролям), но не назначенные основными, при запуске получают значение Видимость = Ложь. Пользователь сможет переключиться на них позже через меню "Сервис -> Переключить интерфейс", если эта возможность не заблокирована программно.

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

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

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

Рассмотрим практический пример переключения интерфейсов при начале работы системы в зависимости от определенных условий (например, от подразделения пользователя или его роли):


Процедура ПриНачалеРаботыСистемы()
    
    // Проверим роль текущего пользователя и переключим интерфейс программно
    Если РольДоступна("ПолныеПрава") Тогда
        // Сделаем видимым полный интерфейс
        ГлавныйИнтерфейс.ПереключитьИнтерфейс("ПолныйАдминистративный");
    ИначеЕсли РольДоступна("Кассир") Тогда
        // Переключаем на специализированный рабочий стол кассира
        ГлавныйИнтерфейс.ПереключитьИнтерфейс("ИнтерфейсКассира");
    КонецЕсли;
    
КонецПроцедуры

Метод ГлавныйИнтерфейс.ПереключитьИнтерфейс() делает указанный интерфейс видимым, автоматически отключая видимость у других переключаемых интерфейсов. Это стандартный и наиболее корректный способ управления отображением панелей меню в обычном приложении.

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

Проанализируем критическую проблему, с которой часто сталкиваются разработчики на современных релизах платформы (начиная с 8.3.15 и выше). При создании нового пользователя, несмотря на то, что ему назначен обычный интерфейс, система упорно открывает управляемое приложение (пустой рабочий стол в стиле "Такси"). При этом обычный интерфейс может "пробиться" только после нескольких перезапусков системы или очистки кэша.

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

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

Пошаговое решение проблемы с режимом запуска

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

Способ 1. Принудительное указание режима запуска в Конфигураторе

Это самый надежный способ, который исключает влияние настроек по умолчанию самой конфигурации:

  1. Откройте базу данных в режиме Конфигуратор.
  2. Перейдите в главное меню: Администрирование -> Пользователи.
  3. Найдите в списке нужного пользователя и откройте его свойства (двойным кликом).
  4. Перейдите на вкладку Прочие.
  5. Найдите поле Режим запуска. Вместо значения "Авто" выберите из выпадающего списка Толстый клиент (обычное приложение).
  6. Нажмите кнопку ОК для сохранения изменений.

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

Способ 2. Использование параметров командной строки при запуске

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

Для этого в настройках подключения к базе в окне запуска 1С (или в свойствах ярлыка на рабочем столе) в поле Дополнительные параметры запуска пропишите специальный ключ ключа командной строки:

/RunModeOrdinaryApplication

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

← На главную