Новая команда в панелях 1С: от настройки пользователя до кода
Содержание
Добавить элемент панели в 1С можно тремя путями: настроить интерфейс прямо в программе, создать команду в Конфигураторе или подключить внешнюю обработку . Первый путь доступен обычному пользователю и ничего не ломает. Второй нужен разработчику и меняет конфигурацию. Третий закрывает случай, когда конфигурация типовая и трогать её нельзя.
Сначала определите, о какой панели речь. В интерфейсе «Такси» их несколько: панель разделов (верхняя полоса с названиями разделов), панель навигации (список команд слева или сверху в самом разделе), панель действий (команды «Создать», «Отчёты», «Сервис» в разделе) и командная панель формы (кнопки над списком или документом). Способ зависит от того, какую из них вы хотите изменить.
Какой способ выбрать
| Задача | Кто делает | Где | Что меняется |
|---|---|---|---|
| Вынести нужную команду на видное место | Пользователь | Режим Предприятия | Только ваш профиль |
| Добавить свой пункт в раздел для всех | Разработчик | Конфигуратор | Конфигурация |
| Подключить свой отчёт или обработку без правки конфигурации | Администратор | Дополнительные отчёты и обработки | База, по настройке доступа |
| Добавить кнопку на форму динамически | Разработчик | Код формы | Конкретная форма |
Если конфигурация на поддержке, любая правка в Конфигураторе приведёт к расхождению с поставщиком при обновлении. Сначала проверьте, хватит ли первого или третьего способа.
Настройка панелей в режиме Предприятия
Эта настройка личная: каждый пользователь собирает интерфейс под себя, на других она не влияет. Открывается через главное меню программы (кнопка со значком меню в левом верхнем углу) в пункте Вид. Там есть команды настройки панели разделов, навигации и действий. Точные названия пунктов немного различаются между релизами, но искать их нужно именно в этом меню.
Панель разделов
В окне настройки слева список доступных разделов, справа — те, что показаны. Выделите нужный раздел слева, нажмите кнопку «Добавить» (стрелка вправо) и расставьте порядок стрелками вверх и вниз. Чтобы убрать лишний раздел, сделайте обратное действие. Кнопка сброса вернёт набор, который задал разработчик.
Панель навигации и панель действий
Принцип тот же: два списка, «доступные» и «выбранные» команды. Перенесите команду вправо, и она появится в панели выбранного раздела. Обычно в навигацию выносят частые списки: «Номенклатура», «Контрагенты», «Поступление товаров и услуг». В панель действий — создание документов, которые вы вводите каждый день.
Если нужной команды в левом списке нет, значит, она недоступна по ролям или отключена функциональной опцией. Об этом ниже, в разделе про права.
Избранное и история
Для разовых нужд проще не трогать панели. Откройте любой список или документ и добавьте его в избранное (значок звезды в заголовке формы или сочетание Ctrl+D). Избранное открывается из отдельной кнопки рядом с историей и ведёт на нужный объект за один щелчок.
Командная панель формы
Кнопки над списком или документом тоже можно менять. На форме откройте меню «Ещё» и найдите пункт изменения формы (в разных формах он называется почти одинаково). В режиме настройки показываются дерево элементов и доступные команды: перетащите нужную команду в группу и сохраните результат. Настройка записывается в профиль пользователя.
Если пункта изменения формы нет, у вас нет права на настройку интерфейса. Его выдаёт администратор через профиль доступа, самому себе роль не назначить.
Как создать команду в Конфигураторе
Чтобы в разделе у всех появился новый пункт, его нужно завести в конфигурации. Откройте базу в режиме Конфигуратора (в списке баз кнопка «Конфигуратор») и найдите в дереве метаданных ветку «Общие» — в ней «Подсистемы» и «Общие команды».
Шаг 1. Команда
Команда бывает общей (ветка «Общие → Общие команды») или принадлежит объекту (справочнику, документу, отчёту — вкладка «Команды» в его редакторе). Создайте её и задайте минимум три свойства:
- Группа — куда команду поместить: панель навигации (обычная, важное или «см. также») или панель действий (создание, отчёты, сервис).
- Тип параметра команды — оставьте пустым, если команда запускается сама по себе, или выберите тип объекта, если она работает с выделенным элементом.
- Модуль команды — процедура
ОбработкаКоманды, которая выполняется при нажатии.
Пример модуля команды, открывающей форму списка справочника:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОткрытьФорму("Справочник.Контрагенты.ФормаСписка", , ПараметрыВыполненияКоманды.Источник);
КонецПроцедуры
Шаг 2. Подсистема
Команда сама по себе не появится в разделе. Раздел — это подсистема верхнего уровня, а чтобы команда в нём отобразилась, её нужно включить в состав подсистемы. Откройте подсистему, перейдите на закладку «Состав» и добавьте объект или общую команду.
Общие команды помещаются в панели только тех подсистем, в состав которых они включены. Объектные команды отображаются там, где в составе подсистемы лежит сам объект.
Шаг 3. Расположение в панели
Откройте подсистему и нажмите «Командный интерфейс». Окно показывает все панели этого раздела. Вы увидите добавленную команду в нужной группе и сможете:
- поменять порядок стрелками;
- скрыть команду, сняв флажок видимости;
- задать видимость для отдельных ролей (кнопкой настройки видимости по ролям).
Шаг 4. Проверка
Запустите «1С:Предприятие» из Конфигуратора (кнопка отладки) и убедитесь, что пункт на месте. Если вы запускаете под пользователем с ограниченными ролями, проверьте и под ним.
Правки в типовой конфигурации на поддержке делайте после включения возможности изменения в диалоге поддержки. Перед этим сохраните конфигурацию в файл, чтобы можно было вернуться.
Расширение вместо правки типовой конфигурации
Для типовых конфигураций (Бухгалтерия, ЗУП, Управление торговлей) правильнее сделать то же самое в расширении. Расширения появились в платформе 8.3.6, поэтому на старых релизах этот способ недоступен.
Порядок такой:
- В Конфигураторе откройте меню «Конфигурация → Расширения конфигурации » и создайте расширение.
- Внутри расширения создайте свою общую команду и при необходимости подсистему.
- Для размещения в существующем разделе добавьте команду в состав типовой подсистемы: в расширении её нужно «заимствовать», то есть добавить объект типовой конфигурации в расширение.
- Загрузите расширение в базу и отдельным шагом обновите конфигурацию базы данных, иначе изменения не вступят в силу.
Преимущество в том, что при обновлении типовой конфигурации ваша команда остаётся на месте.
Внешняя обработка как элемент панели
Когда конфигурацию трогать нельзя, а своя функция нужна всем, подойдёт механизм дополнительных обработок. Он есть в конфигурациях на базе Библиотеки стандартных подсистем. Раздел находится в Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки.
Порядок действий:
- Включите возможность использования дополнительных отчётов и обработок в настройках раздела.
- Создайте новый элемент в справочнике и загрузите файл обработки (
.epf). - В карточке укажите вид обработки и разделы, в которых нужна команда. Обычно это ссылка «Расположение» или таблица с перечнем разделов.
- Назначьте пользователей или группы, которым команда видна.
- Запишите элемент. В выбранных разделах появится пункт, который запускает обработку.
Чтобы обработка вообще могла подключаться таким образом, при её создании в Конфигураторе нужно реализовать экспортную процедуру со сведениями о внешней обработке. Это описано в документации по БСП. Типовой шаблон есть в самой Библиотеке стандартных подсистем.
Если в базе нет БСП или раздела «Дополнительные отчёты и обработки», такой путь недоступен. Тогда обработку открывают через меню «Файл → Открыть» и закрепляют в избранном.
Типы элементов и куда они ведут
| Элемент | Что это | Где создаётся |
|---|---|---|
| Подсистема | Раздел в панели разделов | Конфигуратор, ветка «Подсистемы» |
| Команда | Пункт панели навигации или действий | Общие команды или команды объекта |
| Группа команд | Блок внутри панели действий | Ветка «Группы команд» |
| Кнопка формы | Элемент командной панели формы | Редактор формы |
| Запись избранного | Ссылка на объект для одного пользователя | Режим Предприятия |
Не путайте команду и кнопку формы. Команда — объект метаданных со своим действием. Кнопка — элемент формы, который ссылается на команду. Одну команду можно привязать к нескольким кнопкам.
Видимость и права доступа
Новая команда может быть невидимой по трём независимым причинам, и их стоит проверять по очереди.
- 🔒 Роли. Объект, с которым работает команда, должен быть доступен пользователю хотя бы на просмотр. Нет права на справочник — нет и команды, которая его открывает.
- ⚙️ Функциональные опции. Если команда или подсистема привязана к опции, и опция выключена, элемент скрывается у всех. Включите её в настройках программы.
- 👁 Настройка пользователя. Человек мог сам убрать команду из панели в режиме Предприятия. Достаточно вернуть её в окне настройки.
Для управления видимостью по ролям в Конфигураторе служит настройка командного интерфейса подсистемы. Создайте в дереве роль, откройте «Командный интерфейс» подсистемы и укажите, для каких ролей команда показывается.
Скрытие команды в интерфейсе не заменяет ограничение прав. Пользователь с доступом к объекту откроет его другим путём, например через поиск или ссылку.
Программное управление элементами панели
Динамически добавлять кнопки и менять видимость можно в модуле формы. Команда и кнопка создаются в обработчике ПриСозданииНаСервере:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Команда = Команды.Добавить("ПечатьОтчёта");
Команда.Действие = "Подключаемый_ПечатьОтчёта";
Команда.Заголовок = "Печать отчёта";
Кнопка = Элементы.Добавить("КнопкаПечатьОтчёта", Тип("КнопкаФормы"), Элементы.ГруппаКоманды);
Кнопка.ИмяКоманды = "ПечатьОтчёта";
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПечатьОтчёта(Команда)
// действие выполняется здесь
КонецПроцедуры
Здесь ГруппаКоманды — группа типа «Командная панель», уже размещённая на форме. Если её нет, добавьте группу заранее.
Видимость управляется свойством элемента:
Элементы.КнопкаПечатьОтчёта.Видимость = Ложь;
Элементы.КнопкаПечатьОтчёта.Доступность = Ложь;
Видимость скрывает кнопку полностью, Доступность оставляет её на экране серой. Для динамических команд нужно помнить, что созданные кодом элементы существуют только на время жизни формы и при следующем открытии собираются заново.
Менять состав панелей разделов, навигации и действий самой программой в обычных формах нельзя: они задаются метаданными и настройкой пользователя. Динамически управляют только содержимым формы.
Пример: быстрый доступ к отчёту для бухгалтера
Задача: бухгалтер каждое утро открывает один и тот же отчёт, а он спрятан в глубине раздела «Отчёты». Решение зависит от того, нужно ли это одному человеку или всему отделу.
- 👤 Одному человеку. Откройте отчёт, добавьте его в избранное и перенесите команду в панель действий через окно настройки. Займёт минуту, конфигурация не затрагивается.
- 👥 Всему отделу. Разработчик создаёт общую команду, открывающую форму отчёта, включает её в состав нужной подсистемы и ограничивает видимость ролью «Бухгалтер». Лучше сделать это в расширении, чтобы обновление типовой конфигурации не стёрло правку.
- 🧩 Отчёт внешний. Загрузите его как дополнительный отчёт, укажите раздел «Отчёты» и назначьте группу пользователей.
После любого из вариантов попросите пользователя перезапустить сеанс и проверьте результат под его учётной записью, а не под администратором: у администратора видны все команды, и ошибка в ролях останется незамеченной.
Если пункт не появился
Проверьте по порядку:
- команда включена в состав подсистемы, а не просто создана в дереве;
- конфигурация базы данных обновлена (
F7в Конфигураторе или обновление после загрузки расширения); - вы перезапустили сеанс: интерфейс подтягивается при входе;
- у пользователя есть права на объект и включена функциональная опция;
- панель не скрыта в личных настройках.
Если всё сходится, а пункта нет, сбросьте личные настройки интерфейса в окне настройки панели. Сброс затрагивает только ваш профиль.