Имя: Пароль:
1C
1С v8
Сохранить програмно отчет СКД в pdf файл
, , ,
0 Roma1314704
 
26.09.18
21:51
УП 8.3
Простой отчет СКД. Как сохранить через Сохранить как - здесь все ясно.
Прикрутил на форму кнопку сохранить в файл. Задача  - при нажатии на кнопку нужно сохранять в pdf файл.

Вот процедура
&НаКлиенте
Процедура СохранитьВФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогСохраненияФайла.ПолноеИмяФайла = "Прайс";
Фильтр = "Документ PDF (*.pdf)|*.pdf";                
ДиалогСохраненияФайла.Фильтр = Фильтр;
ДиалогСохраненияФайла.МножественныйВыбор = Ложь;
ДиалогСохраненияФайла.Заголовок = "Выберите файл";
Если ДиалогСохраненияФайла.Выбрать() Тогда
    ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла;
ДиалогСохраненияФайла.Записать(ДиалогСохраненияФайла.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.PDF);

КонецЕсли;  
КонецПроцедуры

Но она не работает  - обьясните пож что не так?
1 runoff_runoff
 
26.09.18
22:03
тут попкорном попахивает в 3 строчке снизу
2 Roma1314704
 
26.09.18
22:05
Да, вот в 3-ей снизу лажа полная
3 Roma1314704
 
26.09.18
22:06
В чем ошибка в этой строке?
4 Волшебник
 
26.09.18
22:07
ТабДокумент.Записать(ДиалогСохраненияФайла.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.PDF);
5 Roma1314704
 
26.09.18
22:11
Переменная не определена (ТабДокумент)
6 Волшебник
 
26.09.18
22:12
(5) Украина, да?
7 Roma1314704
 
26.09.18
22:14
)
8 Roma1314704
 
26.09.18
22:15
Финляндия
9 Roma1314704
 
26.09.18
22:40
О существоаании ТабДокумент.Записать(ДиалогСохраненияФайла.ПолноеИмяФайла, ТипФайлаТабличногоДокунмента.pdf);

В курсе .
Не могу понять в чем проблема
10 hhhh
 
26.09.18
22:59
Забыл переменную определить ТабДокумент, тебе же написали.
11 Roma1314704
 
26.09.18
23:18
&НаКлиенте
Процедура СохранитьВФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогСохраненияФайла.ПолноеИмяФайла = "Прайс";
Фильтр = "Документ PDF (*.pdf)|*.pdf";                
ДиалогСохраненияФайла.Фильтр = Фильтр;
ДиалогСохраненияФайла.МножественныйВыбор = Ложь;
ДиалогСохраненияФайла.Заголовок = "Выберите файл";

Если ДиалогСохраненияФайла.Выбрать() Тогда
    ТабДокумент = Новый ТабличныйДокумент();

    ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла;
ТабДокумент.Записать(ДиалогСохраненияФайла.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.PDF);
КонецЕсли;  
КонецПроцедуры

Файл пустой
12 Fram
 
27.09.18
01:18
(11) ты троллишь так толсто или просто ... ?
13 Krolik Bezobraznik
 
27.09.18
08:41
У кого то уже пятница...
14 Roma1314704
 
27.09.18
12:28
На самом деле , почему файл пустой? Что ещё нужно сделать ?
15 s03
 
27.09.18
12:31
(14) а что ты хотел получить, если у тебя ТабДокумент = Новый ТабличныйДокумент(); и именно его ты и записываешь?
16 Волшебник
 
27.09.18
12:33
Понаберут селян в программисты...
17 Ник080808
 
27.09.18
12:38
ТабДокумент = ЭлементыФормы.Результат;
18 Roma1314704
 
27.09.18
13:36
Переменная не определена (ЭлементыФормы)
19 Ник080808
 
27.09.18
14:10
(18) ты гонишь) Элементы.Результат
20 Roma1314704
 
27.09.18
14:26
ТабДокумент = Элементы.Результат;
После этого метод записать не доступный

Где можно глянуть рабочий пример?
21 Ник080808
 
27.09.18
15:37
(20) ты издеваешься? у тебя форма отчета. на ней есть реквизит - табличный документ. Его ты должен записать в пдф. Берешь свой табдокумент, не знаю как он у тебя называется и сохраняешь
22 Roma1314704
 
27.09.18
15:40
Процедура СохранитьВФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогСохраненияФайла.ПолноеИмяФайла = "Прайс";
Фильтр = "Документ PDF (*.pdf)|*.pdf";                
ДиалогСохраненияФайла.Фильтр = Фильтр;
ДиалогСохраненияФайла.МножественныйВыбор = Ложь;
ДиалогСохраненияФайла.Заголовок = "Выберите файл";

Если ДиалогСохраненияФайла.Выбрать() Тогда
    ТабДокумент = Новый ТабличныйДокумент();
    ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла;
    
ТабДокумент.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);

КонецЕсли;  
КонецПроцедуры
23 Roma1314704
 
27.09.18
15:41
Пустой файл на выходе
24 azernot
 
27.09.18
15:44
(23) Подумай, ЧТО ИМЕННО ты хочешь сохранить, где ты это указываешь и как система должна понять, что именно ты хочешь сохранить.

Вот где у тебя хранится сформированный с помощью СКД отчёт? В каком-то реквизите? В переменной? Какой тип имеет этот реквизит/переменная?

Такой код:
ТабДокумент = Новый ТабличныйДокумент();
ТабДокумент.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);

закономерно приводит к результату "Пустой файл на выходе".
25 Ник080808
 
27.09.18
15:46
Стаж: 11 лет 10 месяцев 21 день Аааааааааааааааааа
26 VladZ
 
27.09.18
15:49
(22) Круто. А теперь переведем твой код на понятный "человеческий язык":

1. Выбрать файл файл.
2. Создать пустой табличный документ.
3. Сохранить этот табличный документ в файл.

на каком шаге он у тебя заполнился?
27 0level
 
27.09.18
16:02
Помимо "сохранить как", на управляемых формах есть пиктограмма дискеты, пользователю удобнее через нее сохранять.
28 azernot
 
27.09.18
16:12
(27) Точно!

Вот самый правильный код:

Процедура СохранитьВФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогСохраненияФайла.ПолноеИмяФайла = "Прайс";
Фильтр = "Документ PDF (*.pdf)|*.pdf";                      
ДиалогСохраненияФайла.Фильтр = Фильтр;
ДиалогСохраненияФайла.МножественныйВыбор = Ложь;
ДиалогСохраненияФайла.Заголовок = "Выберите файл";

Если ДиалогСохраненияФайла.Выбрать() Тогда
    ТабДокумент = Новый ТабличныйДокумент();
     Рис=ТабДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
    Индекс=ТабДокумент.Рисунки.Индекс(Рис);
    ТабДокумент.Рисунки[Индекс].Картинка =  =БиблиотекаКартинок.СохранитьФайл;
    ТабДокумент.Рисунки[Индекс].Расположить(ТабДокумент.Область("R1C1:R4C4);  
    ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла;
    
ТабДокумент.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);

КонецЕсли;  
КонецПроцедуры
29 Roma1314704
 
27.09.18
17:54
Код от  azernot   - Снова пустой файл!
30 azernot
 
27.09.18
18:10
(29) Да? Вот чёрт....

Ну я исправлюсь. Вот! Проверено! Работает!

    
Процедура СохранитьВФайл(Команда)
    Режим = РежимДиалогаВыбораФайла.Сохранение;
    ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогСохраненияФайла.ПолноеИмяФайла = "Прайс";
    Фильтр = "Документ PDF (*.pdf)|*.pdf";                      
    ДиалогСохраненияФайла.Фильтр = Фильтр;
    ДиалогСохраненияФайла.МножественныйВыбор = Ложь;
    ДиалогСохраненияФайла.Заголовок = "Выберите файл";
    
    Если ДиалогСохраненияФайла.Выбрать() Тогда
        ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла;
        ТабДокумент = Новый ТабличныйДокумент();
        Рис=ТабДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
        Индекс=ТабДокумент.Рисунки.Индекс(Рис);
        ТабДокумент.Рисунки[Индекс].Картинка =  БиблиотекаКартинок.СохранитьФайл;
        ТабДокумент.Рисунки[Индекс].Расположить(ТабДокумент.Область("R1C1:R14C4"));  
        
        ТабДокумент.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);
    КонецЕсли;  
КонецПроцедуры
31 Вафель
 
27.09.18
18:24
на УФ типовой табдок - это переменная Результат.
поэтому нужно
Результат.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);
32 Roma1314704
 
27.09.18
19:00
azernot по последнему коду - файл снова пустой!
33 Roma1314704
 
27.09.18
19:03
А Вот так
Результат.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF); - завелось!

Парни, всем большое спасибо!
Ткните носом что почитать с литературы для понятия скила?
34 azernot
 
27.09.18
20:23
(32) 100% не пустой! Там пиктограмма из (27)
35 Fram
 
27.09.18
20:42
(33) боюсь, что это врожденное
36 PaulBC
 
28.09.18
03:45
(0) Зачем все это? Используй форму отчета из БСП - там уже есть все кнопки.
37 Chameleon1980
 
28.09.18
04:09
(36) чтобы потом таких вопросов не было.