#0
by Славянин
Здравствуйте. Поставили задачу организовать отправку по почте счета в пдф формате из 1С. Ребята,может работал кто-нибудь с похожей проблемой? Подскажите в каком направлении двигаться?
#1
by ДенисЧ
ставь локальный пдф-принтер. Через него формируй файл. Потом его отправляй имющимися средствами
#9
by vcv
Подозреваю, что PDF-принтер задаёт лишние вопросы, которых быть не должно. Типа куда сохранить файл и всё такое. Я когда-то искал-искал, но так и не нашёл бесплатного PDF-принтера под винду, который бы работал молча, сохранял печатаемые файлы под указанными именами в указанное место.
#10
by Fedor-1971
за минут 10 находится BullZipPDF - управляемый и бесплатный. Можешь программно рулить как тебе нравится. При желании можно отловить момент, когда PDF уже создан и доступен к перемещению в целевую папку. Вопрос по 7.7
#12
by vcv
Рассматривал его, но так и не увидел, как, в бесплатном варианте, можно отправить задание на принтер с указанием, в какой файл сохранить результат.
#14
by Fedor-1971
13+ важно Output - куда деть и Напечатать - без всяких вопросов про принтер (для 8 таб.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);)
#15
by vcv
Гм. Действительно работает. Правда берёт какие-то левые размеры листа при печати ландшафтных йоксельных документов, но использовать таки можно. Кажется меньше проблем, чем при попытках конвертировать в PDF посредством LibreOffice. Спасибо.
#17
by BalBess
только после печати (т.е. сохранения), нельзя сразу отправлять, т.к. часто файл еще не готов. Особенно при отправке первый раз, пока загрузятся драйвера принтера и т.д. Я решил так:
#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 - он создастся и в случае проблем с принтером, так, что ничего не повиснет.
#32
by Fedor-1971
это да, но в 27 он не захватил кусок, а в 29 прихватил лишнего и не забрал последнюю строку, не красиво получилось. Собственно проблема только спрятать код под +. Поищу ещё и потом попробую при случае.
#33
by BalBess
мы немного не поняли друг-друга: речь была про 7.7, по крайней мере тема заведена в этой ветке. И в ней бесконечные циклы грузят проц на 100%, в не зависимости что он делает. В 7.7 обычно все работают в терминале, поэтому все проблемы отражаются на сервере.
#34
by Fedor-1971
Как-то не замечал за 7.7 при долгом цикле нагрузки на проц в 100% вне зависимости от того, что она делает. Когда считает да, когда дёргает файл нет. На подходе заказ большой доработки на 7.7, при случае проверю теорию про пустой бесконечный цикл и 100% нагрузку на проц.
#37
by trdm
DLL file - Acropdf.dll ActiveX control name - AxAcroPDFLib.AxAcroPDF Насчет хорошести - не пользовался.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- Конвертация печатной формы из 1С в pdf и последующая отправка по e-mail !
- v7: Отправка табличного документа 1С по e-mail в формате pdf и tiff
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Отправка СМС из 1С v7.7
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
- v7: Отправка файлов по почте из 1С 7.7
В этой группе 1С
- Подготовка к 1С Профессионал по платформе.
- Как установить стандартные настройки формы программно? УФ
- Рарус. Торговый комплекс-опыт использования
- УПП 1.3 Счет операционной кассы
- как выводить счет в разных валютах в 1с Бухгалтерия 3.0
- Не работает pptp через Mikrotik
- Посчитать количество значений по колонке тз и тч для не числового значения
- Как программа на C# может узнать имя файла самой себя?
- Объясните смысл ошибки, не пойму что пытается сказать система
- СКД. Итоги по свойствам
- Незарплатные доходы в ЗУП 3
- УТ 10. ДебиторскаяЗадолженностьПоСрокамДолга
- Свернуть табличную часть в конвертации данных
- Обмен БП 30 > УТ 11
- Сформировать документ из ТЗ
- Конкатенация значений переменных среды в одну строку в .cmd/.bat файлах
- Подключение DLL к 1с 8
- Веб-сервисы, как убрать тэг return?
- Работа с датами в СКД
- РИБ с нуля без создания образа