Новая команда в панелях 1С: от настройки пользователя до кода

· 9 мин

Содержание

Добавить элемент панели в 1С можно тремя путями: настроить интерфейс прямо в программе, создать команду в Конфигураторе или подключить внешнюю обработку . Первый путь доступен обычному пользователю и ничего не ломает. Второй нужен разработчику и меняет конфигурацию. Третий закрывает случай, когда конфигурация типовая и трогать её нельзя.

Сначала определите, о какой панели речь. В интерфейсе «Такси» их несколько: панель разделов (верхняя полоса с названиями разделов), панель навигации (список команд слева или сверху в самом разделе), панель действий (команды «Создать», «Отчёты», «Сервис» в разделе) и командная панель формы (кнопки над списком или документом). Способ зависит от того, какую из них вы хотите изменить.

Какой способ выбрать

ЗадачаКто делаетГдеЧто меняется
Вынести нужную команду на видное местоПользовательРежим ПредприятияТолько ваш профиль
Добавить свой пункт в раздел для всехРазработчикКонфигураторКонфигурация
Подключить свой отчёт или обработку без правки конфигурацииАдминистраторДополнительные отчёты и обработкиБаза, по настройке доступа
Добавить кнопку на форму динамическиРазработчикКод формыКонкретная форма

Если конфигурация на поддержке, любая правка в Конфигураторе приведёт к расхождению с поставщиком при обновлении. Сначала проверьте, хватит ли первого или третьего способа.

Настройка панелей в режиме Предприятия

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

Панель разделов

В окне настройки слева список доступных разделов, справа — те, что показаны. Выделите нужный раздел слева, нажмите кнопку «Добавить» (стрелка вправо) и расставьте порядок стрелками вверх и вниз. Чтобы убрать лишний раздел, сделайте обратное действие. Кнопка сброса вернёт набор, который задал разработчик.

Панель навигации и панель действий

Принцип тот же: два списка, «доступные» и «выбранные» команды. Перенесите команду вправо, и она появится в панели выбранного раздела. Обычно в навигацию выносят частые списки: «Номенклатура», «Контрагенты», «Поступление товаров и услуг». В панель действий — создание документов, которые вы вводите каждый день.

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

Избранное и история

Для разовых нужд проще не трогать панели. Откройте любой список или документ и добавьте его в избранное (значок звезды в заголовке формы или сочетание Ctrl+D). Избранное открывается из отдельной кнопки рядом с историей и ведёт на нужный объект за один щелчок.

Командная панель формы

Кнопки над списком или документом тоже можно менять. На форме откройте меню «Ещё» и найдите пункт изменения формы (в разных формах он называется почти одинаково). В режиме настройки показываются дерево элементов и доступные команды: перетащите нужную команду в группу и сохраните результат. Настройка записывается в профиль пользователя.

Если пункта изменения формы нет, у вас нет права на настройку интерфейса. Его выдаёт администратор через профиль доступа, самому себе роль не назначить.

Как создать команду в Конфигураторе

Чтобы в разделе у всех появился новый пункт, его нужно завести в конфигурации. Откройте базу в режиме Конфигуратора (в списке баз кнопка «Конфигуратор») и найдите в дереве метаданных ветку «Общие» — в ней «Подсистемы» и «Общие команды».

Шаг 1. Команда

Команда бывает общей (ветка «Общие → Общие команды») или принадлежит объекту (справочнику, документу, отчёту — вкладка «Команды» в его редакторе). Создайте её и задайте минимум три свойства:

  1. Группа — куда команду поместить: панель навигации (обычная, важное или «см. также») или панель действий (создание, отчёты, сервис).
  2. Тип параметра команды — оставьте пустым, если команда запускается сама по себе, или выберите тип объекта, если она работает с выделенным элементом.
  3. Модуль команды — процедура ОбработкаКоманды, которая выполняется при нажатии.

Пример модуля команды, открывающей форму списка справочника:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	ОткрытьФорму("Справочник.Контрагенты.ФормаСписка", , ПараметрыВыполненияКоманды.Источник);
КонецПроцедуры

