Как вывести внешнюю обработку в виде отдельной кнопки на панель справочника или документа

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с типовыми конфигурациями «1С:Предприятие 8.3» на базе Библиотеки стандартных подсистем (БСП) часто возникает задача сделать работу пользователя максимально удобной. Одной из таких задач является вынос внешней обработки не просто в список дополнительных отчетов и обработок, а в виде прямой кнопки на командную панель формы. Рассмотрим подробно, как это можно реализовать, используя штатные механизмы и современные инструменты разработки.

Механизм «Заполнение формы» в БСП

Многие разработчики привыкли использовать вид обработки ЗаполнениеОбъекта. Однако, если мы проанализируем возможности БСП глубже, то обнаружим более гибкий вариант — ЗаполнениеФормы. Давайте разберем, в чем преимущество этого подхода.

Когда мы регистрируем обработку с видом ДополнительнаяОбработка.ВидДополнительнойОбработкиЗаполнениеФормы(), наша обработка получает доступ не только к данным объекта, которые уже записаны в базу данных, но и ко всем элементам текущей формы. Это позволяет нам работать с еще не сохраненными данными, изменять видимость кнопок или цвет элементов «на лету».

Посмотрим на пример реализации функции СведенияОВнешнейОбработке для такого случая:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидДополнительнойОбработкиЗаполнениеФормы();
    ПараметрыРегистрации.Наименование = "Моя быстрая команда";
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = "Выполнить действие на панели";
    НоваяКоманда.Идентификатор = "МояКомандаНаПанели";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
    НоваяКоманда.ПоказыватьОповещение = Истина;
    
    Возврат ПараметрыРегистрации;
КонецФункции

После регистрации такой обработки в справочнике Дополнительные отчеты и обработки, команда появится в меню «Заполнение» (часто обозначается иконкой синей стрелки). Хотя это еще не отдельная кнопка, это максимально близкое штатное размещение.

Выбор способа запуска команды

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

  1. ВызовКлиентскогоМетода: Код выполняется сразу на клиенте. Это позволяет открывать дополнительные диалоги, задавать вопросы пользователю или мгновенно менять данные на форме без перезагрузки всей страницы.
  2. ВызовСерверногоМетода: Система сама отправит запрос на сервер, выполнит алгоритм обработки данных и вернет результат. Это удобно для фоновых расчетов, когда пользователю достаточно увидеть краткое оповещение в углу экрана.
  3. ОткрытиеФормы: Этот вариант используется, если для работы вашей обработки требуется сложный ввод параметров в отдельном окне.

Использование расширений для вывода отдельной кнопки

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

Разберем алгоритм действий по шагам:

  1. Создаем новое расширение конфигурации.
  2. Добавляем в него форму нужного документа или справочника.
  3. В расширении создаем новую Команду и перетаскиваем ее на командную панель формы.
  4. В модуле команды прописываем вызов нашей внешней обработки.

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


&НаКлиенте
Процедура Упр_ВыполнитьВнешнююОбработку(Команда)
    
    // Получаем ссылку на внешнюю обработку по её наименованию или идентификатору
    СсылкаНаОбработку = ПолучитьСсылкуНаВнешнююОбработку("Моя быстрая команда");
    
    Если СсылкаНаОбработку.Пустая() Тогда
        Сообщить("Внешняя обработка не найдена в справочнике!");
        Возврат;
    КонецЕсли;
    
    // Формируем параметры для выполнения через БСП
    ПараметрыВыполнения = Новый Структура;
    ПараметрыВыполнения.Вставить("ДополнительнаяОбработкаСсылка", СсылкаНаОбработку);
    ПараметрыВыполнения.Вставить("ИдентификаторКоманды", "МояКомандаНаПанели");
    
    // Вызываем стандартный метод БСП для запуска команды
    ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКомандуИзФормыВнешнегоОбъекта(ПараметрыВыполнения, ЭтаФорма);
    
КонецПроцедуры

Программный перенос кнопки через «ПриСозданииНаСервере»

Существует еще один продвинутый способ, который можно реализовать через расширение. Вместо ручного создания кнопок для каждой формы, мы можем вмешаться в процедуру ПриСозданииНаСервере и программно переместить команды БСП из подменю «Отчеты» или «Заполнение» непосредственно в корень командной панели.

Для этого используется программный интерфейс модуля УправлениеКомандами. Мы можем проанализировать состав коллекции ПодключаемыеКоманды и изменить их родителя (группу размещения). Это позволяет автоматизировать процесс: если к документу подключена внешняя обработка с определенным тегом, она автоматически «выпрыгивает» из подменю на главную панель.

Настройка через пользовательский интерфейс «Изменить форму»

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

  1. Нажать кнопку Еще в правой части командной панели.
  2. Выбрать пункт Изменить форму....
  3. В открывшемся дереве элементов найти группу команд БСП (например, «Группа заполнение»).
  4. Попробовать перетащить конкретную команду выше в иерархии, прямо в «Командную панель».

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

Глобальные команды в разделах системы

Выясним ситуацию, когда кнопка нужна не внутри конкретной накладной, а в целом в разделе (например, в «Продажах»). В этом случае при регистрации обработки указывается вид ДополнительнаяОбработка. Она не привязывается к объекту, а появляется в списке команд раздела. Пользователь может нажать правую кнопку мыши на такой команде и выбрать Добавить в избранное или вынести ее на рабочий стол (начальную страницу), что также значительно ускоряет доступ.

Подводя итог, можно сказать: несмотря на то, что «одной галочкой» внешнюю обработку на панель не вывести, сочетание механизмов БСП и Расширений дает разработчику полный контроль над интерфейсом, позволяя создавать удобные и эргономичные решения для конечных пользователей.

← На главную