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

· 10 мин

Содержание

Чтобы добавить команду в командный интерфейс 1С 8.3, объект или общую команду нужно включить в подсистему, а затем в Конфигураторе открыть командный интерфейс этой подсистемы (свойство подсистемы «Командный интерфейс» → «Открыть») и отметить видимость команды. После Конфигурация → Обновить конфигурацию базы данных и перезапуска клиента команда появится в разделе.

Частое заблуждение — искать в «Такси» отдельный редактор меню, где кнопку можно просто нарисовать. Такого редактора нет. Состав панелей платформа собирает сама: из подсистем, прав пользователя и функциональных опций. Разработчик управляет этим через метаданные, пользователь — через персональные настройки. Всё ниже относится к платформе 8.3 с интерфейсом «Такси» и одинаково работает в БП 3.0, ЗУП 3.1, УТ 11 и самописных конфигурациях.

Из чего собран командный интерфейс 1С

Командный интерфейс — это не одна панель, а несколько зон. У каждой своя логика наполнения.

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

Команды бывают трёх видов:

  • 🧩 Стандартные — платформа создаёт их сама для каждого объекта: открыть список, создать элемент, открыть отчёт.
  • 📌 Общие команды — ветка «Общие → Общие команды». Не привязаны к объекту, их размещают в любой подсистеме.
  • 📎 Команды объекта — ветка «Команды» внутри справочника, документа или обработки. Часто параметризуемые: работают с выделенной строкой.

Отдельно живут команды формы. Они существуют только внутри конкретной формы и в панели разделов не появляются.

Как добавить команду объекта в раздел через Конфигуратор

Самый частый сценарий: новая обработка или справочник должны появиться в разделе «Склад» или «Продажи». Порядок такой.

1. Проверьте свойство «Использовать стандартные команды»

Откройте свойства объекта (Alt+Enter). У обработок и отчётов флаг «Использовать стандартные команды» по умолчанию снят. Без него команды открытия формы нет, и показывать в интерфейсе нечего.

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

2. Включите объект в подсистему

Два равноценных пути:

  1. В свойствах объекта — закладка «Подсистемы»: отметьте нужный раздел.
  2. В свойствах подсистемы — «Состав»: добавьте объект в список.

Объект может входить в несколько подсистем. Тогда его команда появится в каждом из разделов.

3. Отметьте команду в редакторе командного интерфейса

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

  1. Найдите строку с командой объекта.
  2. Поставьте флаг в колонке «Видимость».
  3. Перетащите строку в нужную группу и место. Порядок сверху вниз — это порядок на экране.

4. Обновите базу и перезапустите клиент

Сохраните конфигурацию и выполните Конфигурация → Обновить конфигурацию базы данных (F7). Открытый клиент изменения не подхватит — перезапустите его.

Команды начальной страницы и общую панель разделов настраивают в контекстном меню корня дерева конфигурации: пункт «Открыть командный интерфейс конфигурации».

Типовую конфигурацию на поддержке так не правьте: снимать её с поддержки ради одной кнопки дорого при каждом следующем обновлении. Для типовых есть расширение — о нём ниже.

Своя общая команда с обработчиком

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

  1. Ветка Общие → Общие команды → «Добавить».
  2. Задайте «Имя», «Синоним» (это текст на кнопке) и при желании «Картинку».
  3. Свойство «Группа» определяет, куда команда попадёт: например, Панель навигации.Обычное или Панель действий.Сервис.
  4. Откройте модуль команды и напишите обработчик.
  5. Включите команду в подсистему и отметьте её видимость в редакторе, как в предыдущем разделе.

Шаблон обработчика платформа создаёт сама. Пример: команда открывает форму обработки так, чтобы при повторном нажатии не плодились копии окна.

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

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

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

Параметризуемая команда: кнопка в форме документа

Нужна кнопка «Сформировать акт» прямо в форме реализации или в её списке? Это параметризуемая команда.

  • 🔹 «Тип параметра команды» — ссылка на нужный документ, например ДокументСсылка.РеализацияТоваровУслуг.
  • 🔹 «Режим использования параметра» — «Одиночный» или «Множественный» (для нескольких выделенных строк сразу).
  • 🔹 «Группа» — из списка групп командной панели формы, например Командная панель формы.Важное.

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

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

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

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

Команда формы, добавленная программно

Иногда кнопку нужно добавить в одну конкретную форму, причём по условию. Это делают в ПриСозданииНаСервере:

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

	НоваяКоманда = Команды.Добавить("ОбновитьЦены");
	НоваяКоманда.Заголовок = "Обновить цены";
	НоваяКоманда.Действие = "ОбновитьЦены";

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

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

&НаКлиенте
Процедура ОбновитьЦены(Команда)
	// действие по кнопке
КонецПроцедуры

Процедура ОбновитьЦены с параметром Команда должна существовать в модуле формы. Иначе при нажатии будет ошибка «процедура не найдена».

Добавить команду в типовую конфигурацию без снятия с поддержки

Для БП, ЗУП, УТ и других типовых есть два безопасных способа.

Через расширение конфигурации

Расширения работают с платформы 8.3.6. Порядок:

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

Основная конфигурация остаётся на поддержке. Обновления типовой ставятся как обычно, расширение подключается поверх.

