Имя: Пароль:
1C
1С v8
Запись Сформированного макета документа в файл XML, PDF
0 DenisVich
 
05.03.18
11:43
Обычные формы. Есть макет, есть документ. В макете приемник хранится уже заполненный документ.(таблица). Сохраняю документ в файл. Но когда открываю, то сохраняется незаполненый документ. Как будто я макет сразу взял и сохранил. Почему?
"                 ФормированиеПечатнойФормыАкт(МакетПриемник,ОбъектДокумент);//Заполняется макет по документу в МакетПриемник.
                        МакетПриемник = ПолучитьМакет("Акт");
                         МакетПриемник.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
1 DenisVich
 
05.03.18
11:44
"то сохраняется незаполненый документ" - сохранненый документ не заполнен, заполнен он названиями переменных.
2 catena
 
05.03.18
11:45
МакетПриемник = ПолучитьМакет("Акт");
                         МакетПриемник.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);


И чего вы ждали?
3 Lexey_
 
05.03.18
11:46
(0) "Как будто я макет сразу взял и сохранил. Почему?" потому, что так и есть
4 DenisVich
 
05.03.18
11:51
ФормированиеПечатнойФормыАкт(МакетПриемник,ОбъектДокумент)
5 DenisVich
 
05.03.18
11:51
На выходе МакетПриемник сформированнный вышеописанной процедурой.
6 Lexey_
 
05.03.18
11:53
(5) ну да
7 Lexey_
 
05.03.18
11:55
(5) а вот эта строка что делает?
МакетПриемник = ПолучитьМакет("Акт");
8 DenisVich
 
