При переходе от разработки на управляемых формах к обычным формам (или при поддержке старых конфигураций) программисты часто сталкиваются с тем, что привычный механизм подсистем здесь работает иначе. Если в управляемом приложении достаточно включить объект в подсистему, чтобы он появился в интерфейсе, то в обычном приложении интерфейс строится по принципу «ручного конструирования».
Рассмотрим подробно, как устроена визуальная оболочка обычного приложения и как наполнить главное меню нужными нам объектами — документами, справочниками, отчетами или регистрами.
Проанализируем ключевое различие. В управляемых формах Подсистемы определяют командный интерфейс автоматически. Платформа сама решает, где и как отрисовать ссылку на документ, исходя из настроек подсистемы. В обычных формах (версии 8.0, 8.1 и 8.2/8.3 в режиме обычного приложения) за это отвечает специальный объект метаданных — Интерфейс. Эти объекты расположены в дереве конфигурации в ветке Общие -> Интерфейсы.
Если ваша база пустая, в ней может не быть ни одного созданного интерфейса. В этом случае система запускается с «пустым» меню, где доступны только стандартные пункты: «Файл», «Правка», «Сервис», «Операции», «Окна» и «Справка». Меню «Операции» — это системный инструмент, который дает доступ ко всем объектам метаданных, но он неудобен для конечного пользователя. Наша задача — создать дружелюбное меню.
Разберем процесс создания интерфейса по шагам:
ОсновнойИнтерфейс) и «Синоним» (то, что будет видеть пользователь, если интерфейсов несколько).После добавления объекта дважды кликнем по нему. Перед нами откроется Редактор интерфейсов. Это визуальный конструктор, имитирующий верхнюю панель программы 1С.
В редакторе интерфейсов мы видим две основные области: меню (текстовые пункты) и панели инструментов (иконки). Рассмотрим, как добавить новый пункт меню, например, «Документы».
Для создания структуры выполним следующие действия:
Важно помнить: каждому пункту меню соответствует свойство «Действие». Для списка документов это обычно стандартное действие Документ.ИмяВашегоДокумента.ОткрытьСписок. Вы можете вручную менять эти действия или прописывать вызов своих процедур.
Создать интерфейс недостаточно — система должна знать, кому его показывать. Выясним, как связать интерфейс с конкретным пользователем системы.
Существует два основных способа назначения:
Роли (в дереве конфигурации) также можно указать интерфейс. Если пользователю назначено несколько ролей, 1С попытается «склеить» (объединить) интерфейсы этих ролей при запуске.Обратите внимание: если пользователю не назначен ни один интерфейс, он будет видеть только стандартное меню «Операции». Чтобы скрыть меню «Операции», необходимо обязательно создать и назначить хотя бы один пользовательский интерфейс.
В обычных приложениях иногда требуется изменить состав меню прямо во время работы, не перезапуская программу. Для этого предусмотрен глобальный контекст и объект ГлавныйИнтерфейс.
Рассмотрим пример кода, который позволяет переключить интерфейс программно. Это может быть полезно, если в вашей конфигурации предусмотрены разные режимы работы для одного и того же сотрудника (например, «Кладовщик» и «Менеджер»).
// Пример переключения на конкретный интерфейс
Процедура ПереключитьНаИнтерфейсБухгалтера()
// Устанавливаем интерфейс по его имени в конфигураторе
ГлавныйИнтерфейс.Установить("БухгалтерскийИнтерфейс");
КонецПроцедуры
Также мы можем управлять видимостью отдельных панелей инструментов, если они были созданы в редакторе интерфейса:
// Скрыть панель инструментов "Стандартная"
ГлавныйИнтерфейс.ПанелиИнструментов.Стандартная.Видимость = Ложь;
Разберем несколько нюансов, которые помогут сделать интерфейс более профессиональным:
1. Переключаемые интерфейсы. Если у интерфейса в конфигураторе заполнено свойство «Подпись» и не установлена галочка «Не переключаемый», пользователь сможет самостоятельно менять его в режиме «Предприятие» через меню Сервис -> Переключить интерфейс.
2. Использование картинок. Для пунктов меню и кнопок на панелях рекомендуется выбирать стандартные или загружать свои картинки. Это значительно ускоряет навигацию пользователя в программе.
3. Группировка. Используйте разделители в меню, чтобы визуально отделять блоки документов от отчетов. В редакторе интерфейсов это делается созданием пункта с типом «Разделитель».
4. Горячие клавиши. Не забудьте назначить сочетания клавиш (например, Ctrl+1) для наиболее часто используемых журналов документов. Это настраивается в свойствах конкретного пункта меню в редакторе интерфейсов.
Таким образом, мы проанализировали процесс создания меню «с нуля» в обычном приложении. Несмотря на то, что это требует ручного труда по сравнению с управляемыми формами, такой подход дает разработчику полный контроль над тем, что и в каком порядке видит пользователь на своем экране.