Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:10

Печать нескольких документов из списка

Автор Keen Gaff, 06 мар 2021, 11:24

0 Пользователей и 1 гость просматривают эту тему.

Keen Gaff

Доброго всем дня.
Платформа 8.3.18, конфигурация самописная + БСП.
Пытаюсь организовать печать (и вывод в ПДФ отдельными файлами) нескольких выделенных из списка документов.
Использую процедуры БСП.

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.Протокол";
КомандаПечати.Идентификатор  = "МакетПротокола";
КомандаПечати.Представление  = НСтр("ru = 'Печать протокола'");
КомандаПечати.Картинка = БиблиотекаКартинок.Печать;
КомандаПечати.СписокФорм     = "ФормаДокумента,ФормаСписка";
КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;

// Сформировать печать в документ Adobe PDF.
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.Протокол";
КомандаПечати.Идентификатор  = "МакетПротокола";
КомандаПечати.Представление  = НСтр("ru = 'Протокол в PDF'");
КомандаПечати.Картинка       = БиблиотекаКартинок.ФорматPDF;
КомандаПечати.СписокФорм     = "ФормаДокумента,ФормаСписка";
КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
КомандаПечати.ФорматСохранения = ТипФайлаТабличногоДокумента.PDF;

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

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "МакетПротокола");
Если ПечатнаяФорма <> Неопределено Тогда
// имена файлов
ИменаФайлов = Новый Соответствие;
Шаблон = НСтр("ru = '[НомерПротокола]'");
ЗначенияРеквизитовДокументов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивОбъектов, "НомерПротокола,Ссылка");
Для Каждого Ссылка Из МассивОбъектов Цикл
ЗначенияРеквизитовДокумента = ЗначенияРеквизитовДокументов[Ссылка];
ЗначенияРеквизитовДокумента.НомерПротокола = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ЗначенияРеквизитовДокумента.НомерПротокола);
ИмяФайла = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(Шаблон, ЗначенияРеквизитовДокументов[Ссылка]);
ИменаФайлов.Вставить(Ссылка, ИмяФайла);
КонецЦикла;

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

Функция  СформироватьПечать(Ссылка, ОбъектыПечати, ИмяМакета = "МакетПротокола")
//запрос
//выборка
ТабДок = Новый ТабличныйДокумент;
Пока Выборка.Следующий() Цикл
//...
ТабДок.НижнийКолонтитул.ТекстСлева = Строка("Протокол испытаний №" + Выборка.НомерПротокола + " от " + Формат(Выборка.ДатаПротокола, "ДЛФ=D"));
ТабДок.НижнийКолонтитул.ТекстСправа = "Страница [&НомерСтраницы] из [&СтраницВсего]";
ТабДок.НижнийКолонтитул.Выводить = Истина;
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();           
        КонецЦикла;
Возврат ТабДок;
КонецФункции

По отдельности все хорошо печатается.
Проблема возникает при печати нескольких документов.
В нижнем колонтитуле указываются реквизиты документа с номером и датой, количество страниц.
Нижний колонтитул выводится одинаковый для всех документов.
Полагаю что все документы попадают в один ТабДок, соответственно один колонтитул и получается.
Как их разделить?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск