Создание печатных форм документов
Здравствуйте. Проблема у меня возникла следующая: написал функцию (по примеру с форума), которая формирует печатные формы для счетов на оплату, а также процедуру помещения файла pdf с сформированной печатной формой во вложения документа "Событие". Вот таким образом выглядит код:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
Функция ПолучитьПечатнуюФорму(СчНаОплату)
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(СчНаОплату);
ИмяМенеджераПечати = "Документ.СчетНаОплату";
ИменаМакетов = Новый Массив;
ИменаМакетов.Добавить("СчетНаОплату");
ПараметрыПечати = Новый Структура;
ДопустимыеТипыОбъектовПечати = Неопределено;
//Получение печатной формы без области факсимиле
ПечатныеФормы = УправлениеПечатью.СформироватьПечатныеФормы(ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ПараметрыПечати, ДопустимыеТипыОбъектовПечати);
Для Каждого СтрокаПФ Из ПечатныеФормы.КоллекцияПечатныхФорм Цикл
Для Каждого Документ Из ПечатныеФормы.ОбъектыПечати Цикл
ПараметрыВывода = Новый Структура;
//Формирование табличного документа (печатная форма без факсимиле)
ТБД = СтрокаПФ.ТабличныйДокумент.ПолучитьОбласть(Документ.Представление);
ПодписиИПечатиОбластей = УправлениеПечатью.ПодписиИПечатиОбластей(ПечатныеФормы.ОбъектыПечати);
ПодписиИПечати = Неопределено;
ДанныеПечатиРисунковТабличногоДокумента = УправлениеПечатью.ПодписиИПечатиТабличногоДокумента(ПечатныеФормы.ОбъектыПечати, ТБД, "");
//Получение подписей и печати
Для Каждого ПодписиИПечатиОбласти Из ПодписиИПечатиОбластей Цикл
ИмяОбласти = ПодписиИПечатиОбласти.Ключ;
Если ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти] = Неопределено Тогда
ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти] = Новый Соответствие();
КонецЕсли;
Для Каждого Элемент Из ПодписиИПечатиОбласти.Значение Цикл
ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти][Элемент.Ключ] = Элемент.Значение;
КонецЦикла;
КонецЦикла;
//Добавление подписей и печати в табличный документ (печатная форма с факсимиле)
УправлениеПечатью.ДобавитьПодписьИПечать(ТБД, ДанныеПечатиРисунковТабличногоДокумента);
КонецЦикла;
КонецЦикла;
Возврат ТБД;
КонецФункции
&НаСервере
Процедура СформироватьФайлВложение(СтрокаТЧ, ДокСобытие)
//Формирование файла в формате pdf
ТабДок = ПолучитьПечатнуюФорму(СтрокаТЧ.ДокументСНО);
ПолноеИмяФайла = СокрЛП(Каталог) + "\Счет_на_оплату_№_" + СтрокаТЧ.ДокументСНО.Номер + "_от_" + Формат(СтрокаТЧ.ДокументСНО.Дата, "ДФ=dd.MM.yyyy") + "." + ТипФайлаТабличногоДокумента.PDF;
ТабДок.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.PDF);
//Преобразование файла в двоичные данные для его помещения во временное хранилище
ДвоичныеДанные = Новый ДвоичныеДанные(ПолноеИмяФайла);
АдресВремХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
НомерДокБезПрефикса = ПолучитьНомерДокБезПрефикса(СтрокаТЧ.ДокументСНО.Номер);
//Определение параметров файла в формате pdf
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.Автор = Пользователи.ТекущийПользователь();
ПараметрыФайла.ВладелецФайлов = ДокСобытие.Ссылка;
ПараметрыФайла.ИмяБезРасширения = "Счет на оплату № " + НомерДокБезПрефикса + " от " + Формат(СтрокаТЧ.ДокументСНО.Дата, "ДЛФ=DD");
ПараметрыФайла.РасширениеБезТочки = "pdf";
//Добавление файла во вложения документа "Событие"
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресВремХранилища);
КонецПроцедуры
Да, здесь ТБД в каждом обходе цикла меняется, и возвращается ТБД тот, который был сформирован в последнем проходе цикла. Но я пока так оставил, так как формируется пока что только один счет на оплату. Мне нужно теперь помимо документов "СчетНаОплату" формировать в функции ещё печатные формы документов "АктВыполненныхРабот". Помогите, пожалуйста. И не судите строго, где-то мог накосячить в коде, опыта ещё пока маловато в работе с 1С
Больше по теме