Новая команда в разделе 1С: от подсистемы до кнопки на экране пользователя
Содержание
Чтобы добавить команду в командный интерфейс 1С 8.3, объект или общую команду нужно включить в подсистему, а затем в Конфигураторе открыть командный интерфейс этой подсистемы (свойство подсистемы «Командный интерфейс» → «Открыть») и отметить видимость команды. После Конфигурация → Обновить конфигурацию базы данных и перезапуска клиента команда появится в разделе.
Частое заблуждение — искать в «Такси» отдельный редактор меню, где кнопку можно просто нарисовать. Такого редактора нет. Состав панелей платформа собирает сама: из подсистем, прав пользователя и функциональных опций. Разработчик управляет этим через метаданные, пользователь — через персональные настройки. Всё ниже относится к платформе 8.3 с интерфейсом «Такси» и одинаково работает в БП 3.0, ЗУП 3.1, УТ 11 и самописных конфигурациях.
Из чего собран командный интерфейс 1С
Командный интерфейс — это не одна панель, а несколько зон. У каждой своя логика наполнения.
| Зона | Где на экране | Что туда попадает |
|---|---|---|
| Панель разделов | Слева или сверху | Подсистемы верхнего уровня с флагом «Включать в командный интерфейс» |
| Панель навигации раздела | В панели функций открытого раздела, слева | Команды открытия списков: справочники, документы, журналы |
| Панель действий раздела | В панели функций, справа | Команды «Создать», «Отчеты», «Сервис» |
| Начальная страница | Рабочая область при входе | Формы, заданные в свойствах конфигурации |
| Командная панель формы | Верх формы и её подменю «Ещё» | Команды формы и параметризуемые команды объектов |
Команды бывают трёх видов:
- 🧩 Стандартные — платформа создаёт их сама для каждого объекта: открыть список, создать элемент, открыть отчёт.
- 📌 Общие команды — ветка «Общие → Общие команды». Не привязаны к объекту, их размещают в любой подсистеме.
- 📎 Команды объекта — ветка «Команды» внутри справочника, документа или обработки. Часто параметризуемые: работают с выделенной строкой.
Отдельно живут команды формы. Они существуют только внутри конкретной формы и в панели разделов не появляются.
Как добавить команду объекта в раздел через Конфигуратор
Самый частый сценарий: новая обработка или справочник должны появиться в разделе «Склад» или «Продажи». Порядок такой.
1. Проверьте свойство «Использовать стандартные команды»
Откройте свойства объекта (Alt+Enter). У обработок и отчётов флаг «Использовать стандартные команды» по умолчанию снят. Без него команды открытия формы нет, и показывать в интерфейсе нечего.
У обработки должна быть указана основная форма. Иначе стандартная команда есть, но открывать ей нечего.
2. Включите объект в подсистему
Два равноценных пути:
- В свойствах объекта — закладка «Подсистемы»: отметьте нужный раздел.
- В свойствах подсистемы — «Состав»: добавьте объект в список.
Объект может входить в несколько подсистем. Тогда его команда появится в каждом из разделов.
3. Отметьте команду в редакторе командного интерфейса
Откройте свойства подсистемы, найдите свойство «Командный интерфейс» и нажмите «Открыть». Появится редактор с группами: «Панель навигации », «Панель действий». В каждой группе — команды объектов из состава подсистемы.
- Найдите строку с командой объекта.
- Поставьте флаг в колонке «Видимость».
- Перетащите строку в нужную группу и место. Порядок сверху вниз — это порядок на экране.
4. Обновите базу и перезапустите клиент
Сохраните конфигурацию и выполните Конфигурация → Обновить конфигурацию базы данных (F7). Открытый клиент изменения не подхватит — перезапустите его.
Команды начальной страницы и общую панель разделов настраивают в контекстном меню корня дерева конфигурации: пункт «Открыть командный интерфейс конфигурации».
Типовую конфигурацию на поддержке так не правьте: снимать её с поддержки ради одной кнопки дорого при каждом следующем обновлении. Для типовых есть расширение — о нём ниже.
Своя общая команда с обработчиком
Если кнопка должна не просто открыть список, а выполнить действие, создайте общую команду.
- Ветка
Общие → Общие команды→ «Добавить». - Задайте «Имя», «Синоним» (это текст на кнопке) и при желании «Картинку».
- Свойство «Группа» определяет, куда команда попадёт: например,
Панель навигации.ОбычноеилиПанель действий.Сервис. - Откройте модуль команды и напишите обработчик.
- Включите команду в подсистему и отметьте её видимость в редакторе, как в предыдущем разделе.
Шаблон обработчика платформа создаёт сама. Пример: команда открывает форму обработки так, чтобы при повторном нажатии не плодились копии окна.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОткрытьФорму("Обработка.СверкаОстатков.Форма",
,
ПараметрыВыполненияКоманды.Источник,
ПараметрыВыполненияКоманды.Уникальность,
ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры
Параметризуемая команда: кнопка в форме документа
Нужна кнопка «Сформировать акт» прямо в форме реализации или в её списке? Это параметризуемая команда.
- 🔹 «Тип параметра команды» — ссылка на нужный документ, например
ДокументСсылка.РеализацияТоваровУслуг. - 🔹 «Режим использования параметра» — «Одиночный» или «Множественный» (для нескольких выделенных строк сразу).
- 🔹 «Группа» — из списка групп командной панели формы, например
Командная панель формы.Важное.
В подсистему такую команду включать не нужно. Платформа сама находит все формы, где есть данные нужного типа, и добавляет туда кнопку. В обработчик приходит ссылка — или массив ссылок в множественном режиме.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура("Основание", ПараметрКоманды);
ОткрытьФорму("Обработка.ФормированиеАкта.Форма", ПараметрыФормы,
ПараметрыВыполненияКоманды.Источник);
КонецПроцедуры
Команда формы, добавленная программно
Иногда кнопку нужно добавить в одну конкретную форму, причём по условию. Это делают в ПриСозданииНаСервере:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НоваяКоманда = Команды.Добавить("ОбновитьЦены");
НоваяКоманда.Заголовок = "Обновить цены";
НоваяКоманда.Действие = "ОбновитьЦены";
Кнопка = Элементы.Добавить("КнопкаОбновитьЦены", Тип("КнопкаФормы"), КоманднаяПанель);
Кнопка.ИмяКоманды = "ОбновитьЦены";
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЦены(Команда)
// действие по кнопке
КонецПроцедуры
Процедура ОбновитьЦены с параметром Команда должна существовать в модуле формы. Иначе при нажатии будет ошибка «процедура не найдена».
Добавить команду в типовую конфигурацию без снятия с поддержки
Для БП, ЗУП, УТ и других типовых есть два безопасных способа.
Через расширение конфигурации
Расширения работают с платформы 8.3.6. Порядок:
Конфигурация → Расширения конфигурации→ «Добавить».- В дереве расширения создайте общую команду или заимствуйте объект и добавьте ему команду.
- Заимствуйте подсистему, в которую нужно встроить команду, и добавьте команду в её состав.
- Откройте командный интерфейс заимствованной подсистемы и отметьте видимость.
- Обновите расширение в базе (F7 в окне расширения) и перезапустите клиент.
Основная конфигурация остаётся на поддержке. Обновления типовой ставятся как обычно, расширение подключается поверх.
Через дополнительные обработки БСП
В конфигурациях на БСП внешнюю обработку
можно встроить в раздел вообще без Конфигуратора. Раздел Администрирование → Печатные формы, отчеты и обработки → «Дополнительные отчеты и обработки». Обработка должна содержать функцию СведенияОВнешнейОбработке() в модуле объекта — в ней описаны её команды. После регистрации укажите размещение — в каких разделах показывать команду.
| Способ | Когда подходит | Ограничения |
|---|---|---|
| Правка основной конфигурации | Своя, не типовая база | Типовая теряет «чистое» обновление |
| Расширение | Типовая на поддержке, нужна полноценная команда | Нужен Конфигуратор и права администратора |
| Дополнительная обработка БСП | Нужна кнопка без доступа к Конфигуратору | Только конфигурации на БСП, команда живёт во внешнем файле |
Кому видна команда: роли, права и функциональные опции
Команда добавлена, а пользователь её не видит — почти всегда дело в одном из фильтров.
- 🔐 Право на объект. Если у ролей пользователя нет права «Просмотр» на справочник или документ, стандартная команда его списка скрыта автоматически.
- 🔐 Право на общую команду. У общих команд в ролях тоже есть право «Просмотр». Новая команда не получает его сама — отметьте в нужных ролях.
- 👥 Видимость по ролям в редакторе интерфейса. В редакторе командного интерфейса подсистемы, кроме общей колонки «Видимость», есть колонки по каждой роли. Так команду можно показать бухгалтеру и скрыть кладовщику, не отнимая прав.
- ⚙️ Функциональные опции. Если объект входит в состав функциональной опции, которая выключена, его команды исчезают отовсюду.
Видимость по ролям — это удобство, а не защита. Если прав на объект нет, достаточно настроить роли. Если права есть, а кнопку нужно просто убрать с глаз, используйте колонку роли в редакторе.
Быстрая проверка: зайдите в базу под пользователем, у которого кнопки нет, и откройте Главное меню → Все функции. Если команды нет и там, проблема в правах или опциях. Если она в «Все функции» есть — значит, не настроена видимость в подсистеме. Сам пункт «Все функции» включается флагом «Отображать команду “Все функции”» в параметрах программы.
Как пользователь сам меняет состав разделов
Без Конфигуратора пользователь может перестроить интерфейс под себя. Изменения хранятся в его настройках и не затрагивают остальных.
- 📂 Состав и порядок разделов — через главное меню: пункт «Вид» → «Настройка панели разделов ». Раздел можно скрыть или переставить.
- 🧭 Команды внутри раздела — в открытом разделе нажмите кнопку настроек в правом верхнем углу панели функций. Там пункты «Настройка навигации» и «Настройка действий».
- 🧱 Положение панелей — главное меню → «Вид» → «Настройка панелей». Панели перетаскиваются мышью: разделы сверху или слева, панель открытых окон снизу.
- ⭐ Избранное — звёздочка в заголовке формы или в списке добавляет команду в «Избранное» на панели инструментов.
В окне настройки навигации слева — доступные команды, справа — выбранные. Пользователь может вернуть скрытые команды, но не может добавить то, на что нет прав.
Если разработчик добавил команду, а пользователь когда-то настраивал этот раздел, новая команда может не появиться. Его сохранённая настройка перекрывает видимость по умолчанию. Решение — в окне настройки нажать «Стандартные настройки» или добавить команду вручную.
Как администратору раздать настройку всем
В конфигурациях на БСП у администратора есть обработка копирования настроек: Администрирование → Настройки пользователей и прав → «Настройки пользователей». Там можно скопировать внешний вид одного пользователя другим или очистить настройки. Удобно после доработки: настройте эталонного пользователя и разошлите всем.
Группы, подменю и порядок команд
Длинный список из 30 команд в разделе никто не читает. Группируйте.
В панели навигации есть стандартные группы: «Важное», «Обычное», «См. также». Команды из «Важное» выводятся жирным и наверху. «См. также» — для второстепенных списков.
В панели действий — группы «Создать», «Отчеты», «Сервис». Команда создания документа логично живёт в «Создать», отчёт — в «Отчеты».
Для своей логики создайте группу команд: ветка Общие → Группы команд. Задайте ей «Категорию» (панель навигации, панель действий или командная панель формы) и «Представление». Потом укажите эту группу в свойстве «Группа» у общей команды.
Порядок внутри группы задают в редакторе командного интерфейса подсистемы перетаскиванием или стрелками.
Подсистема может быть вложенной. Подчинённая подсистема не создаёт новый раздел, а выводит свою группу команд в панели навигации родителя. Так удобно разбить большой раздел «Склад» на «Поступление», «Перемещения», «Инвентаризация».
Почему команда не появилась: разбор причин
Ещё одна неочевидная ловушка — параметризуемая команда, которая не появляется в форме документа. Проверьте «Тип параметра команды»: если там указана ссылка на другой документ или тип задан списком без нужного, платформа не найдёт подходящую форму. И убедитесь, что группа команды относится к категории «Командная панель формы», а не к панели навигации.