Top.Mail.Ru
Ответы

Создание печатных форм документов

Здравствуйте. Проблема у меня возникла следующая: написал функцию (по примеру с форума), которая формирует печатные формы для счетов на оплату, а также процедуру помещения файла pdf с сформированной печатной формой во вложения документа "Событие". Вот таким образом выглядит код:

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

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

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


Да, здесь ТБД в каждом обходе цикла меняется, и возвращается ТБД тот, который был сформирован в последнем проходе цикла. Но я пока так оставил, так как формируется пока что только один счет на оплату. Мне нужно теперь помимо документов "СчетНаОплату" формировать в функции ещё печатные формы документов "АктВыполненныхРабот". Помогите, пожалуйста. И не судите строго, где-то мог накосячить в коде, опыта ещё пока маловато в работе с 1С