Шаг 2. Подсистема

Команда сама по себе не появится в разделе. Раздел — это подсистема верхнего уровня, а чтобы команда в нём отобразилась, её нужно включить в состав подсистемы. Откройте подсистему, перейдите на закладку «Состав» и добавьте объект или общую команду.

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

Шаг 3. Расположение в панели

Откройте подсистему и нажмите «Командный интерфейс». Окно показывает все панели этого раздела. Вы увидите добавленную команду в нужной группе и сможете:

  • поменять порядок стрелками;
  • скрыть команду, сняв флажок видимости;
  • задать видимость для отдельных ролей (кнопкой настройки видимости по ролям).

Шаг 4. Проверка

Запустите «1С:Предприятие» из Конфигуратора (кнопка отладки) и убедитесь, что пункт на месте. Если вы запускаете под пользователем с ограниченными ролями, проверьте и под ним.

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

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

Для типовых конфигураций (Бухгалтерия, ЗУП, Управление торговлей) правильнее сделать то же самое в расширении. Расширения появились в платформе 8.3.6, поэтому на старых релизах этот способ недоступен.

Порядок такой:

  1. В Конфигураторе откройте меню «Конфигурация → Расширения конфигурации » и создайте расширение.
  2. Внутри расширения создайте свою общую команду и при необходимости подсистему.
  3. Для размещения в существующем разделе добавьте команду в состав типовой подсистемы: в расширении её нужно «заимствовать», то есть добавить объект типовой конфигурации в расширение.
  4. Загрузите расширение в базу и отдельным шагом обновите конфигурацию базы данных, иначе изменения не вступят в силу.

Преимущество в том, что при обновлении типовой конфигурации ваша команда остаётся на месте.

Внешняя обработка как элемент панели

Когда конфигурацию трогать нельзя, а своя функция нужна всем, подойдёт механизм дополнительных обработок. Он есть в конфигурациях на базе Библиотеки стандартных подсистем. Раздел находится в Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки.

Порядок действий:

  1. Включите возможность использования дополнительных отчётов и обработок в настройках раздела.
  2. Создайте новый элемент в справочнике и загрузите файл обработки (.epf).
  3. В карточке укажите вид обработки и разделы, в которых нужна команда. Обычно это ссылка «Расположение» или таблица с перечнем разделов.
  4. Назначьте пользователей или группы, которым команда видна.
  5. Запишите элемент. В выбранных разделах появится пункт, который запускает обработку.

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

Если в базе нет БСП или раздела «Дополнительные отчёты и обработки», такой путь недоступен. Тогда обработку открывают через меню «Файл → Открыть» и закрепляют в избранном.

Типы элементов и куда они ведут

ЭлементЧто этоГде создаётся
ПодсистемаРаздел в панели разделовКонфигуратор, ветка «Подсистемы»
КомандаПункт панели навигации или действийОбщие команды или команды объекта
Группа командБлок внутри панели действийВетка «Группы команд»
Кнопка формыЭлемент командной панели формыРедактор формы
Запись избранногоСсылка на объект для одного пользователяРежим Предприятия

Не путайте команду и кнопку формы. Команда — объект метаданных со своим действием. Кнопка — элемент формы, который ссылается на команду. Одну команду можно привязать к нескольким кнопкам.

Видимость и права доступа

Новая команда может быть невидимой по трём независимым причинам, и их стоит проверять по очереди.

  • 🔒 Роли. Объект, с которым работает команда, должен быть доступен пользователю хотя бы на просмотр. Нет права на справочник — нет и команды, которая его открывает.
  • ⚙️ Функциональные опции. Если команда или подсистема привязана к опции, и опция выключена, элемент скрывается у всех. Включите её в настройках программы.
  • 👁 Настройка пользователя. Человек мог сам убрать команду из панели в режиме Предприятия. Достаточно вернуть её в окне настройки.

