Где панель инструментов в 1С 8.3 и как её настроить под себя

· 9 мин

Содержание

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

Ниже порядок такой: сначала что настраивается без программиста, потом что делается в Конфигураторе, затем динамика через код. Описан интерфейс «Такси» платформы 8.3.2x.

Из чего состоит интерфейс: четыре объекта вместо одной панели

Путаница возникает из-за слова «панель». В 1С их несколько, и настраиваются они в разных местах.

ОбъектГде виденКто меняет
Командная панель формыНад списком, внутри документа, справочника, отчётаПользователь (режим изменения формы) и разработчик
Панель действийВерхняя строка окна, справа от поискаПользователь
Панель разделовСлева или сверху, крупные пункты («Продажи», «Банк и касса»)Пользователь и разработчик (подсистемы)
Панель навигации формыСсылки «Перейти» у документа или справочникаПользователь и разработчик

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

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

Настройка командной панели формы без разработчика

Пользователь с обычными правами может перестроить любую управляемую форму.

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

Здесь же можно сменить подпись кнопки, выбрать «Только значок» вместо текста и вынести часто нужную команду из меню Ещё на видное место. Порядок кнопок меняется перетаскиванием или стрелками.

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

Сбросить результат можно в том же окне: ищите команду со словом «Стандартная» или «Восстановить» (в окне настройки формы она называется Установить стандартные настройки). После сброса форма вернётся к виду, который задал разработчик.

Что делать, если пункта Изменить форму… нет? Возможны два варианта:

  • у пользователя нет права «Изменение форм» (в типовых конфигурациях оно входит в ряд ролей, но в урезанных профилях его могут снять);
  • форма «обычная» — такие остались в старых самописных конфигурациях и в них панель настраивается иначе.

Панель действий и панель разделов: что настраивает сам пользователь

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

  • Настройка панели разделов… — выберите, какие разделы показывать и в каком порядке. Лишнее переносится в левый список, нужное в правый, порядок задаёте кнопками «Вверх» и «Вниз».
  • Настройка навигации… — состав команд навигации в открытых формах (ссылки «Перейти»).
  • Настройка панели действий… — какие команды вынесены в верхнюю панель. Здесь добавляют создание нужных документов и открытие часто используемых отчётов.
  • Настройка начальной страницы… — окна, которые открываются при старте.

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

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

Разработка панели в Конфигураторе

Теперь сторона разработчика. Конфигуратор запускают с правами администратора базы, а лучше работать в копии базы.

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

  1. Откройте дерево конфигурации и найдите объект: документ, справочник, отчёт или общую форму.
  2. Раскройте ветку Формы, дважды щёлкните по нужной форме.
  3. В редакторе управляемой формы слева три закладки: Элементы, Реквизиты, Команды. Нужна Элементы, там в корне стоит группа Командная панель (имя по умолчанию — ФормаКоманднаяПанель).
  4. Правая кнопка по группе → Добавить → Кнопка. У кнопки в свойствах задайте Имя команды — выберите из списка существующую команду или создайте новую.
  5. Для новой команды перейдите на закладку Команды, нажмите Добавить, укажите имя и подпись. В свойстве Действие создайте процедуру: Конфигуратор сам добавит заготовку в модуль формы.
  6. Подберите внешний вид кнопки: Отображение (текст, картинка, оба варианта) и Картинка.

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

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

Своя команда и её привязка к объекту

У команды есть свойство Использование. Оно определяет, когда доступна кнопка. Если команда нужна в списке, но не в карточке, оставьте её только в форме списка. Для команды с параметром (например, выполнение над выделенными элементами) задайте Параметр команды — тип объектов, к которым она применяется. Тогда кнопка активна только при выделенной строке.

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

Командный интерфейс разделов и подсистем

Панель разделов собирается из подсистем. Каждая подсистема — это раздел верхнего уровня; вложенные подсистемы становятся группами внутри него.

Чтобы вывести команду в нужный раздел:

  1. В дереве конфигурации откройте подсистему, нажмите Командный интерфейс.
  2. Найдите нужную команду в списке и поставьте у неё галочку видимости.
  3. Размещение по группам («Панель навигации — Важное», «Панель действий — Создать») выбирается у самой команды в свойстве Группа.

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

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

Кнопка в типовой форме без правки типовой конфигурации

Самая частая задача практика: добавить свою кнопку в форму документа типовой Бухгалтерии, ЗУП или Управления торговлей. Править типовую форму напрямую не стоит: при каждом обновлении релиза придётся заново сравнивать и объединять изменения.

Правильный путь такой:

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

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

Отдельно запомните про имена. Элементы формы в расширении должны называться так, чтобы не пересекаться с типовыми: добавьте общий префикс, например Доп_. Тогда после обновления типового релиза нет риска, что в типовой форме появится элемент с тем же именем.

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

Бывает, что статической раскладки мало. Кнопка нужна не всем, не всегда или зависит от данных. Для этого есть три приёма.

Видимость и доступность элементов

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

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

	// Группа кнопок видна только пользователям с нужной ролью
	Элементы.ГруппаДопОперации.Видимость = РольДоступна("БухгалтерПолныеПрава");

	// Кнопка доступна, пока документ не проведён
	Элементы.ФормаПровести.Доступность = Не Объект.Проведен;

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

РольДоступна вызывается без явной привязки к пользователю, она смотрит на текущего. Имя роли подставьте из своей конфигурации.

Чтобы кнопка менялась уже после открытия формы, например по выбору в поле, используйте обработчик на клиенте:

&НаКлиенте
Процедура ВидОперацииПриИзменении(Элемент)
	Элементы.КнопкаВыгрузить.Видимость = (Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОпераций.Реализация"));
КонецПроцедуры

Имя перечисления здесь примерное, подставьте своё.

Создание кнопки программно

Это нужно, когда состав команд неизвестен заранее: например, набор отчётов зависит от настроек.

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

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

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

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

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

Обратите внимание на правила: процедура, указанная в Действие, должна быть в модуле формы и объявлена с директивой &НаКлиенте. Если её нет, форма откроется, а нажатие кнопки приведёт к ошибке. Добавлять элементы можно только при создании формы, пока она не открыта на экране.

Зависимость от прав и функциональных опций

Третий приём — не писать код вовсе. В свойствах кнопки и команды есть Функциональные опции: когда опция выключена, кнопка пропадает автоматически. Для проверки права на объект подходит ПравоДоступа("Изменение", Метаданные.Документы.ИмяДокумента), а в ролях то же достигается без кода, через права на объект. Если у пользователя нет права, платформа сама скроет команду создания.

Проверка результата и распространённые затыки

Кнопка добавлена, а на экране её нет — проверьте по порядку.

  • ❗ Не обновлена конфигурация базы данных. Сохранение в Конфигураторе недостаточно; пользовательский сеанс нужно перезапустить.
  • ❗ У пользователя есть собственная настройка формы, которая затеняет изменения. Сбросьте настройки формы: в режиме изменения формы выберите установку стандартных настроек.
  • ❗ Кнопка спрятана в Ещё, потому что не помещается. Уберите лишние кнопки или увеличьте ширину окна.
  • ❗ Не хватает прав: сработали функциональная опция или роль, кнопку просто не видно.
  • ❗ Команда есть, но не привязана к нужной подсистеме или группе, и поэтому не появилась в командном интерфейсе раздела.

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

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

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