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

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

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

Настройка команды множественного выбора

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

  1. Откройте карточку нужной внешней обработки.
  2. Перейдите в список команд этой обработки.
  3. Найдите нужную команду печати и перейдите в её настройки.
  4. Для параметра «Режим использования команды» установите значение «Множественный».

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

Реализация процедуры печати

После того как вы настроили множественный режим, в процедуру Печать начнет приходить массив ссылок. Давайте рассмотрим структуру серверной процедуры Печать, которая является стандартной для подсистемы УправлениеПечатью:


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "") Тогда
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
            КоллекцияПечатныхФорм, 
            "", 
            НСтр("ru = 'Ваше Наименование'"), 
            СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати)
        );
    КонецЕсли;
КонецПроцедуры

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

Программное формирование печатной формы

Теперь перейдем к самой логике формирования табличного документа. Основная задача здесь — организовать цикл по массиву документов и правильно вывести макеты в результирующий ТабличныйДокумент.


Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати) Экспорт
    УстановитьПривилегированныйРежим(Истина);
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

    // Получаем данные для всех объектов одним запросом для повышения производительности
    ДанныеДляПечати = ПолучитьДанныеДляПечатнойФормы(МассивОбъектов);

    // Заполняем табличный документ в цикле
    ЗаполнитьТабличныйДокумент(ТабличныйДокумент, ДанныеДляПечати, МассивОбъектов, ОбъектыПечати);
    
    Возврат ТабличныйДокумент;
КонецФункции

Важные советы по оптимизации и оформлению

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

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

← На главную