При разработке интерфейсов в 1С:Предприятии 8.3 часто возникает задача отобразить вспомогательную форму (например, панель свойств, контекстную справку, корзину подбора или список связанных данных) строго у правого края экрана, зафиксировав ее рядом с основным рабочим окном. Проанализируем возможности платформы, выясним существующие ограничения и рассмотрим способы реализации подобного поведения.
В обычных формах (1С 8.2 и толстый клиент) разработчик имел прямой доступ к экранным координатам, размерам окон и режимам прикрепления. Однако в управляемом приложении (включая интерфейс «Такси») используется декларативная модель интерфейса.
Это накладывает ключевые особенности:
ОткрытьФорму.Рассмотрим штатный механизм одновременного просмотра двух окон, появившийся в интерфейсе «Такси». Платформа позволяет закрепить одно окно справа, слева, сверху или снизу относительно другого, но делает это исключительно интерактивно со стороны пользователя.
Пользователь может выполнить разделение рабочей области следующими способами:
Программного управления данным механизмом платформа не предоставляет. Параметров метода ОткрытьФорму, позволяющих жестко задать сторону прикрепления, в текущих версиях платформы нет.
Если бизнес-логика требует гарантированного отображения правой панели рядом с основными данными без необходимости ручной настройки пользователем, наиболее надежным и платформенным подходом является объединение интерфейса в рамках одной управляемой формы.
Разберем по шагам, как настроить такую структуру в конфигураторе:
Обычная группа и установим свойство Группировка в значение Горизонтальная.Отображение или управление поведением групп).Видимость программно по нажатию кнопки.Посмотрим на пример программного переключения видимости боковой панели:
&НаКлиенте
Процедура ПереключитьВидимостьПанели(Команда)
Элементы.ГруппаБоковаяПанель.Видимость = Не Элементы.ГруппаБоковаяПанель.Видимость;
КонецПроцедуры
Если требуется дать пользователю возможность свободно расставлять окна по экрану или нескольким мониторам, разберем переключение режима работы клиентского приложения:
В отдельных окнах.Win + Стрелка вправо в Windows).В сценариях, когда строго необходимо позиционировать отдельное окно программно в среде Windows, задачу можно решить через внешние компоненты или вызовы WinAPI-функций (таких как SetWindowPos, MoveWindow), находя окно по заголовку формы.
Важно учитывать: данный метод нарушает кроссплатформенность, требует установки дополнительного ПО/библиотек и принципиально не работает в веб-клиенте и мобильном приложении.