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