Имя: Пароль:
1C
1С v8
Вложение печатной формы в ИнтернетПочту
0 2dolist
 
29.03.18
12:45
Добрый день. Формирую печатную форму и хочу программно её отправить.
Формат печатной формы - то, что возвращается после обращения к модулю менеджера документа, т.е. просто SpreadsheetDocument. Получател должен в итоге принять PDF документ.
Конечно, я могу сохранить SpreadsheetDocument в файл на диске в формате PDF и прикрепить файл, но с этим целый ряд проблем может быть с правами доступа и фаерволами. Можно ли как-то без сохранения на диск прикреплять печатные формы в формате пдф? Вроде ещё можно как двоичные данные крепить или использовать внутреннее хранилище?
1 FIXXXL
 
29.03.18
12:53
(0) доступ в папку временных файлов есть? пиши тудой
2 Cyberhawk
 
29.03.18
12:56
У метода Записать() табличного документа есть вариант записи в поток, а не в файл
3 2dolist
 
29.03.18
12:56
(2) так, сейчас глянем про записать
4 2dolist
 
29.03.18
13:04
Не знаю как потоки работают. Там их 3 вида. Где можно почитать?
У меня задача - в цикле сохранять в структуру печатные формы в формате PDF. Поток подойдёт для этого?
5 Масянька
 
29.03.18
13:13
(1) Поддержу. После отправки - спокойно удалять файлы.
6 2dolist
 
29.03.18
13:24
Хочется с потоками разобраться =) В файл всегда можно записать если что.
7 Масянька
 
29.03.18
13:26
(6) Любопытный или упорный? :)))))
8 Cyberhawk
 
29.03.18
13:27
Создавай отдельную тему, раз не осилил потоки
9 2dolist
 
29.03.18
14:35
Пытаюсь так сделать:
        Stream = New MemoryStream();
        PrintDocument.Write(Stream, SpreadsheetDocumentFileType.PDF);
        DataReaderStream = New DataReader(Stream);
        StreamRead = DataReaderStream.Read();
        BinaryData = StreamRead.GetBinaryData();
        Stream.Close();

но в результате нечитаемый файл, по видимому пустой
10 Ц_У
 
29.03.18
15:02
(9) тут не по-русски все, мы не понимаем, мы не высокие программисты
11 2dolist
 
29.03.18
15:19
Да ладно, не придирайтесь. Требование просто есть такое - по-английски писать код.
12 2dolist
 
29.03.18
16:07
(1) В общем, попробовал через временные файлы, на этапе удаления пишет, что файл занят другой программой и не может удалить файл. Так он там и остаётся в темпе лежать.

FileAddress = GetTempFileName("pdf");
PrintDocument.Write(FileAddress, SpreadsheetDocumentFileType.PDF);

Message.Attachments.Clear();
Message.Attachments.Add(FileAddress);

Try
Mail.Send(Message);
Except
EndTry;

DeleteFiles(FileAddress);
13 Масянька
 
29.03.18
16:39
(12) А что такое PrintDocument?
14 FIXXXL
 
29.03.18
16:43
(13) ТабДок
15 Масянька
 
29.03.18
16:54
(14) Понятно.
Тогда к (12) - не закрыт файл.
У меня в семерке используется Йоксель (как раз для сохранения в pdf) и Йоксель (после записи файла) очищается.
16 2dolist
 
29.03.18
18:18
(15) а как его закрыть?
17 2dolist
 
29.03.18
19:22
Не получается победить удаление временного файла
18 Cyberhawk
 
29.03.18
19:55
FileMon в помощь