Как управлять расположением команд в командной панели формы? Автоматическое создание контекстного меню.

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

  1. Вручную, созданием соответствующего списка и определением набор процедур;
  2. Автоматически.

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

Автоматическое создание контекстного меню

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

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

Выключение галочки «АвтоКонтекстноеМеню» позволяет разработчику создать меню, состоящее только из собственных пунктов. Если же флажок активирован, автоматически созданное меню будет располагаться под списком команд, сформированным пользователем.

В свойствах параметра «КонтекстноеМеню» можно определить типовой список команд, который существует на форме (Рис.2).

Рис.2

В нашем случае мы можем:

  • Связать контекстное меню с командной панелью формы обработки;
  • Вызвать те же действия, которые включены в выпадающий список команды «Действия»;
  • Определить тот же набор пунктов, который реализован в основных действиях формы.

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

  1. Создать командную панель, для которой источником действий будет выступать наше табличное поле;
  2. Снять видимость с этого элемента;
  3. Установить в параметре «КонтекстноеМеню» нашу командную панель.

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

Рис.3

Включить контекстное меню можно, если по элементу формы «Реквизит1» кликнуть правой кнопкой мыши (Рис.4). В выпавшем списке выберем пункт «Показать контекстное меню».

Рис.4

После этого дерево элементов формы получит новую ветку (Рис.5)

Рис.5

Теперь рассмотрим процесс заполнения контекстного меню.

Ручное заполнение пунктов меню

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

Для управляемой формы набор команд, реализованных в выпадающем списке можно определить, перетаскиванием их с закладки «Команды» в соответствующую ветку дерева элементов (Рис.6).

Рис.6

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

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

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

Для этого:


После этих действий контекстное меню будет выглядеть как на Рис.10

Рис.10

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

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

Для этого, перед вышеприведенным кодом был вставлен следующий цикл (Рис.11):

Таким образом, все подчиненные элементы контекстного меню стали не видны, и оно приобрело вид, как на Рис.12

Рис.12

Подсистема в 1С 8.3 — объект древа метаданных, который отвечает за построение командного интерфейса конфигурации.

Ниже в статье речь пойдет о подсистемах начиная с версии 8.2.

Дело в том, что в версии 8.1 (как и для обычного приложения 8.2) тоже были подсистемы, но они служили совершенно для других целей, скорее, для разработчика, чем для пользователя. С помощью подсистем в 8.1 обычно разделяли разный функционал. Также подсистемы помогали при объединении разных конфигураций 1С — можно было указать, какую систему переносить.

Подсистемы 1С и интерфейс для программиста

В версиях 8.3 и 8.2 подсистемы — это основной инструмент построения командного интерфейса пользователя. Объекты метаданных «Подсистемы» имеют иерархическую структуру, чтобы настроить «подменю» в интерфейсе, необходимо добавить подчиненную подсистемы:

Свойства и настройки

Рассмотрим настройки и свойства подсистем в конфигураторе:

Получите 267 видеоуроков по 1С бесплатно:

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

Кнопка открывает панель настройки интерфейса, где можно настроить интерфейсы в зависимости от роли текущего пользователя:

Картинка — картинка, назначенная для подсистемы, отображается в режиме предприятия. Можно выбрать стандартную картинку, а можно добавить свою, предварительно создав её как объект конфигурации Картинка:

На вкладке Функциональные опции указывается список функциональных опций, в которых используется данная подсистема.

Вкладка Состав определяет набор объектов метаданных, участвующих в данной подсистеме.

На вкладке Прочее можно описать справку к подсистеме и указать настройку Включать в содержание справки — включать ли данный раздел справки в общую справочную информацию по конфигурации.

Если не отображается отчет или обработка в управляемом интерфейсе

Эта проблема очень часто возникает у начинающих разработчиков — вроде отчет или обработка была добавлена в состав подсистемы, а её не видно.

Первая причина этого может в том, что у объекта не задана управляемая форма.

Вторая причина — на вкладке Команды объекта установлена галка «Использовать стандартные команды». Связано это с тем, что для открытия обработки может быть описана как своя процедура, так и использована стандартная:

Работая в той или иной конфигурации на платформе "1С:Предприятие 8.1", бухгалтеры ежедневно используют в основном одни и те же пункты меню и подменю, кнопки на панелях инструментов. Однако не каждому пользователю удобен стандартный интерфейс программы. О том, как настроить интерфейс под себя, рассказывает В.В. Рыбалка, фирма "1С".

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

Самое простое решение, которое приходит в голову, - зайти в конфигуратор и настроить интерфейс так, как нужно именно вам. Но не всегда рядом есть специалисты с соответствующим уровнем квалификации. Кроме этого, не у всех пользователей одинаковые критерии удобств работы.

Неужели под каждого пользователя базы (а их может быть не один десяток) придется подстраивать текущий или создавать новый интерфейс в конфигураторе? Нет! Благодаря возможностям по тонкой настройке интерфейса у платформы 8.1 нет необходимости ни вызывать квалифицированного специалиста, ни лезть в конфигуратор*.

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

Решаются задачи по индивидуальной настройке довольно элегантно - при помощи персональных панелей инструментов. Для примера будем использовать бухгалтерский интерфейс типовой конфигурации "Бухгалтерия предприятия" (ред. 1.6) с демонстрационными данными.

Но прежде, чем перейти к описанию механизма индивидуальной настройки интерфейса, обозначим некие общие возможности, которые платформа 8.1 предоставляет своим пользователям. В частности, нельзя увидеть сразу все стандартные пункты меню и все панели инструментов, которые по умолчанию встроены в платформу (независимо от конфигурации). И это не ошибка. Дело в том, что некоторые возможности являются контекстно-зависимыми, а потому они доступны только тогда, когда в них есть смысл.

