Как добавить внешнюю печатную форму в собственное подменю документа в 1С:Бухгалтерии 3.0?

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

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

Рассмотрим, как решить эту задачу, принудительно переместив кнопку внешней обработки в нужное нам подменю на форме документа.

Понимаем принцип формирования имен элементов формы

Важно понимать, что система БСП при открытии формы документа динамически создает элементы управления для всех зарегистрированных печатных форм. Имя такого элемента формируется по определенному шаблону: ПодменюПечатьОбычное_ + [ИдентификаторКомандыИзВПФ].

Чтобы управлять этим элементом, нам нужно:

  1. Задать уникальный Идентификатор в коде внешней печатной формы (ВПФ).
  2. Найти созданный системой элемент на форме в обработчике ПриСозданииНаСервере.
  3. Переместить этот элемент в нужную нам группу (подменю) с помощью метода Элементы.Переместить().

Шаг 1: Настройка внешней печатной формы

В модуле объекта вашей внешней печатной формы в функции СведенияОВнешнейОбработке необходимо задать четкий идентификатор команды. Это позволит нам потом легко найти кнопку среди всех остальных элементов управления.


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

Шаг 2: Программный перенос кнопки в подменю

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

В обработчике ПриСозданииНаСервере нам нужно найти группу, куда мы хотим перенести кнопку, и сам элемент кнопки, созданный системой.


// Имя группы, которую вы создали на форме в режиме конфигуратора
ИмяГруппы = "ПодменюДоговорКонтрагента";
ГруппаФормыСКомандамиПечати = Элементы.Найти(ИмяГруппы);

// Ищем элемент, который создала БСП для нашей команды
// Имя элемента состоит из префикса БСП и нашего идентификатора
ИмяКнопки = "ПодменюПечатьОбычное_ДоговорВнешний";
ЭлементКнопки = Элементы.Найти(ИмяКнопки);

Если ЭлементКнопки <> Неопределено И ГруппаФормыСКомандамиПечати <> Неопределено Тогда
    Элементы.Переместить(ЭлементКнопки, ГруппаФормыСКомандамиПечати);
КонецЕсли;

Почему этот метод эффективен?

Рассмотрим подробнее преимущества такого подхода:

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

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

← На главную