Для управления видимостью по ролям в Конфигураторе служит настройка командного интерфейса подсистемы. Создайте в дереве роль, откройте «Командный интерфейс» подсистемы и укажите, для каких ролей команда показывается.

Скрытие команды в интерфейсе не заменяет ограничение прав. Пользователь с доступом к объекту откроет его другим путём, например через поиск или ссылку.

Программное управление элементами панели

Динамически добавлять кнопки и менять видимость можно в модуле формы. Команда и кнопка создаются в обработчике ПриСозданииНаСервере:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Команда = Команды.Добавить("ПечатьОтчёта");
	Команда.Действие = "Подключаемый_ПечатьОтчёта";
	Команда.Заголовок = "Печать отчёта";

	Кнопка = Элементы.Добавить("КнопкаПечатьОтчёта", Тип("КнопкаФормы"), Элементы.ГруппаКоманды);
	Кнопка.ИмяКоманды = "ПечатьОтчёта";

КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПечатьОтчёта(Команда)
	// действие выполняется здесь
КонецПроцедуры

Здесь ГруппаКоманды — группа типа «Командная панель», уже размещённая на форме. Если её нет, добавьте группу заранее.

Видимость управляется свойством элемента:

Элементы.КнопкаПечатьОтчёта.Видимость = Ложь;
Элементы.КнопкаПечатьОтчёта.Доступность = Ложь;

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

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

Пример: быстрый доступ к отчёту для бухгалтера

Задача: бухгалтер каждое утро открывает один и тот же отчёт, а он спрятан в глубине раздела «Отчёты». Решение зависит от того, нужно ли это одному человеку или всему отделу.

  • 👤 Одному человеку. Откройте отчёт, добавьте его в избранное и перенесите команду в панель действий через окно настройки. Займёт минуту, конфигурация не затрагивается.
  • 👥 Всему отделу. Разработчик создаёт общую команду, открывающую форму отчёта, включает её в состав нужной подсистемы и ограничивает видимость ролью «Бухгалтер». Лучше сделать это в расширении, чтобы обновление типовой конфигурации не стёрло правку.
  • 🧩 Отчёт внешний. Загрузите его как дополнительный отчёт, укажите раздел «Отчёты» и назначьте группу пользователей.

После любого из вариантов попросите пользователя перезапустить сеанс и проверьте результат под его учётной записью, а не под администратором: у администратора видны все команды, и ошибка в ролях останется незамеченной.

Если пункт не появился

Проверьте по порядку:

  • команда включена в состав подсистемы, а не просто создана в дереве;
  • конфигурация базы данных обновлена (F7 в Конфигураторе или обновление после загрузки расширения);
  • вы перезапустили сеанс: интерфейс подтягивается при входе;
  • у пользователя есть права на объект и включена функциональная опция;
  • панель не скрыта в личных настройках.

Если всё сходится, а пункта нет, сбросьте личные настройки интерфейса в окне настройки панели. Сброс затрагивает только ваш профиль.

Частые вопросы

Можно ли добавить пункт в панель, не используя Конфигуратор?
Да. В режиме Предприятия выберите команду в окне настройки панели или закрепите объект в избранном. Для общего доступа подключите обработку через дополнительные отчёты и обработки.
Почему настроенная панель пропала после входа с другого компьютера?
Настройка хранится в профиле пользователя в базе, а не на компьютере. Проверьте, что вы вошли под тем же пользователем и в ту же базу, а не под копией.
Нужна ли монополия на базу для добавления команды?
Для правки метаданных в Конфигураторе нужно получить доступ к хранилищу или открыть базу на изменение. Обновление структуры базы после правки требует монопольного режима.
Чем подсистема отличается от группы команд?
Подсистема — раздел в панели разделов. Группа команд — блок внутри панели, объединяющий несколько команд.
Можно ли дать разным пользователям разный набор команд?
Да, через роли и настройку видимости в командном интерфейсе подсистемы. Личная расстановка панелей — отдельный механизм, он действует только на одного человека.