Имя: Пароль:
1C
1С v8
Программно сохранить платежные поручения в файл
,
0 Wasp16
 
06.08.12
15:12
Метод Записать почему-то не работает.
Какие могут быть причины кто нибудь может подсказать?

ПП=Документы.ПлатежноеПоручение.Выбрать();
   Пока ПП.Следующий() Цикл
       //Сообщить(ПП);
       ИмяФайла = "C:\tmp\1\"+Строка(ПП.Номер)+".pdf";
   
       ЗПП=Документы.ПлатежноеПоручение.ПолучитьФорму("ФормаДокумента");
       
       ЭтаФорма.ЭлементыФормы.Записать("C:\tmp\1.pdf", ТипФайлаТабличногоДокумента.PDF);
1 х86
 
06.08.12
15:18
как это?

ЭтаФорма.ЭлементыФормы.Записать
2 Нуф-Нуф
 
06.08.12
15:19
сильно
3 le_
 
06.08.12
15:26
Надо так:
ПП = Документы.ПлатежноеПоручение.Выбрать();
Пока ПП.Следующий() Цикл
       ИмяФайла = "C:\tmp\1\"+Строка(ПП.Номер)+".pdf";
       ЗПП=Документы.ПлатежноеПоручение.ПолучитьФорму("ФормаДокумента");
       АхалайМахалай("Превратить форму в табличный документ");
       АбраКадабра("ХЗ как перегрузить метод формы Записать()");
       ЭтаФорма.ЭлементыФормы.Записать("C:\tmp\1.pdf", ТипФайлаТабличногоДокумента.PDF);
4 Wasp16
 
06.08.12
15:35
зачем сразу помидорами?
подскажите лучше, а вы стебетесь...
5 hhhh
 
06.08.12
15:37
(4) ну хотя бы

ПП=Документы.ПлатежноеПоручение.Выбрать();

это одно платежное поручение, а

ЗПП=Документы.ПлатежноеПоручение.ПолучитьФорму("ФормаДокумента");

это другое платежное поручение.
6 Infsams654
 
06.08.12
15:38
(4) элементы формы записать ? А зачем ?
7 Wasp16
 
06.08.12
15:41
ну а как записать то без метода Записать?
8 hhhh
 
06.08.12
15:42
(4) а ЭтаФорма - это уже третья форма у вас.

Вы, наверно, учредитель фирмы там, судя по стилю кода. Зачем вы сами взялись? Поручите там это какому-нибудь программисту. Или бухгалтер пусть в екселе набросает.
9 Wasp16
 
06.08.12
15:46
о5 стебетесь?
Я перепробовал кучу вариантов, но ни один не работал- поэтому то и ошибки. не судите строго пожалуйста. Нет, я не учредитель.

Ошибка: {Форма.Форма.Форма(10)}: Ошибка при вызове метода контекста (Записать)
       ЗПП.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.PDF);
по причине:
Несоответствие типов (параметр номер '1')
10 Wasp16
 
06.08.12
15:47
или так получается

{Форма.Форма.Форма(10)}: Метод объекта не обнаружен (Записать)
       ПП.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.PDF)
11 le_
 
06.08.12
15:54
(10) Форма - это часть интерфейса, содержит на себе различные элементы управления.
Тебе табличный документ нужен, печатная форма. И его нужно не просто записать, а заполнить сначала.
12 Wasp16
 
06.08.12
16:00
Да собственно можно и просто форму записать, но почему-то метод не работает...
13 Dimasik2007
 
06.08.12
16:01
Епать мой лысый череп.
Ищи метод напечатать в модуле объекта/менеджера, он возвращает табл. документ, его и записывай в пзф.
14 Wasp16
 
06.08.12
16:05
это как напечатать в модуле объекта?
15 Dimasik2007
 
06.08.12
16:07
для начала определитесь, конфа и что за платежное поручение. Я два вида знаю как минимум.
16 Dimasik2007
 
06.08.12
16:08
Антон, может лучше дальше почту развозить?
17 Wasp16
 
06.08.12
16:10
конфа БП 2.0.35.9
Обычная платежка стандартная.

Могу и вам завезти почту, пишите адрес!
18 hhhh
 
06.08.12
16:13
(17) но ведь в 3-х строчках 28 ошибок. Какой черт занес вас на эти галеры?
19 Wasp16
 
06.08.12
16:14
Забудьте что написано выше, хорошо?

ПП=Документы.ПлатежноеПоручение.Выбрать();
Пока ПП.Следующий() Цикл
//Сообщить(ПП);
ИмяФайла = "C:\tmp\1\"+Строка(ПП.Номер)+".pdf";

Дальше надо записать, но как - не понятно. Подскажет кто?
20 Dimasik2007
 
06.08.12
16:15
Платежка может быть исходящая, а может быть и входящая. Разница, думаю, очевидно.
Ну БП у меня нет, функцию не подскажу. В УПП для ППИ будет вида
ТД = ПП.ПолучитьОбъект().ПечатьПлатежногоПоручения();
а уж дальше ТД записать.
21 Dzenn
 
гуру
06.08.12
16:15
(8) он не учредитель, он вредитель ;)
22 NewManIn1C
 
06.08.12
16:16
(19) для каждого документа тебе нужно формировать печатную форму сначала, а потом уже записывать!
23 Dimasik2007
 
06.08.12
16:18
ща народ подтянется, советов надает
24 Dzenn
 
гуру
06.08.12
16:20
Антон, 1С-ом не получится заниматься "постольку-поскольку". Там очень много объектов, очень похожих по названию и очень разных по сути. И если ты не знаешь отличия формы документа от объекта документа, а также чем отличается модуль объекта от модуля менеджера, то лучше даже не лезь - переделывать потом дороже выйдет.
25 hhhh
 
06.08.12
16:22
(20) не, в БП правда называется ПлатежноеПоручение.
26 Dimasik2007
 
06.08.12
16:22
Ну почему же, пусть учится. В приведенном коде особо не накосячишь, если конечно внешней обработкой делать. Хотя...
27 Dimasik2007
 
06.08.12
16:22
(25) Ну да бог с ним, сто лет с БП не работал.
28 Wasp16
 
06.08.12
16:23
Димасик! Спасибо огромное за помощь!!!
Дзен, я внешней обработкой сделал по шедулеру.
Вот так работает:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   ПП=Документы.ПлатежноеПоручение.Выбрать();
   Пока ПП.Следующий() Цикл
       //Сообщить(ПП);
       ИмяФайла = "C:\tmp\1\"+Строка(ПП.Номер)+".pdf";
       ТД = ПП.ПолучитьОбъект().ПечатьПлатежногоПоручения();
       ТД.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.PDF);
       
       
   КонецЦикла;
   
   
   
   
   
КонецПроцедуры
29 Dimasik2007
 
06.08.12
16:25
Я хочу развидеть это.
30 х86
 
06.08.12
16:45
(0) а чем не подходит групповая обработка справочников и доков, там печатать можно?
31 Infsams654
 
06.08.12
17:26
нет слов - кто бы мог подумать, что в (0) ПечатьПлатежногоПоручения
32 Dimasik2007
 
06.08.12
17:32
(30) Печать не есть экспорт в пдф, хотя если воспользоваться любым пдф-принтером, даже лучше будет, 1С-ка криво таблицы генерит
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший