Как программно расположить или закрепить управляемую форму у правого края экрана в 1С 8.3?

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

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

Ограничения декларативной модели управляемого интерфейса

В обычных формах (1С 8.2 и толстый клиент) разработчик имел прямой доступ к экранным координатам, размерам окон и режимам прикрепления. Однако в управляемом приложении (включая интерфейс «Такси») используется декларативная модель интерфейса.

Это накладывает ключевые особенности:

  1. Платформа самостоятельно рассчитывает геометрию, положение и правила отрисовки элементов на основе структуры формы, клиентских настроек и разрешения экрана.
  2. Во встроенном языке 1С отсутствуют свойства или методы для программной установки координат ($X, Y$), принудительного прикрепления (docking) одной формы к границе другой или управления вкладками при вызове метода ОткрытьФорму.

Интерактивное закрепление и одновременное отображение окон

Рассмотрим штатный механизм одновременного просмотра двух окон, появившийся в интерфейсе «Такси». Платформа позволяет закрепить одно окно справа, слева, сверху или снизу относительно другого, но делает это исключительно интерактивно со стороны пользователя.

Пользователь может выполнить разделение рабочей области следующими способами:

  1. Через главное системное меню окна выбрать команду «Окно» → «Закрепить справа» (или «Показать вместе с...»).
  2. Перетащить вкладку открытой формы с панели открытых окон к правому краю текущего окна до появления визуального маркера разделения экрана.

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

Альтернативное решение: реализация боковой панели внутри единой формы

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

Разберем по шагам, как настроить такую структуру в конфигураторе:

  1. Создадим общую родительскую группу с видом Обычная группа и установим свойство Группировка в значение Горизонтальная.
  2. Внутри создадим две подгруппы: левую (для основных реквизитов документа или справочника) и правую (для вспомогательной панели свойств/подбора).
  3. Для правой панели установим фиксированную или минимальную ширину, а также включим использование вертикального или горизонтального разделителя (свойство Отображение или управление поведением групп).
  4. При необходимости скрыть или показать панель управляем ее свойством Видимость программно по нажатию кнопки.

Посмотрим на пример программного переключения видимости боковой панели:


&НаКлиенте
Процедура ПереключитьВидимостьПанели(Команда)
    Элементы.ГруппаБоковаяПанель.Видимость = Не Элементы.ГруппаБоковаяПанель.Видимость;
КонецПроцедуры

Альтернативное решение: открытие интерфейса в отдельных окнах

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

  1. В свойствах корневого узла конфигурации или через параметры пользователя переключаем режим открытия интерфейса в значение В отдельных окнах.
  2. При таком режиме каждая управляемая форма открывается в виде независимого окна операционной системы. Пользователь может распределять их с помощью встроенных возможностей ОС (например, сочетанием клавиш Win + Стрелка вправо в Windows).

Использование внешних компонент (WinAPI) для тонкого и толстого клиента

В сценариях, когда строго необходимо позиционировать отдельное окно программно в среде Windows, задачу можно решить через внешние компоненты или вызовы WinAPI-функций (таких как SetWindowPos, MoveWindow), находя окно по заголовку формы.

Важно учитывать: данный метод нарушает кроссплатформенность, требует установки дополнительного ПО/библиотек и принципиально не работает в веб-клиенте и мобильном приложении.

← На главную