Как вывести на печать документ в 1С:КА 2.5, если в нем отсутствует кнопка «Печать»?

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

В современных конфигурациях 1С, построенных на базе Библиотеки стандартных подсистем (БСП), таких как «Комплексная автоматизация 2.5» (КА 2.5) или «ERP Управление предприятием», пользователи часто сталкиваются с ситуацией, когда в форме документа отсутствует привычная кнопка «Печать». Рассмотрим ситуацию на примере документа Заказ на внутреннее потребление. Проанализируем причины такого поведения системы и разберем по шагам, как решить эту задачу с помощью внешних печатных форм и расширений.

Почему кнопка печати отсутствует в интерфейсе?

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

Для документа Заказ на внутреннее потребление это штатное поведение: разработчики 1С предполагают, что печатные формы (например, накладные или требования-накладные) должны выводиться из документов исполнения (Внутреннее потребление товаров), а не из распоряжения. Однако в реальной практике часто требуется распечатать сам заказ. Проанализируем способы, как заставить систему отобразить команду печати.

Вариант 1: Использование внешней печатной формы (ВПФ)

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

Разберем пример кода для регистрации ВПФ:


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

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

Вариант 2: Активация подменю через расширение конфигурации

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

Выполним следующие шаги:

  1. Создадим новое расширение или используем существующее.
  2. Заимствуем в расширение Модуль менеджера документа ЗаказНаВнутреннееПотребление.
  3. Добавим в расширение процедуру-обработчик ДобавитьКомандыПечати, используя аннотацию &После.

Рассмотрим пример кода в модуле менеджера расширения:


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

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

Вариант 3: Печать через внешний отчет

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

Посмотрим, как это реализовать:

Технические нюансы работы с БСП

Разберем подробнее, как работает механизм подключения. Процедура ПриСозданииНаСервере в типовых формах обычно содержит вызов ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтаФорма). Этот метод опрашивает модули менеджеров и зарегистрированные ВПФ. Если вы создаете свою форму документа с нуля, не забудьте добавить соответствующую группу ГруппаКомандыПечати (обычно это ПодменюПечать) в командную панель формы и установить ей вид «Группа — подменю».

Важные моменты для программиста:

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

← На главную