Где панель инструментов в 1С 8.3 и как её настроить под себя
Содержание
В управляемом интерфейсе 1С 8.3 отдельной «панели инструментов» из старых версий нет. Её роль выполняют три объекта: командная панель формы (кнопки над списком или документом), панель действий в верхней части окна и панель разделов слева. Пользователь меняет их из программы, а разработчик задаёт состав в Конфигураторе или собирает из кода.
Ниже порядок такой: сначала что настраивается без программиста, потом что делается в Конфигураторе, затем динамика через код. Описан интерфейс «Такси» платформы 8.3.2x.
Из чего состоит интерфейс: четыре объекта вместо одной панели
Путаница возникает из-за слова «панель». В 1С их несколько, и настраиваются они в разных местах.
| Объект | Где виден | Кто меняет |
|---|---|---|
| Командная панель формы | Над списком, внутри документа, справочника, отчёта | Пользователь (режим изменения формы) и разработчик |
| Панель действий | Верхняя строка окна, справа от поиска | Пользователь |
| Панель разделов | Слева или сверху, крупные пункты («Продажи», «Банк и касса») | Пользователь и разработчик (подсистемы) |
| Панель навигации формы | Ссылки «Перейти» у документа или справочника | Пользователь и разработчик |
Кнопки в панели формы привязаны к командам. Команда — это действие (открыть отчёт, провести документ , выполнить обработку), а кнопка — её изображение на форме. Одну команду можно вывести кнопкой в нескольких местах, и менять придётся только место размещения.
Ещё одно различие, которое сильно упрощает жизнь: настройки пользователя хранятся в его профиле и действуют только для него. Изменения разработчика входят в конфигурацию и видны всем после обновления.
Настройка командной панели формы без разработчика
Пользователь с обычными правами может перестроить любую управляемую форму.
- Откройте нужную форму: список документов, карточку справочника, документ.
- В командной панели нажмите кнопку
Ещё, а в ней пунктИзменить форму…. В некоторых формах этот же пункт есть в меню по значку шестерёнки или стрелки у заголовка. - Откроется окно настройки с деревом элементов формы. Отметьте галочками, что показывать, и перетащите нужное на новое место.
- Выделите группу «Командная панель» и добавьте команды: кнопка
Добавитьпредложит список доступных команд формы. Лишние кнопки снимите галочкой. - Нажмите
OK. Форма перерисуется сразу.
Здесь же можно сменить подпись кнопки, выбрать «Только значок» вместо текста и вынести часто нужную команду из меню Ещё на видное место. Порядок кнопок меняется перетаскиванием или стрелками.
Правка действует только на конкретную форму. Если вам нужна одна и та же кнопка в списке и в карточке, добавлять её придётся в каждой форме отдельно.
Сбросить результат можно в том же окне: ищите команду со словом «Стандартная» или «Восстановить» (в окне настройки формы она называется Установить стандартные настройки). После сброса форма вернётся к виду, который задал разработчик.
Что делать, если пункта Изменить форму… нет? Возможны два варианта:
- у пользователя нет права «Изменение форм» (в типовых конфигурациях оно входит в ряд ролей, но в урезанных профилях его могут снять);
- форма «обычная» — такие остались в старых самописных конфигурациях и в них панель настраивается иначе.
Панель действий и панель разделов: что настраивает сам пользователь
Панель действий (быстрые команды наверху) и панель разделов настраиваются через главное меню — кнопку с тремя полосками в левом верхнем углу, пункт Вид.
Настройка панели разделов…— выберите, какие разделы показывать и в каком порядке. Лишнее переносится в левый список, нужное в правый, порядок задаёте кнопками «Вверх» и «Вниз».Настройка навигации…— состав команд навигации в открытых формах (ссылки «Перейти»).Настройка панели действий…— какие команды вынесены в верхнюю панель. Здесь добавляют создание нужных документов и открытие часто используемых отчётов.Настройка начальной страницы…— окна, которые открываются при старте.
Если какого-то из этих пунктов нет, конфигурация или текущий вариант интерфейса его не предусматривает. Тогда настройка делается только через режим изменения формы.
Для новичка самый полезный шаг: вынести в панель действий два-три документа, которые заводятся каждый день. Время на поиск пунктов меню уходит заметное, а панель всегда перед глазами.
Разработка панели в Конфигураторе
Теперь сторона разработчика. Конфигуратор запускают с правами администратора базы, а лучше работать в копии базы.
Порядок действий:
- Откройте дерево конфигурации и найдите объект: документ, справочник, отчёт или общую форму.
- Раскройте ветку
Формы, дважды щёлкните по нужной форме. - В редакторе управляемой формы слева три закладки:
Элементы,Реквизиты,Команды. НужнаЭлементы, там в корне стоит группаКомандная панель(имя по умолчанию —ФормаКоманднаяПанель). - Правая кнопка по группе →
Добавить→Кнопка. У кнопки в свойствах задайтеИмя команды— выберите из списка существующую команду или создайте новую. - Для новой команды перейдите на закладку
Команды, нажмитеДобавить, укажите имя и подпись. В свойствеДействиесоздайте процедуру: Конфигуратор сам добавит заготовку в модуль формы. - Подберите внешний вид кнопки:
Отображение(текст, картинка, оба варианта) иКартинка.
Для группировки используйте не отдельные кнопки, а «Подменю» и «Группу — командную панель». Если кнопок больше пяти-шести, часть лучше убрать в подменю: широкая панель обрезается на узких мониторах, и лишнее прячется под Ещё.
После правки формы в Конфигураторе ничего не заработает у пользователей, пока вы не сохраните конфигурацию и не обновите конфигурацию базы данных (клавиша F7, обновление конфигурации БД). При работе с рабочей базой делайте это вне часов работы: обновление структуры требует монопольного доступа.
Своя команда и её привязка к объекту
У команды есть свойство Использование. Оно определяет, когда доступна кнопка. Если команда нужна в списке, но не в карточке, оставьте её только в форме списка. Для команды с параметром (например, выполнение над выделенными элементами) задайте Параметр команды — тип объектов, к которым она применяется. Тогда кнопка активна только при выделенной строке.
Отдельный случай: команды из общих команд конфигурации. Это команды объекта Общие команды, они показываются в панели навигации и командном интерфейсе разделов, поэтому один раз созданные, доступны сразу во многих объектах.
Командный интерфейс разделов и подсистем
Панель разделов собирается из подсистем. Каждая подсистема — это раздел верхнего уровня; вложенные подсистемы становятся группами внутри него.
Чтобы вывести команду в нужный раздел:
- В дереве конфигурации откройте подсистему, нажмите
Командный интерфейс. - Найдите нужную команду в списке и поставьте у неё галочку видимости.
- Размещение по группам («Панель навигации
— Важное», «Панель действий — Создать») выбирается у самой команды в свойстве
Группа.
Так добавляют создание типового документа в панель действий раздела или ссылку на отчёт в блок «Важное». Для пользователя эффект тот же, что от самостоятельной настройки панели действий, но готов у всех сразу.
Если нужна одна команда для разных ролей, не делайте разные подсистемы. Гораздо проще оставить её в одной подсистеме и ограничить видимость ролями или функциональными опциями.
Кнопка в типовой форме без правки типовой конфигурации
Самая частая задача практика: добавить свою кнопку в форму документа типовой Бухгалтерии, ЗУП или Управления торговлей. Править типовую форму напрямую не стоит: при каждом обновлении релиза придётся заново сравнивать и объединять изменения.
Правильный путь такой:
- В Конфигураторе создайте расширение конфигурации
(
Конфигурация → Расширения конфигурации). Расширения появились в платформе 8.3.6, на современных версиях доступны везде. - Добавьте в расширение нужную форму через команду
Взять объект в расширение(контекстное меню формы в основной конфигурации). - В расширенной форме добавьте команду и кнопку так же, как в обычной разработке. Процедуру действия пишите в модуле формы расширения.
- Загрузите расширение в базу и отдельным шагом выполните
Обновить конфигурацию БД. Это два разных действия: сама загрузка.cfeничего не меняет в структуре.
Сразу получаете два плюса: типовая конфигурация остаётся на поддержке, а ваши кнопки переживают обновление. Если нужно, расширение отключается одной галочкой в списке расширений, и форма возвращается к исходному виду. Это удобный способ проверить, что именно сломала доработка.
Отдельно запомните про имена. Элементы формы в расширении должны называться так, чтобы не пересекаться с типовыми: добавьте общий префикс, например Доп_. Тогда после обновления типового релиза нет риска, что в типовой форме появится элемент с тем же именем.
Динамическое управление: показать, скрыть, добавить кнопку из кода
Бывает, что статической раскладки мало. Кнопка нужна не всем, не всегда или зависит от данных. Для этого есть три приёма.
Видимость и доступность элементов
Управлять можно любой кнопкой или группой. Лучше всего делать это на сервере при открытии формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Группа кнопок видна только пользователям с нужной ролью
Элементы.ГруппаДопОперации.Видимость = РольДоступна("БухгалтерПолныеПрава");
// Кнопка доступна, пока документ не проведён
Элементы.ФормаПровести.Доступность = Не Объект.Проведен;
КонецПроцедуры
РольДоступна вызывается без явной привязки к пользователю, она смотрит на текущего. Имя роли подставьте из своей конфигурации.
Чтобы кнопка менялась уже после открытия формы, например по выбору в поле, используйте обработчик на клиенте:
&НаКлиенте
Процедура ВидОперацииПриИзменении(Элемент)
Элементы.КнопкаВыгрузить.Видимость = (Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОпераций.Реализация"));
КонецПроцедуры
Имя перечисления здесь примерное, подставьте своё.
Создание кнопки программно
Это нужно, когда состав команд неизвестен заранее: например, набор отчётов зависит от настроек.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Команда = Команды.Добавить("ПересчитатьИтоги");
Команда.Действие = "ПересчитатьИтогиОбработка";
Команда.Заголовок = "Пересчитать итоги";
Кнопка = Элементы.Добавить("КнопкаПересчитатьИтоги", Тип("КнопкаФормы"), Элементы.ФормаКоманднаяПанель);
Кнопка.ИмяКоманды = "ПересчитатьИтоги";
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьИтогиОбработка(Команда)
// действие кнопки
КонецПроцедуры
Обратите внимание на правила: процедура, указанная в Действие, должна быть в модуле формы и объявлена с директивой &НаКлиенте. Если её нет, форма откроется, а нажатие кнопки приведёт к ошибке. Добавлять элементы можно только при создании формы, пока она не открыта на экране.
Зависимость от прав и функциональных опций
Третий приём — не писать код вовсе. В свойствах кнопки и команды есть Функциональные опции: когда опция выключена, кнопка пропадает автоматически. Для проверки права на объект подходит ПравоДоступа("Изменение", Метаданные.Документы.ИмяДокумента), а в ролях то же достигается без кода, через права на объект. Если у пользователя нет права, платформа сама скроет команду создания.
Проверка результата и распространённые затыки
Кнопка добавлена, а на экране её нет — проверьте по порядку.
- ❗ Не обновлена конфигурация базы данных. Сохранение в Конфигураторе недостаточно; пользовательский сеанс нужно перезапустить.
- ❗ У пользователя есть собственная настройка формы, которая затеняет изменения. Сбросьте настройки формы: в режиме изменения формы выберите установку стандартных настроек.
- ❗ Кнопка спрятана в
Ещё, потому что не помещается. Уберите лишние кнопки или увеличьте ширину окна. - ❗ Не хватает прав: сработали функциональная опция или роль, кнопку просто не видно.
- ❗ Команда есть, но не привязана к нужной подсистеме или группе, и поэтому не появилась в командном интерфейсе раздела.
Если после обновления типовой конфигурации кнопка, которую вы вносили в форму, пропала, причина обычно в обновлении формы. Правки в типовой форме при обновлении объединяются с новым вариантом, и спорные места разрешаются в пользу поставщика. Для долгоживущих доработок лучше использовать расширение конфигурации: форма остаётся типовой, а ваши кнопки живут в расширении.
Частые вопросы
Можно ли вернуть кнопку, которую случайно убрал?
Почему мои правки панели не видят коллеги?
Можно ли поменять иконку кнопки?
Картинка у кнопки или команды: выбор из библиотеки картинок или своя из общих картинок конфигурации.