При переходе на управляемый интерфейс многие разработчики и пользователи сталкиваются с тем, что различные типы окон ведут себя неодинаково. Например, формы списков или журналов документов аккуратно открываются в виде удобных вкладок (закладок) в рабочей области, тогда как карточки элементов справочников или документы упорно открываются в отдельных всплывающих окнах. Это нарушает единообразие интерфейса и часто мешает комфортной работе.
В этой статье мы подробно проанализируем, почему платформа «1С:Предприятие 8.3» по-разному открывает окна по умолчанию, и разберем все возможные способы решения этой задачи: от ручной настройки свойств метаданных до глобального управления поведением интерфейса через код и настройки конфигурации.
Для начала разберем, почему возникает такое разделение. В управляемом приложении за поведение окон при открытии отвечает свойство формы «Режим открытия окна» (в современных релизах платформы оно также может называться «Режим блокировки при открытии окна»). Оно определяет, как именно форма будет позиционироваться в интерфейсе пользователя.
Данное свойство может принимать три основных значения:
Когда у объекта метаданных (справочника, документа, бизнес-процесса) отсутствуют явно созданные разработчиком формы, платформа «1С:Предприятие» генерирует их автоматически прямо в режиме исполнения («на лету»). При автогенерации действуют следующие жесткие правила:
Независимый. Поэтому они без проблем открываются в закладках.Блокировать окно владельца. Разработчики платформы заложили эту логику для того, чтобы пользователь мог быстро ввести данные в карточку («в один заход»), закрыть её и продолжить работу со списком, не перегружая верхнюю панель множеством закладок.К сожалению, в свойствах самой конфигурации нет единой «галочки», которая могла бы в один клик принудительно переопределить это платформенное поведение для абсолютно всех автогенерируемых форм в системе. Но мы можем решить эту задачу несколькими эффективными способами.
Если в вашей конфигурации для объектов уже созданы индивидуальные формы (или вы планируете их создать), достаточно переопределить настройки свойства отображения окна непосредственно в конфигураторе.
Рассмотрим этот процесс пошагово:
Номенклатура или документ РеализацияТоваровУслуг).Блокировать окно владельца на Независимый.После сохранения конфигурации форма данного объекта всегда будет открываться строго в закладках (вкладках) основного окна программы.
Однако, как справедливо заметили участники обсуждения на форуме, если в системе уже созданы десятки или сотни справочников и документов, изменять этот флаг вручную для каждой формы крайне трудоемко. Рассмотрим альтернативные методы.
При использовании современного интерфейса «Такси» за отображение открытых окон в виде закладок отвечает специальный элемент интерфейса под названием «Панель открытых». Если формы объектов открываются в режиме Независимый, они группируются именно на ней.
Иногда пользователям кажется, что формы перестали открываться в закладках, хотя настройки форм не менялись. Причиной тому может быть случайное скрытие панели. Мы можем вернуть или перенастроить отображение вкладок силами самого пользователя без изменения кода:
Теперь все независимые формы будут наглядно представлены в виде вкладок на этой панели.
Если вы хотите добиться того, чтобы формы гарантированно открывались в закладках, но при этом не желаете вручную менять свойства сотен объектов метаданных, мы можем управлять отображением окон непосредственно из встроенного языка при вызове команд.
Проанализируем работу метода ОткрытьФорму(). Данный метод предоставляет разработчику колоссальную гибкость управления поведением интерфейса благодаря своим параметрам.
Посмотрим на пример стандартного открытия формы:
ОткрытьФорму("Справочник.Контрагенты.Форма.ФормаЭлемента", Новый Структура("Ключ", СсылкаНаОбъект));
Чтобы принудительно заставить форму открыться в виде закладки (в основном окне), проигнорировав настройки, заданные в конфигураторе, мы можем передать специальный системный параметр отображения окна. В платформе 1С для этого используется свойство РежимОтображенияОкна.
Разберем пример программного вызова с принудительной установкой режима открытия в основном окне:
ПараметрыОкон = Новый Структура;
ПараметрыОкон.Вставить("РежимОтображенияОкна", РежимОтображенияОкнаФормы.ВОсновномОкне);
ОткрытьФорму(
"Справочник.Контрагенты.Форма.ФормаЭлемента",
Новый Структура("Ключ", СсылкаНаОбъект),
ЭтотОбъект,
Истина,
,
,
,
РежимОткрытияОкнаФормы.Независимый
);
В данном коде мы передали значение перечисления РежимОткрытияОкнаФормы.Независимый в качестве 8-го параметра функции ОткрытьФорму(), что заставит систему проигнорировать стандартную установку «Блокировать окно владельца» для формы элемента справочника.
Многие разработчики обращают внимание на то, что в крупных типовых конфигурациях (таких как «Бухгалтерия предприятия», «ERP Управление предприятием» или «Управление нашей фирмой») даже вновь создаваемые «чистые» справочники без форм всё равно открываются в виде красивых закладок в основном окне.
Это реализовано благодаря интеграции встроенных механизмов Библиотеки стандартных подсистем (БСП). БСП берет на себя управление интерфейсом:
Если вы разрабатываете собственную конфигурацию «с нуля», рекомендуется внедрить базовые подсистемы БСП (в частности, подсистему базовой функциональности и управления интерфейсом), чтобы избежать необходимости прописывать это поведение вручную для каждого нового объекта метаданных.
Проанализируем исторический аспект развития интерфейса платформы, так как это напрямую влияет на совместимость. В ветке форума упоминаются режимы совместимости «Версия 8.2» и «Версия 8.3.9».
В старых версиях платформы (до релиза 8.3.10) пользователи имели возможность самостоятельно выбирать режим работы окон прямо в пользовательском режиме предприятия через меню Сервис -> Параметры -> Внешний вид. Там присутствовали варианты «Формы в закладках» и «Формы в отдельных окнах» (так называемый многодокументный интерфейс MDI и однодокументный SDI).
Начиная с версии платформы 8.3.10.2168, фирма «1С» полностью исключила возможность открытия форм в отдельных окнах на уровне пользовательских настроек интерфейса. Это обусловлено тем, что платформа активно развивается в сторону веб-клиентов и работы через браузеры, где обилие всплывающих окон блокируется системами безопасности веб-обозревателей.
Если вашим пользователям по какой-то причине всё же жизненно необходимо открывать формы документов или отчетов на отдельных мониторах во всплывающих окнах (например, для детального сравнения двух документов), запустить базу в старом многооконном режиме можно только с использованием специального ключа запуска. Для этого в дополнительных параметрах запуска информационной базы в окне запуска «1С:Предприятия» необходимо прописать ключ:
/isdi
Этот ключ принудительно вернет интерфейсу режим открытия окон в отдельных сущностях операционной системы, однако помните, что современные конфигурации на управляемых формах под этот режим практически не оптимизируются.
Мы детально изучили проблему отображения форм управляемого приложения в закладках и пришли к следующим выводам:
Блокировать окно владельца для всех автогенерируемых форм элементов и документов.Независимый в конфигураторе для конкретной формы.РежимОткрытияОкна или внедрении механизмов БСП для автоматического управления поведением интерфейса во всей системе.