Достать их просто - на любом пустом месте рядом с доступными панелями инструментов достаточно нажать правую кнопку мыши. В открывшемся списке вы сразу увидите все доступные панели, причем включенные (видимые) будут помечены галочками.

Наглядный пример - работа с табличным документом. Сравните состав меню и панелей при отсутствии активного табличного документа - см. рис. 1 и при его наличие - см. рис. 2.


Рис. 1


Рис. 2

В большинстве случаев достаточно использовать появляющиеся пункты меню или включать нужные панели инструментов.

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

Итак, приступим к изучению индивидуальной настройки интерфейса.

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

  • "Операции" -> "Регламентные операции" -> "Справки-расчеты" -> "Калькуляция";
  • "Продажа" -> "Ведение книги продаж" -> "Книга продаж";
  • "Отчеты" -> "Прочие" -> "Универсальный отчет";
  • "Сервис" -> "Поиск данных";
  • "Предприятие" -> "Производственный календарь";
  • "Таблица" -> "Вид" (обратите внимание - это подменю).
  • "Советы", которые расположены на панели инструментов "Поддержка" (панель, созданная при разработке нашей конфигурации);
  • "Зафиксировать таблицу" стандартной панели инструментов "Табличный документ" (допустим, при работе с таблицами нужно часто фиксировать шапку).

С необходимыми функциями определились.

Их состав хоть и несколько сумбурен, но показателен.

Например, пункт меню "Калькуляция" спрятан довольно глубоко, а подменю "Вид" не всегда сразу нам доступен.

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

Для этого необходимо войти в режим настройки, вызвать список панелей инструментов (аналогично описанному выше способу включения/выключения стандартных панелей инструментов - см. рис. 1) и выбрать "Настройка…". Откроется окно настройки интерфейса, в котором на закладке "Панели инструментов" вы увидите все доступные на данный момент панели инструментов (рис. 3).


Рис. 3

Создадим свою панель инструментов и назовем ее, например, "Мое меню". Для этого необходимо нажать кнопку "Создать…" и написать название.

После нажатия на "ОК" в списке доступных панелей мы увидим нашу панель (рис. 4).

Рис. 4

Кроме этого, в центре экрана появится наша новая пустая (без единого элемента) панель (рис. 5). Самое главное уже сделано.

Рис. 5

Осталось наполнить наше меню нужными элементами.

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

Общий принцип таков - выбираем нужный элемент в тех местах, где обычно находим его в представленном нам интерфейсе, нажимаем и удерживаем клавишу Ctrl и "тащим" мышкой (левой кнопкой) этот элемент на нашу панель (перетаскиваем с копированием).

Что делать, если выпадающее меню перекрыло видимость нашей панели (рис. 6)?


Рис. 6

Достаточно взять ее мышкой за левый край заголовка и перетащить в удобное место .

Первым по нашему списку идет элемент "Калькуляция" - перетаскиваем (рис. 7).


Рис. 7

Обратите внимание, что клавиша Ctrl должна быть нажата до самого окончания перетаскивания.

Это легко проконтролировать: по окончании перетаскивания элемента на нашу панель рядом с курсором мыши должен быть плюсик ("+"). Если все сделано верно, вы увидите результат, похожий на рис. 8.


Рис. 8

Аналогично, перетаскиваем второй пункт нашего персонального меню - "Книгу продаж". В результате получается что-то похожее на рис. 9. Почему видна только иконка? Потому что разработчики конфигурации назначили картинку этому элементу меню, а платформа 8.1 по умолчанию отображает на панелях только картинки, если они заданы. Если же вы хотите видеть надпись или картинку и надпись (как в оригинальном меню), достаточно нажать на нужный вам элемент правую кнопку мыши и выбрать нужный режим отображения. Выберем для "Книги продаж" отображение и картинки, и текста (рис. 10).


Рис. 9

Рис. 10

Далее, заполняем нашу панель выбранными элементами. У "Поиска данных" также включим отображение картинки и текста. Дойдя в нашем списке до пункта "Таблица/Вид" мы уже имеем панель в таком виде, как показано на рис. 11.


Рис. 11

Тут мы можем столкнуться с тем, что меню "Таблица" в данный момент недоступно (причины описаны выше). Решая данную проблему, заодно опробуем возможности по добавлению пунктов в уже существующее меню. Все это время мы работали в режиме настройки интерфейса. Сейчас его временно придется закрыть - в окне "Настройка" жмем кнопку "Закрыть". Заметьте, все наши наработки сохранились и уже доступны для работы на нашей панели. Чтобы получить доступ к меню "Таблица", открываем любой табличный документ, либо создаем новый. После этого снова вызываем режим настройки. Теперь мы получили доступ к нужному меню и можем перетащить, аналогично предыдущим правилам, подменю "Вид" из него (рис. 12).


Рис. 12

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

Кнопку "Зафиксировать таблицу" можно найти в меню "Таблица", которое мы сделали доступным ранее. Но для чистоты эксперимента попробуйте включить доступную также панель "Табличный документ" (рис. 13).


Рис. 13

Вот и все - мы полностью заполнили панель инструментов "Мое меню" нужными именно нам элементами. Достаточно снова закрыть окно настройки кнопкой "Закрыть" и можно приступать к работе, всегда имея под рукой свой собственный набор функций.

В заключение отметим несколько важных моментов.