05.03.18
11:55
Для Каждого ЭлементТабличнойЧасти Из ТаблицаДокументов Цикл
                     МакетПриемник = ПолучитьМакет("АктСПечатью");
                     ИмяФайла= (КаталогВременныхФайлов()+СтрЗаменить(Лев(ЭтаФорма.Заголовок, СтрДлина(ЭтаФорма.Заголовок)-1), ":", "")+".pdf");                
                     ИмяФайла= СтрЗаменить(ИмяФайла, "Проведен", "");
                      ИмяФайла= СтрЗаменить(ИмяФайла, """", "");                    
                     ОбъектДокумент = ЭлементТабличнойЧасти.Документ.Ссылка.ПолучитьОбъект();
                     Если ОбъектДокумент.Проведен И ТипЗнч(ОбъектДокумент.Ссылка) = Тип("ДокументСсылка.Реализация") Тогда
                         ФормированиеПечатнойФормыАктСПечатью(МакетПриемник,ОбъектДокумент);
                         МакетПриемник.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
                                     
                        МакетПриемник = ПолучитьМакет("АктСПечатью");
                        ФормированиеУнифицированнойФормыТорг12СПечатью(МакетПриемник,ОбъектДокумент);                        
                     КонецЕсли;
                     Если ОбъектДокумент.Проведен И ТипЗнч(ОбъектДокумент.Ссылка) = Тип("ДокументСсылка.АктСверкиВзаиморасчетов") Тогда
                         ФормированиеПечатнойФормыАктСверкиВзаиморасчетовСПечатью(МакетПриемник,ОбъектДокумент);            
                     КонецЕсли;                    
                     Если ОбъектДокумент.Проведен И ТипЗнч(ОбъектДокумент.Ссылка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
                         ФормированиеСчетаНаОплатуСПечатью(МакетПриемник,ОбъектДокумент);
                     КонецЕсли;                    

                     МакетПриемник.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
                    
                 КонецЦикла;
9 DenisVich
 
05.03.18
11:56
Вот код, макеты заполненые не заполнены.
10 DenisVich
 
05.03.18
11:56
в файлах. Стоят имеена реквизитов.
11 DenisVich
 
05.03.18
12:00
"                 Для Каждого ЭлементТабличнойЧасти Из ТаблицаДокументов Цикл;
                     ИмяФайла= (КаталогВременныхФайлов()+СтрЗаменить(Лев(ЭтаФорма.Заголовок, СтрДлина(ЭтаФорма.Заголовок)-1), ":", "")+".pdf");                
                     ИмяФайла= СтрЗаменить(ИмяФайла, "Проведен", "");
                      ИмяФайла= СтрЗаменить(ИмяФайла, """", "");                    
                     ОбъектДокумент = ЭлементТабличнойЧасти.Документ.Ссылка.ПолучитьОбъект();
                     Если ОбъектДокумент.Проведен И ТипЗнч(ОбъектДокумент.Ссылка) = Тип("ДокументСсылка.Реализация") Тогда
                         МакетПриемник = ПолучитьМакет("ТОРГ12СПечатью");
                         ФормированиеПечатнойФормыАктСПечатью(МакетПриемник,ОбъектДокумент);
                         МакетПриемник.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
                                         
                        МакетПриемник = ПолучитьМакет("АктСПечатью");
                        ФормированиеУнифицированнойФормыТорг12СПечатью(МакетПриемник,ОбъектДокумент);                        
                     КонецЕсли;
                     Если ОбъектДокумент.Проведен И ТипЗнч(ОбъектДокумент.Ссылка) = Тип("ДокументСсылка.АктСверкиВзаиморасчетов") Тогда
                        МакетПриемник = ПолучитьМакет("АктСверкиСПечатью");
                         ФормированиеПечатнойФормыАктСверкиВзаиморасчетовСПечатью(МакетПриемник,ОбъектДокумент);            
                     КонецЕсли;                    
                     Если ОбъектДокумент.Проведен И ТипЗнч(ОбъектДокумент.Ссылка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
                        МакетПриемник = ПолучитьМакет("СчетНаОплатуСПечатью");
                         ФормированиеСчетаНаОплатуСПечатью(МакетПриемник,ОбъектДокумент);
                     КонецЕсли;                    

                     МакетПриемник.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
                    
                 КонецЦикла;            
"
12 DenisVich
 
05.03.18
12:01
Формы переподставлял все едино. Сама концепция записи не работает. МакетПриемник.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
13 Lexey_
 
05.03.18
12:04
(12) ответь на (7)
14 DenisVich
 
05.03.18
12:06
(13) МакетПриемник = ПолучитьМакет("Акт"); - Переменной назначаем объект Макет "Акт". И начинаем с ним оперировать
15 FIXXXL
 
05.03.18
12:07
тут ФормированиеПечатнойФормыАкт(МакетПриемник,ОбъектДокумент) заполнил

тут МакетПриемник = ПолучитьМакет("Акт"); получил пустой

тут МакетПриемник.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF); записываешь пустой
16 DenisVich
 
05.03.18
12:07
Правильно, а между этими строчками -  ФормированиеПечатнойФормыАктСПечатью(МакетПриемник,ОбъектДокумент);
17 DenisVich
 
05.03.18
12:08
МакетПриемник обработан.
18 FIXXXL
 
05.03.18
12:08
(16) у тебя в коде не между
19 DenisVich
 
05.03.18
12:09
Если ОбъектДокумент.Проведен И ТипЗнч(ОбъектДокумент.Ссылка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
                        МакетПриемник = ПолучитьМакет("СчетНаОплатуСПечатью");
                         ФормированиеСчетаНаОплатуСПечатью(МакетПриемник,ОбъектДокумент);
                     КонецЕсли;                    

                     МакетПриемник.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
20 DenisVich
 
05.03.18
12:09
Не между?:)
21 DenisVich
 
05.03.18
12:11
Т.е. получается что форму заполнил, что нет. Одно и тоже.
22 FIXXXL
 
05.03.18
12:12
(20) смотри, что ты в (0) выкладываешь
а (19) вообще хз чего

угадайку играем?
включай отладчик и смотри "кто на ком стоял"
23 DenisVich
 
05.03.18
12:16
(22) Знаю что выкидываю. Пытался объяснить, что порядок не важен. Все равно не заполнено. Хотя фукнции все исправно работают.(формирование заполнения) Смотрел.
24 Lexey_
 
05.03.18
12:33
(19) в условие заходит?
25 DenisVich
 
05.03.18
16:22
Заходит.
26 dezss
 
05.03.18
16:28
(25) а перед тем, как записываешь, есть что-то в твоем табдоке?
и покажи функцию
ФормированиеСчетаНаОплатуСПечатью
27 DenisVich
 
06.03.18
13:45
Разобрались в чем дело. Числа не брал потому что стоял формат в макете для реквизитов(хотя формат верный числовой), но переприсвоение не работало. Макет приемник, очистил, сделал только для чтения перед передачей из макета исходника. Не в каждой функции поставил вот и проблемы.
        "МакетПриемник.Очистить();
        МакетПриемник.ОтображатьГруппировки    = Ложь;
        МакетПриемник.ОтображатьЗаголовки    = Ложь;
        МакетПриемник.ОтображатьСетку        = Ложь;
        МакетПриемник.ТолькоПросмотр        = Истина;
"