Через дополнительные обработки БСП

В конфигурациях на БСП внешнюю обработку можно встроить в раздел вообще без Конфигуратора. Раздел Администрирование → Печатные формы, отчеты и обработки → «Дополнительные отчеты и обработки». Обработка должна содержать функцию СведенияОВнешнейОбработке() в модуле объекта — в ней описаны её команды. После регистрации укажите размещение — в каких разделах показывать команду.

СпособКогда подходитОграничения
Правка основной конфигурацииСвоя, не типовая базаТиповая теряет «чистое» обновление
РасширениеТиповая на поддержке, нужна полноценная командаНужен Конфигуратор и права администратора
Дополнительная обработка БСПНужна кнопка без доступа к КонфигураторуТолько конфигурации на БСП, команда живёт во внешнем файле

Кому видна команда: роли, права и функциональные опции

Команда добавлена, а пользователь её не видит — почти всегда дело в одном из фильтров.

  • 🔐 Право на объект. Если у ролей пользователя нет права «Просмотр» на справочник или документ, стандартная команда его списка скрыта автоматически.
  • 🔐 Право на общую команду. У общих команд в ролях тоже есть право «Просмотр». Новая команда не получает его сама — отметьте в нужных ролях.
  • 👥 Видимость по ролям в редакторе интерфейса. В редакторе командного интерфейса подсистемы, кроме общей колонки «Видимость», есть колонки по каждой роли. Так команду можно показать бухгалтеру и скрыть кладовщику, не отнимая прав.
  • ⚙️ Функциональные опции. Если объект входит в состав функциональной опции, которая выключена, его команды исчезают отовсюду.

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

Быстрая проверка: зайдите в базу под пользователем, у которого кнопки нет, и откройте Главное меню → Все функции. Если команды нет и там, проблема в правах или опциях. Если она в «Все функции» есть — значит, не настроена видимость в подсистеме. Сам пункт «Все функции» включается флагом «Отображать команду “Все функции”» в параметрах программы.

Как пользователь сам меняет состав разделов

Без Конфигуратора пользователь может перестроить интерфейс под себя. Изменения хранятся в его настройках и не затрагивают остальных.

  • 📂 Состав и порядок разделов — через главное меню: пункт «Вид» → «Настройка панели разделов ». Раздел можно скрыть или переставить.
  • 🧭 Команды внутри раздела — в открытом разделе нажмите кнопку настроек в правом верхнем углу панели функций. Там пункты «Настройка навигации» и «Настройка действий».
  • 🧱 Положение панелей — главное меню → «Вид» → «Настройка панелей». Панели перетаскиваются мышью: разделы сверху или слева, панель открытых окон снизу.
  • ⭐ Избранное — звёздочка в заголовке формы или в списке добавляет команду в «Избранное» на панели инструментов.

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

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

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

В конфигурациях на БСП у администратора есть обработка копирования настроек: Администрирование → Настройки пользователей и прав → «Настройки пользователей». Там можно скопировать внешний вид одного пользователя другим или очистить настройки. Удобно после доработки: настройте эталонного пользователя и разошлите всем.

Группы, подменю и порядок команд

Длинный список из 30 команд в разделе никто не читает. Группируйте.

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

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

Для своей логики создайте группу команд: ветка Общие → Группы команд. Задайте ей «Категорию» (панель навигации, панель действий или командная панель формы) и «Представление». Потом укажите эту группу в свойстве «Группа» у общей команды.

Порядок внутри группы задают в редакторе командного интерфейса подсистемы перетаскиванием или стрелками.

Подсистема может быть вложенной. Подчинённая подсистема не создаёт новый раздел, а выводит свою группу команд в панели навигации родителя. Так удобно разбить большой раздел «Склад» на «Поступление», «Перемещения», «Инвентаризация».

Почему команда не появилась: разбор причин

Диагностика: выберите симптом

Ещё одна неочевидная ловушка — параметризуемая команда, которая не появляется в форме документа. Проверьте «Тип параметра команды»: если там указана ссылка на другой документ или тип задан списком без нужного, платформа не найдёт подходящую форму. И убедитесь, что группа команды относится к категории «Командная панель формы», а не к панели навигации.

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

Можно ли добавить команду в командный интерфейс без Конфигуратора?
Да, если конфигурация построена на БСП: зарегистрируйте внешнюю обработку как дополнительную и укажите раздел размещения. Без БСП — только через расширение в Конфигураторе.
Почему в «Такси» нельзя переименовать раздел через настройки пользователя?
Название раздела — это синоним подсистемы в метаданных. Пользовательские настройки меняют только состав и порядок, но не тексты.
Как добавить команду на начальную страницу?
На начальную страницу выводятся формы, а не отдельные кнопки. Создайте общую форму с нужными командами и добавьте её через «Открыть рабочую область начальной страницы» в контекстном меню корня конфигурации.
Сколько разделов можно показать в панели разделов?
Жёсткого ограничения в несколько штук нет, но при большом количестве панель становится нечитаемой. Лучше объединять редкие функции во вложенные подсистемы.
Нужно ли обновлять базу после смены видимости команды?
Да. Командный интерфейс — часть метаданных, поэтому любая правка требует обновления конфигурации базы данных и перезапуска клиента.