v7: Формирование документа в PDF и последующая отправка по почте из 1С #753692


#0 by Славянин
Здравствуйте. Поставили задачу организовать отправку по почте счета в пдф формате из 1С. Ребята,может работал кто-нибудь с похожей проблемой? Подскажите в каком направлении двигаться?
#1 by ДенисЧ
ставь локальный пдф-принтер. Через него формируй файл. Потом его отправляй  имющимися средствами
#2 by Ёпрст
либо, йоксель
#3 by Ёпрст
но, он делает пдф-ку только как картинку.
#4 by Vladal
переименовало тему.
#5 by scanduta
таб - это табличный документ
#6 by Славянин
Сейчас через пдф-принтер. А нужно без него
#7 by Builder
Что не так с принтером?
#8 by varelchik
Пройся тута на форуме. Это-то вопрос уже неоднократно разжовували.
#9 by vcv
Подозреваю, что PDF-принтер задаёт лишние вопросы, которых быть не должно. Типа куда сохранить файл и всё такое. Я когда-то искал-искал, но так и не нашёл бесплатного PDF-принтера под винду, который бы работал молча, сохранял печатаемые файлы под указанными именами в указанное место.
#10 by Fedor-1971
за минут 10 находится BullZipPDF - управляемый и бесплатный. Можешь программно рулить как тебе нравится. При желании можно отловить момент, когда PDF уже создан и доступен к перемещению в целевую папку. Вопрос по 7.7
#11 by Dmitry77
можешь открыть в excel. excel умеет сохранять в PDF
#12 by vcv
Рассматривал его, но так и не увидел, как, в бесплатном варианте, можно отправить задание на принтер с указанием, в какой файл сохранить результат.
#13 by Builder
Как то так:
#14 by Fedor-1971
13+ важно Output - куда деть и Напечатать - без всяких вопросов про принтер (для 8    таб.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);)
#15 by vcv
Гм. Действительно работает. Правда берёт какие-то левые размеры листа при печати ландшафтных йоксельных документов, но использовать таки можно. Кажется меньше проблем, чем при попытках конвертировать в PDF посредством LibreOffice. Спасибо.
#16 by HawkEye
открой в Ворде и сохрани в PDF ))))
#17 by BalBess
только после печати (т.е. сохранения), нельзя сразу отправлять, т.к. часто файл еще не готов. Особенно при отправке первый раз, пока загрузятся драйвера принтера и т.д. Я решил так:
#18 by BalBess
процедура sleep, которую "не видно", может у кого есть другие решения
#19 by BalBess
Саму отправку лучше делать через CDO через него можно отправлять в формате html
#20 by BalBess
Вот тоже полезная функция, проверки адреса перед отправкой //----------------------------------------------------------------------------- function checkStr(str, badChars) export     for i=1 to strLen(str) do         if find(badChars,mid(str,i,1))=0 then return endif; function checkMail(val mail) export
#21 by BalBess
Перед формированием файла PDF нужно убедиться в наличии виртуального принтера (используется ВК FormEx)
#22 by Z1
(all) Извините если off. А существует какой либо бесплатный , хороший ActiveX для просмотра pdf внутри 1с приложения ?
#23 by Fedor-1971
Ну зачем такой огород? Bull ZIP PDF - может делать файл лога выгрузки, формируется он во время записи PDF, вот и пытайся в цикле удалить лог - когда сможешь, значит PDF-файл принтер больше не держит. При попытке переместить сам PDF - получишь битый файл.
#24 by BalBess
какая разница что проверять, существование готового файла или пытаться удалить лог.. я просто хотел сказать, что необходимо делать задержку/проверку между формированием файла и отправкой его по почте. т.е. процесс формирования асинхронный, 1с дает команду принтеру и продолжает работать. Просто сам наступал на эти грабли. Про перемещение PDF никто не говорит, конечно его нельзя перемещать пока не готов
#25 by Fedor-1971
разница в том, что в каталоге результата файл существует уже в момент начала печати, а Sleep засыпает на время - как вы правильно заметили процесс асинхронный и сколько времени понадобится принтеру на формирование файла ни кто не знает (5 сек или 3 минуты), поэтому лучше опираться на возможности принтера, он точно знает, что печать завершена. Как индикатор - возможность удалить файл лога и реализовать это можно штатными средствами 1С.
#26 by BalBess
нет, файл не существует, пока он полностью не готов, т.е. он создается (принтером), но с другим именем и в другом месте. Когда готов, переноситься в заданный каталог с нужным именем. Проверять можно и лог (принципиальной разницы нет) и штатными средствами задержку не сделаешь, либо тупо проверять в цикле (без задержки), тогда загрузиться процессор на 100%. Можно точно также проверять существование файла в цикле, без задержки. У меня кстати код полностью рабочий, работает на 100%. Приведите Ваш код с проверкой лога, штатными средствами. Эмперическим путем у меня подобрано значение 5 сек. Заметьте, это максимальное значение, обычно хватает и одной секунды. Если за 5 сек файл не успел сформироваться, значит что-то не так с принтером. Как-то так.
#27 by Fedor-1971
как то так: таб.ИмяПринтера="Bullzip PDF Printer"; Дальше с файлом можем делать что хотим
#28 by BalBess
В моем случае, если убрать sleep получиться тоже самое. Я же говорю разницы нет. В вашем решении 2 минуса 1. Процессор в этом случае нагружается на 100%, что не есть айс. Особенно когда работает 100 чел в базе 2. Нет условий выхода из цикла. Вдруг что случить с принтером или еще что-то, база зависнет. Не хочу никого переубеждать, каждый решает сам как захочет.
#29 by Fedor-1971
Как-то поверхностно рассмотрел код? 1. Код не гоняет счётчик, а пытается удалить файл, что тупо занимает время ОС, а не грузит процессор левыми вычислениями. 2. У меня этот код под УФ, так, что если что-то с принтером проблемы будут на клиентской машине и только. Но хочу обратить внимание: КонецПопытки; именно для проблем с принтером. - проверяется и удаляется файл Лога создания PDF - он создастся и в случае проблем с принтером, так, что ничего не повиснет.
#30 by Fedor-1971
[code] процедура [/code] Прошу прощения, проверил работу ручного выделения кода
#31 by Vladal
Код выделяется автоматически движком форума.
#32 by Fedor-1971
это да, но в 27 он не захватил кусок, а в 29 прихватил лишнего и не забрал последнюю строку, не красиво получилось. Собственно проблема только спрятать код под +. Поищу ещё и потом попробую при случае.
#33 by BalBess
мы немного не поняли друг-друга: речь была про 7.7, по крайней мере тема заведена в этой ветке. И в ней бесконечные циклы грузят проц на 100%, в не зависимости что он делает. В 7.7 обычно все работают в терминале, поэтому все проблемы отражаются на сервере.
#34 by Fedor-1971
Как-то не замечал за 7.7 при долгом цикле нагрузки на проц в 100% вне зависимости от того, что она делает. Когда считает да, когда дёргает файл нет. На подходе заказ большой доработки на 7.7, при случае проверю теорию про пустой бесконечный цикл и 100% нагрузку на проц.
#35 by Serginio1
Например используя и
#36 by Serginio1
#37 by trdm
DLL file -  Acropdf.dll ActiveX control name -  AxAcroPDFLib.AxAcroPDF Насчет хорошести - не пользовался.
#38 by Serginio1
#39 by Mordor_1C
В уже решение написано без всяких pdf принтеров.
#40 by trdm
Вопрос по семерке.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С