Кнопка на панели в 1С: настройка пользователем, Конфигуратор и код

· 9 мин

Содержание

Добавить кнопку в 1С на панель можно без программиста: откройте нужную форму, нажмите Еще → Изменить форму… и перенесите команду в командную панель. Это личная настройка, она хранится на вашего пользователя. Если кнопки нет в списке команд вообще, её создаёт разработчик в Конфигураторе или в расширении.

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

Описание относится к платформе 8.3 с интерфейсом «Такси» и управляемыми формами. Если у вас старый обычный интерфейс, настройка устроена иначе, и этот текст к нему не подходит.

Что именно вам нужно?

Панель действий и навигации: настройка без программиста

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

Окно настройки выглядит одинаково: слева список доступных команд, справа выбранные. Между ними стрелки.

Порядок работы:

  1. Откройте раздел, в котором хотите изменить панель, например «Продажи».
  2. Откройте настройку панели действий или навигации.
  3. Выделите команду слева и нажмите стрелку вправо.
  4. Стрелками «Вверх» и «Вниз» поставьте её на нужное место.
  5. Нажмите «ОК».

Команда сразу появится в панели раздела. Настройка относится к вашему пользователю и не затрагивает коллег.

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

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

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

Панель разделов настраивается отдельно. Можно скрыть неиспользуемые разделы, поменять порядок и оставить только те, в которых работаете каждый день. Бухгалтеру по зарплате нет смысла листать «Производство», а кладовщику «Банк и касса».

Командная панель формы: «Изменить форму»

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

  1. Откройте нужную форму: список документов, справочник или сам документ.
  2. Нажмите кнопку Еще в правом верхнем углу формы.
  3. Выберите Изменить форму….
  4. В открывшемся окне найдите командную панель и нажмите «Добавить» (или перенесите команду из списка доступных).
  5. Выберите команду из перечня и подтвердите.

В окне видно дерево элементов формы и список команд, которые можно на неё поместить. Здесь же можно скрыть кнопки, которыми вы не пользуетесь, и убрать лишние колонки.

⚠️ Настройка формы личная. Пользователь-коллега не увидит ваших кнопок. Чтобы раздать настройку всем, администратор сохраняет её как общую (в окне настройки есть пункт про использование настроек другими пользователями) либо разработчик правит форму в конфигурации.

Чего в этом списке не будет

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

Новая команда и кнопка в Конфигураторе

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

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

Пример обработчика, который сообщает пользователю информацию:

&НаКлиенте
Процедура ПроверитьКонтрагента(Команда)
	Сообщить("Проверка запущена для: " + Объект.Контрагент);
КонецПроцедуры

Реальные задачи сложнее: серверный вызов, открытие формы, запись данных. Но принцип тот же: действие живёт в процедуре, на неё указывает команда, а команду показывает кнопка.

Где ещё размещают кнопку

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

⚠️ Правка типовой конфигурации на поддержке меняет её состав. Каждое обновление потом придётся объединять вручную. Для типовых решений лучше второй путь, расширение.

Расширение конфигурации: кнопка без снятия с поддержки

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

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

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

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

СпособКогда подходитРиски
Настройка пользователемНужная команда есть, надо вынестиТолько для вас; слетает при сбросе настроек
Конфигуратор (своя конфигурация)Конфигурация написана вамиНужен доступ разработчика
Конфигуратор (типовая на поддержке)Почти никогдаОбъединение при каждом обновлении
РасширениеТиповая форма, новая кнопкаНужно следить за совместимостью при обновлении

Заимствуйте только то, что собираетесь менять. Каждый заимствованный объект расширение обязано поддерживать согласованным с основной конфигурацией.

Показ и скрытие кнопок кодом

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Элементы.ПроверитьКонтрагента.Видимость = РольДоступна("Бухгалтер");
КонецПроцедуры

Здесь ПроверитьКонтрагента — имя кнопки на форме. Для пользователей без роли кнопка просто не отрисуется.

Видимость и доступность — разные свойства. Скрытая кнопка не видна вообще. Недоступная видна серой и не нажимается. Для подсказки «почему нельзя» часто лучше недоступность.

Динамическое добавление

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	НоваяКоманда = Команды.Добавить("СформироватьОтчет");
	НоваяКоманда.Заголовок = "Сформировать отчёт";
	НоваяКоманда.Действие = "СформироватьОтчетВыполнить";

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

&НаКлиенте
Процедура СформироватьОтчетВыполнить(Команда)
	Сообщить("Отчёт формируется");
КонецПроцедуры

Имя ФормаКоманднаяПанель — стандартное имя автоматической командной панели. Если вы переименовали группу или отключили автозаполнение, используйте своё имя.

Динамические элементы живут только пока открыта форма. Платформа не запоминает их в настройках пользователя.

Права и функциональные опции

Видимостью управляют и без кода. Команда не покажется, если у пользователя нет права на объект. Её скроет и выключенная функциональная опция, например отключённый учёт, к которому команда относится. Эти механизмы надёжнее проверки роли в коде, потому что работают одинаково в любой форме.

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

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

Десять кнопок в ряд никто не читает. Несколько правил, которые держат панель в порядке.

  • Главное действие формы ставьте первым и оформляйте как кнопку по умолчанию. В свойствах кнопки это отдельный флажок.
  • Редкие команды собирайте в группу-подменю. Заголовок группы короткий: «Печать», «Проверки», «Выгрузка».
  • Для часто нажимаемой кнопки задайте картинку и подсказку. Значок ускоряет поиск взглядом, а подсказка объясняет, что произойдёт, до нажатия.
  • Название пишите глаголом: «Проверить контрагента», а не «Проверка».
  • Кнопку, которая меняет данные, не ставьте рядом с безобидной. Случайный клик по соседней команде стоит дороже, чем лишний шаг мышью.

Как передать настройку коллегам

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

  1. Администратор сохраняет настройку как общую в окне настройки формы, после чего её видят остальные.
  2. Разработчик фиксирует нужное в самой форме (конфигурация или расширение), и кнопка появляется у всех, у кого есть права на команду.

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

Когда лучше не добавлять кнопку вовсе

Если действие нужно раз в месяц, отдельная кнопка только занимает место. Для такого случая подойдёт команда из меню Еще или отчёт в разделе. Если действие нужно только одной роли, делайте кнопку видимой лишь для неё. А если требуется «как в соседней базе», сначала выясните, какая именно команда там стоит: часто нужная кнопка уже есть, просто скрыта чьей-то личной настройкой.

Что проверить после добавления

Мелочи, из-за которых «не работает » на пустом месте:

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

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

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

Можно ли добавить кнопку, которой нет в списке команд?
Нет, без разработки не получится. Пользовательская настройка переносит только существующие команды. Новое действие создаёт программист через команду формы.
Настройка панели слетела, почему?
Вероятно, сброшены настройки пользователя или форма изменилась после обновления. Их можно повторить за пару минут. Администратор способен сохранить общую настройку для всех.
Видят ли мои кнопки коллеги?
Нет, настройка через «Изменить форму» личная. Остальным она не передаётся без отдельной операции администратора.
Нужна ли монопольная работа, чтобы добавить кнопку?
Для расширения достаточно обычного обновления конфигурации базы данных. Если платформа просит монопольный доступ, это связано с изменением структуры данных, а не с кнопкой.
Расширение или правка конфигурации?
Для типовой конфигурации на поддержке выбирайте расширение: обновления не затронут вашу кнопку. Правку основной конфигурации оставьте для собственных разработок.