Своя команда на панели формы и в разделе 1С через Конфигуратор

· 9 мин

Содержание

Чтобы вывести кнопку на панель в 1С, создайте команду и поместите её на панель. Для кнопки в одной форме — команда формы, которую перетаскивают в Командную панель в редакторе формы. Для кнопки в разделе или в нескольких формах — общая команда со свойством Группа, например Панель действий.Сервис. В типовой конфигурации на поддержке всё это делают в расширении, чтобы не снимать базу с поддержки.

Порядок действий в Конфигураторе платформы 8.3 с интерфейсом «Такси» одинаков для Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и самописных конфигураций: это механизм платформы, а не конкретной программы.

Где будет кнопка и с чего начать в Конфигураторе

Сначала решите, где должна быть кнопка. От этого зависит тип команды.

Где нужна кнопкаЧто создаватьГде настраивается размещение
В одной форме документа или справочникаКоманда формыВкладки Элементы и Команды редактора формы
В формах списка и элемента одного объектаКоманда объекта (ветка Команды у справочника или документа)Свойство Группа команды
В нескольких объектах или в разделеОбщая команда (Общие → Общие команды)Свойство Группа и командный интерфейс подсистемы

Подготовка:

  1. 💾 Сделайте копию базы : Администрирование → Выгрузить информационную базу в Конфигураторе. Файл .dt займёт пару минут, а сэкономит восстановление.
  2. 🔍 Проверьте, на поддержке ли конфигурация. Откройте Конфигурация → Поддержка → Настройка поддержки. Если там «Объект поставщика не редактируется» — правьте через расширение.
  3. 📦 Для расширения: Конфигурация → Расширения конфигурации, кнопка добавления, задайте имя (например, МоиКнопки) и префикс. Префикс добавится к именам новых объектов и защитит их от совпадений с типовыми.
  4. 🧭 Найдите нужную форму. В дереве конфигурации есть строка поиска над деревом: введите имя объекта, например РеализацияТоваровУслуг, и раскройте ветку Формы.

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

Какая форма открывается у пользователя, видно в свойствах объекта: поля Основная форма объекта и Основная форма списка. Если форм несколько, ориентируйтесь на эти поля, а не на имя.

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

Разберём самый частый случай — кнопку в форме документа.

Команда формы

  1. Откройте форму двойным щелчком. В правой верхней части редактора есть вкладки Реквизиты, Команды, Параметры.
  2. На вкладке Команды выберите вложенную вкладку Команды формы и нажмите Добавить.
  3. Задайте свойства в палитре свойств:
    • Имя — латиницей или кириллицей без пробелов, например ЗаполнитьКомментарий;
    • Заголовок — текст на кнопке, его видит пользователь;
    • Подсказка — всплывает при наведении;
    • Картинка — по желанию, из библиотеки картинок;
    • Изменяет сохраняемые данные — ставьте, если команда меняет объект. Тогда в форме только для просмотра кнопка станет недоступна.
  4. В свойстве Действие нажмите кнопку с лупой. Конфигуратор спросит, где создать обработчик, и сгенерирует процедуру в модуле формы.

Код обработчика

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

&НаКлиенте
Процедура ЗаполнитьКомментарий(Команда)
	ЗаполнитьКомментарийНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьКомментарийНаСервере()
	Объект.Комментарий = "Проверено " + Формат(ТекущаяДатаСеанса(), "ДЛФ=D")
		+ ", " + Строка(ПараметрыСеанса.ТекущийПользователь);
КонецПроцедуры

Параметр сеанса ТекущийПользователь есть в типовых конфигурациях на БСП. В самописной базе замените его на ИмяПользователя().

Общая команда для раздела или нескольких форм

  1. В ветке Общие → Общие команды нажмите Добавить.
  2. Заполните Имя, Заголовок, Картинку.
  3. Если команда работает с выбранным объектом, задайте Тип параметра команды — например, ДокументСсылка.РеализацияТоваровУслуг. Кнопка появится только у форм этого типа.
  4. Откройте Модуль команды. Платформа создаст шаблон:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	// ПараметрКоманды — ссылка на объект или массив ссылок
	ОткрытьФорму("Обработка.МояОбработка.Форма",
		Новый Структура("Документ", ПараметрКоманды));
КонецПроцедуры

Если в свойстве Режим использования параметра стоит Множественный, в ПараметрКоманды придёт массив выделенных строк списка. Учитывайте это в коде.

В расширении не нужны аннотации &Перед, &После, &Вместо для новых команд. Они нужны только для перехвата существующих процедур типовой формы. Новый обработчик пишется как обычная процедура.

Размещаем кнопку на командной панели формы

Команда формы сама по себе на экране не появляется. Её надо вынести на панель.

  1. Перейдите на вкладку Элементы в левой верхней части редактора формы.
  2. Раскройте элемент Командная панель (в дереве он обычно первый).
  3. Перетащите команду мышью с вкладки Команды прямо в Командную панель. Внутри появится кнопка с тем же именем.
  4. Перетаскиванием внутри панели поставьте кнопку на нужное место. Порядок в дереве совпадает с порядком на экране слева направо.
  5. Посмотрите результат на вкладке предпросмотра внизу редактора — форма перерисуется сразу.

Полезные свойства самой кнопки:

СвойствоЧто даёт
ОтображениеКартинка, текст или картинка и текст
Только во всех действияхДа — кнопка спрячется в меню «Ещё», Нет — всегда на панели
Кнопка по умолчаниюСрабатывает по Ctrl+Enter
ВидОбычная кнопка или гиперссылка (для кнопок в группах формы)

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

Как общая команда попадает на панель

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

  • 📌 Командная панель формы.Важное — кнопка на панели форм объекта, к типу которого привязан параметр;
  • 📌 Командная панель формы.Создать на основании — в подменю ввода на основании;
  • 🗂 Панель действий.Создать, Панель действий.Отчеты, Панель действий.Сервис — в панели раздела;
  • 🧭 Панель навигации.Важное, Панель навигации.См. также — ссылки в навигации формы или раздела.

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

Видимость кнопки и права пользователей

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

Права через роли

Для общей команды право задаётся в роли: откройте роль, найдите команду в списке объектов и отметьте право Просмотр. Без него пользователь кнопку не увидит.

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

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

Видимость кодом

Когда условие сложнее роли — например, кнопка нужна только для проведённых документов, — управляйте видимостью в ПриСозданииНаСервере:

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

Имя элемента-кнопки отличается от имени команды. Платформа обычно добавляет префикс группы: ФормаЗаполнитьКомментарий. Точное имя смотрите в свойстве Имя на вкладке Элементы.

В расширении эту логику пишут в заимствованной форме через &После("ПриСозданииНаСервере"), чтобы не затереть типовой обработчик.

Функциональные опции

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

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

Проверка и отладка кнопки

После изменений их надо применить к базе.

  1. Сохраните конфигурацию или расширение и выполните Конфигурация → Обновить конфигурацию базы данных (клавиша F7).
  2. Для расширения проверьте флажок Активно в списке расширений и снимите Безопасный режим, если команда пишет файлы или вызывает внешние компоненты.
  3. Запустите отладку: Отладка → Начать отладку (F5). Откроется пользовательский режим, подключённый к Конфигуратору.
  4. Поставьте точку останова в обработчике: курсор на строку, F9.
  5. Нажмите кнопку в форме. Конфигуратор остановится на строке, значения переменных видны в Табло (Shift+F9 для вычисления выражения).

Обновление структуры базы в клиент-серверном варианте требует монопольного доступа, если меняются таблицы. Добавление команды структуру не меняет, но в расширении с новыми реквизитами — меняет. Проверяйте кнопку сначала в копии базы, а потом переносите в рабочую.

Что проверить вручную перед переносом:

Проверка кнопки перед переносом в рабочую базу
Выполнено: 0 / 5

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

Если кнопку нужно сделать без Конфигуратора

Не всегда стоит лезть в конфигурацию. Есть варианты проще.

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

Дополнительная обработка в БСП подключается в выбранные объекты. После регистрации её команда появляется в форме объекта в подменю заполнения или в отдельном подменю. Для бухгалтера без доступа к Конфигуратору это самый доступный путь.

Если пользователь просто потерял кнопку, начните с Ещё → Изменить форму → Стандартные настройки. Так возвращаются кнопки, которые пользователь скрыл сам.

Частые проблемы при добавлении кнопки

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

  • 🔁 После обновления типовой конфигурации кнопка пропала. Её добавили в основную конфигурацию, а при обновлении без объединения изменения затёрлись. Перенесите команду в расширение.
  • 🧩 Расширение не применилось у пользователя. Расширение действует для всей базы, но тонкий клиент кеширует метаданные. Попросите перезапустить 1С. В сложных случаях помогает запуск с ключом /ClearCache.
  • ⚠️ Ошибка о ненайденной процедуре при нажатии. Обработчик переименовали, а свойство Действие команды осталось со старым именем. Откройте свойство и выберите процедуру заново.
  • 🔒 Под администратором работает, под бухгалтером нет. Серверная процедура обращается к объекту, на который у роли нет прав. Добавьте права в свою роль расширения или вызывайте код в привилегированном режиме через общий модуль с флажком Привилегированный.
  • 🌐 В веб-клиенте ошибка. На клиенте вызывается метод, который доступен только на сервере. Вынесите его в процедуру с директивой &НаСервере.
Можно ли добавить кнопку в типовую форму, не снимая её с поддержки?
Да. Создайте расширение, добавьте в него форму командой «Добавить в расширение» и создайте команду уже в форме расширения. Основная конфигурация остаётся на поддержке.
Как поменять иконку на кнопке?
Укажите свойство «Картинка» у команды или у кнопки. Картинку выбирают из библиотеки стандартных картинок или из общих картинок конфигурации. Чтобы на кнопке была только иконка, поставьте «Отображение = Картинка».
Как назначить кнопке горячую клавишу?
У команды есть свойство «Сочетание клавиш». Выберите комбинацию, которая не занята в форме, иначе сработает стандартное действие.
Почему кнопка из расширения пропала после обновления релиза?
Если в новом релизе изменили или переименовали заимствованную форму, расширение может отключиться с ошибкой применения. Проверьте список расширений в «Администрирование → Печатные формы, отчёты и обработки → Расширения» и обновите заимствованную форму в Конфигураторе.
Чем команда формы отличается от общей команды?
Команда формы живёт в одной форме и видит её данные напрямую. Общая команда одна на всю конфигурацию: её можно показать в разделах и в формах разных объектов, а данные она получает через параметр команды.