При работе с типовыми конфигурациями «1С:Предприятие 8.3» на базе Библиотеки стандартных подсистем (БСП) часто возникает задача сделать работу пользователя максимально удобной. Одной из таких задач является вынос внешней обработки не просто в список дополнительных отчетов и обработок, а в виде прямой кнопки на командную панель формы. Рассмотрим подробно, как это можно реализовать, используя штатные механизмы и современные инструменты разработки.
Многие разработчики привыкли использовать вид обработки ЗаполнениеОбъекта. Однако, если мы проанализируем возможности БСП глубже, то обнаружим более гибкий вариант — ЗаполнениеФормы. Давайте разберем, в чем преимущество этого подхода.
Когда мы регистрируем обработку с видом ДополнительнаяОбработка.ВидДополнительнойОбработкиЗаполнениеФормы(), наша обработка получает доступ не только к данным объекта, которые уже записаны в базу данных, но и ко всем элементам текущей формы. Это позволяет нам работать с еще не сохраненными данными, изменять видимость кнопок или цвет элементов «на лету».
Посмотрим на пример реализации функции СведенияОВнешнейОбработке для такого случая:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидДополнительнойОбработкиЗаполнениеФормы();
ПараметрыРегистрации.Наименование = "Моя быстрая команда";
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "Выполнить действие на панели";
НоваяКоманда.Идентификатор = "МояКомандаНаПанели";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
НоваяКоманда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
После регистрации такой обработки в справочнике Дополнительные отчеты и обработки, команда появится в меню «Заполнение» (часто обозначается иконкой синей стрелки). Хотя это еще не отдельная кнопка, это максимально близкое штатное размещение.
Для того чтобы создать у пользователя ощущение «штатной» кнопки, крайне важно правильно выбрать тип запуска в поле Использование. Проанализируем три основных варианта:
Если ваша цель — разместить кнопку именно в основном ряду команд (например, рядом с кнопкой «Провести и закрыть»), то без использования расширения конфигурации не обойтись. Этот метод является наиболее профессиональным, так как он не снимает конфигурацию с поддержки и позволяет сохранить «чистоту» типового решения.
Разберем алгоритм действий по шагам:
Команду и перетаскиваем ее на командную панель формы.Проанализируем пример кода для такой команды в расширении. Нам нужно найти внешнюю обработку в справочнике и программно её вызвать:
&НаКлиенте
Процедура Упр_ВыполнитьВнешнююОбработку(Команда)
// Получаем ссылку на внешнюю обработку по её наименованию или идентификатору
СсылкаНаОбработку = ПолучитьСсылкуНаВнешнююОбработку("Моя быстрая команда");
Если СсылкаНаОбработку.Пустая() Тогда
Сообщить("Внешняя обработка не найдена в справочнике!");
Возврат;
КонецЕсли;
// Формируем параметры для выполнения через БСП
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ДополнительнаяОбработкаСсылка", СсылкаНаОбработку);
ПараметрыВыполнения.Вставить("ИдентификаторКоманды", "МояКомандаНаПанели");
// Вызываем стандартный метод БСП для запуска команды
ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКомандуИзФормыВнешнегоОбъекта(ПараметрыВыполнения, ЭтаФорма);
КонецПроцедуры
Существует еще один продвинутый способ, который можно реализовать через расширение. Вместо ручного создания кнопок для каждой формы, мы можем вмешаться в процедуру ПриСозданииНаСервере и программно переместить команды БСП из подменю «Отчеты» или «Заполнение» непосредственно в корень командной панели.
Для этого используется программный интерфейс модуля УправлениеКомандами. Мы можем проанализировать состав коллекции ПодключаемыеКоманды и изменить их родителя (группу размещения). Это позволяет автоматизировать процесс: если к документу подключена внешняя обработка с определенным тегом, она автоматически «выпрыгивает» из подменю на главную панель.
Иногда полезно знать, что пользователь может самостоятельно настроить свое рабочее пространство. Если команда внешней обработки уже зарегистрирована в системе и доступна в одном из подменю формы, можно попробовать следующий путь:
Важно: Стоит учитывать, что в современных версиях БСП многие подключаемые команды создаются динамически при открытии формы, и платформа может ограничивать их перемещение через стандартный редактор формы. В этом случае единственным надежным вариантом остается использование расширения.
Выясним ситуацию, когда кнопка нужна не внутри конкретной накладной, а в целом в разделе (например, в «Продажах»). В этом случае при регистрации обработки указывается вид ДополнительнаяОбработка. Она не привязывается к объекту, а появляется в списке команд раздела. Пользователь может нажать правую кнопку мыши на такой команде и выбрать Добавить в избранное или вынести ее на рабочий стол (начальную страницу), что также значительно ускоряет доступ.
Подводя итог, можно сказать: несмотря на то, что «одной галочкой» внешнюю обработку на панель не вывести, сочетание механизмов БСП и Расширений дает разработчику полный контроль над интерфейсом, позволяя создавать удобные и эргономичные решения для конечных пользователей.