Как изменить порядок сортировки внешних печатных форм в меню «Печать»?

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

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

Почему не удается задать порядок через «Сведения о внешней обработке»?

Важно понимать архитектуру подсистемы печати, реализованной в Библиотеке стандартных подсистем (БСП). Система формирует список команд, объединяя два источника:

  1. Типовые команды: Они заложены разработчиком 1С непосредственно в модулях менеджеров объектов. Для них жестко задан параметр КомандаПечати.Порядок, который определяет их «вес» в общем списке.
  2. Внешние команды: Они подгружаются динамически из справочника ДополнительныеОтчетыИОбработки. В стандартной структуре данных, которую возвращает функция СведенияОВнешнейОбработке, не предусмотрено поле «Порядок». По умолчанию система присваивает им значение 50, что приводит к перемешиванию форм в меню.

Способ 1: Настройка пользователем (без программирования)

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

Выполните следующие действия:

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

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

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

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

Рассмотрим, как это реализовать на практике с помощью метода &Вместо:

Создайте расширение и добавьте в него модуль ДополнительныеОтчетыИОбработки. В модуле переопределите процедуру:


&Вместо("ПриПолученииКомандПечати")
Процедура ацн_ПриПолученииКомандПечати(КомандыПечати, ИмяОбъекта)
    // Вызываем типовой код для заполнения списка
    // В данном примере упрощенная логика добавления веса
    
    // ... логика получения списка команд ...

    Для Каждого КомандаПечати Из КомандыПечати Цикл
        // Присваиваем нужный вес конкретной форме по идентификатору
        Если КомандаПечати.Идентификатор = "НазваниеВашейВПФ" Тогда
            КомандаПечати.Порядок = 10;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Используя этот подход, вы можете гибко управлять весом каждой печатной формы. Например, формы с Порядок = 10 всегда будут выше тех, у кого Порядок = 50.

Альтернативный «хитрый» метод: Сортировка по наименованию

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

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

Резюме по выбору метода

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

← На главную