Простой вывод табличного документа в общую форму "Печать документов", с использованием БСП

Простой вывод табличного документа из модуля формы внешней обработки, в общую форму «Печать документов», с использованием БСП.
Проверялось на версии БСП 2.2.5.30 в конфигурации УТ 11.1.

Всем доброго дня!

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

Есть несколько достаточно подробных статей на эту тему вывода в общую форму,  например, вот эта: тыц

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

Итак от слов к делу: 

  1. Создаем новую обработку и новую форму
  2.  Добавляем команду (например "Печать") создадим процедуру "Печать", которая будет выполняться при нажатии на кнопку, и перетаскиваем ее на форму.
  3. В модуле формы напишем следующий код, который и отвечает за вывод нашего табличного документа в общую форму "ПечатьДокументов": 
&НаКлиенте
Процедура Печать(Команда)
// сформируем нужный нам табличный документ
ТабДок = СформироватьТабДок();

// создадим коллекцию печатных форм, в которую надо будет добавить нужный нам табличный документ
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("МакетТест");
// Добавляем в коллекцию (тип массив) сформированный Табличный документ
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДок;
// если требуется устанавливаем параметры печати
КоллекцияПечатныхФорм[0].Экземпляров=1;
КоллекцияПечатныхФорм[0].СинонимМакета = "Макет тест";  // используется для формирования имени файла при сохранении из общей формы печати документов
// .. и выводим стандартной процедурой БСП
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм,Неопределено,ЭтаФорма);

КонецПроцедуры

4. Вот и все.

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

17 Comments

  1. held88

    Огромное спасибо за этот кусок кода. То что давно искал.

    Reply
  2. dmitry1975

    Рад, что помогло 🙂

    Reply
  3. ivnik

    Огромное Спасибо!!! Коротко и работает!

    Reply
  4. InJey

    Спасибо! Для начинающего очень помогает!

    Reply
  5. Autolans

    Спасибо! Пригодилось

    Reply
  6. dmitry1975

    Пожалуйста! Сам иногда обращаюсь к своей заметке :)))) Забывается то, чем постоянно не пользуешься..

    Reply
  7. glorry

    Спасибо тебе!!!! Я никак не мог сам найти, а оказывается все было так просто!!!!!

    Reply
  8. dmitry1975

    (7) Пожалуйста! Рад, что помогло.

    Reply
  9. user1118259

    Спасибо. То что нужно. Теперь бы разобраться с этим, а то магия какая то.

    Reply
  10. dmitry1975

    (9) А что именно в этом непонятно?

    Reply
  11. user1118259

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

    Reply
  12. dmitry1975

    (11) В общем-то ничего особо сложного здесь нет.

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

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

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

    Коллекция формируется строкой кода

    КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(«МакетТест»);

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

    вот собственно и все.

    Reply
  13. demONx7

    Уф… Столько мучений, а ларчик просто открывался.

    ОГРОМНЕЙШЕЕ тебе спасибо)))))

    Reply
  14. dmitry1975

    (13) Рад, что помогло 🙂

    Reply
  15. AlexeyT1978

    Работает, Спасибо!!!

    Reply
  16. molot

    Всё гениальное просто! Спасибо! Сэкономил полчасика времени мне)

    Reply
  17. molot

    Чтобы заработала привязка файла к ссылке надо еще немножко дополнить:

    // создадим коллекцию печатных форм, в которую надо будет добавить нужный нам табличный документ
    КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(«СписокВодителей»);
    // Добавляем в коллекцию (тип массив) сформированный Табличный документ
    КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДок;
    ТабДок.Область(1, , ТабДок.ВысотаТаблицы, ).Имя = «СписокВодителей»;
    // если требуется устанавливаем параметры печати
    КоллекцияПечатныхФорм[0].Экземпляров = 2;
    КоллекцияПечатныхФорм[0].СинонимМакета = «Список водителей»; // используется для формирования имени файла при сохранении из общей формы печати документов
    // .. и выводим стандартной процедурой БСП
    ОбъектыПечати = Новый СписокЗначений;
    ОбъектыПечати.Добавить(ПараметрКоманды, «СписокВодителей»);
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбъектыПечати);
    

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *