При разработке внешних печатных форм (ВПФ) для конфигураций на базе «Библиотеки стандартных подсистем» (1С:Управление торговлей 11, ERP, КА 2, 1С:Бухгалтерия) разработчики часто сталкиваются с требованием пользователей разместить новую печатную форму в самом начале выпадающего списка кнопки Печать. Однако простая смена наименования или добавление префиксов (например, «ААА_...») не поднимает внешнюю обработку выше встроенных печатных форм документа. Разберем архитектурные причины такого поведения БСП и рассмотрим рабочие способы решения этой задачи.
Проанализируем механизм формирования выпадающего подменю Печать в БСП. Список доступных команд печати формируется в виде таблицы значений с помощью функции УправлениеПечатью.СоздатьКоллекциюКомандПечати(). У каждой зарегистрированной команды присутствуют два ключевых реквизита: числовой Порядок (числовое значение веса от 1 до 100) и строковое Представление.
Сортировка команд в выпадающем меню выполняется платформой в два строгих этапа:
Порядок (чем меньше число, тем выше команда в списке).Представление (алфавитная сортировка применяется исключительно между командами с одинаковым числовым значением поля Порядок).В модулях менеджеров объектов конфигурации (например, документа РеализацияТоваровУслуг) разработчики типовых решений задают стандартным печатным формам приоритет КомандаПечати.Порядок = 10 (или в диапазоне от 1 до 20). При подключении же внешней обработки через подсистему «Дополнительные отчеты и обработки» БСП принудительно и автоматически назначает командам ВПФ значение Порядок = 50.
Важно: в экспортной функции СведенияОВнешнейОбработке() таблицы команд не предусмотрена колонка Порядок — даже если добавить её вручную, подсистема БСП перезапишет значение на дефолтное (50). По этой причине любая внешняя обработка всегда будет отображаться ниже типовых встроенных команд документа.
Наиболее надежный и правильный способ без снятия основной конфигурации с поддержки — использование механизма расширений. Рассмотрим, как переопределить порядок следования команд перед их выводом пользователю.
Подключим в расширение общий модуль УправлениеПечатьюПереопределяемый и перехватим процедуру ПередДобавлениемКомандПечати с помощью аннотации &После:
&После("ПередДобавлениемКомандПечати")
Процедура Расш1_ПередДобавлениемКомандПечати(ОбъектыНазначения, КомандыПечати)
Для Каждого СтрокаКоманды Из КомандыПечати Цикл
// Ищем внешнюю печатную форму по идентификатору команды или части представления
Если СтрокаКоманды.Идентификатор = "МояВнешняяПечатнаяФорма" Тогда
// Устанавливаем минимальный вес, чтобы поднять команду на самый верх
СтрокаКоманды.Порядок = 1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Благодаря этому перехвату команда внешней печатной формы получит значение Порядок = 1 и выстроится на первом месте в меню печати перед встроенными формами конфигурации.
Если нет жесткой необходимости использовать именно файл внешней обработки .epf через справочник «Дополнительные отчеты и обработки», можно внедрить печатную форму напрямую в расширение:
РеализацияТоваровУслуг) в расширение конфигурации.&После("ДобавитьКомандыПечати") описываем добавление новой команды печати.КомандаПечати.Порядок = 1.Этот подход делает печатную форму полноправным типовым объектом метаданных и гарантирует ее стабильное положение в интерфейсе.
Если пользователям требуется максимальная скорость работы с конкретной формой, постоянное открытие подменю Печать и поиск пункта даже в начале списка создают лишние клики. Разберем альтернативное решение:
Если задача заключается не только в подъеме формы, но и в расчистке перегруженного интерфейса от лишних бланков, воспользуемся штатным функционалом БСП:
Реализация товаров и услуг.Штатная настройка видимости не меняет числовой Порядок напрямую, однако скрытие лишних команд сокращает список и делает нужные внешние формы легко доступными без скроллинга меню.