Предисловие.
Многим компаниям, продающим, в основном, через интернет-магазин, приходится высылать своим клиентам счета на оплату по электронной почте. Для этого они печатают счет, несут его на подпись, ставят печать и, наконец, сканируют готовый к отправке документ.
Весь процесс в среднем занимает около 5 минут, что при обороте компании в 8000 счетов в год с отделом продаж из 4 человек и 8 часовом рабочем дне, путем нехитрых вычислений может обернуться в месяц работы. То есть, если бы менеджеры занимались только сканированием счетов, то у них на это ушел бы почти месяц! Теперь посчитайте, сколько компания платит за месяц работы четырем менеджерам.
Рождение идеи.
После всего вышесказанного приходит только одна мысль - как ускорить этот процесс. Сначала мы просто сохраняли документ в формат Excel с вшитыми внутрь изображениями печатей и подписей. Однако, вскоре, стало ясно, что некоторые клиенты не могут открыть столь популярный формат xls. Тогда пришла в голову мысль: JPG - один из самых распространенных форматов изображений в мире - нужно использовать его.
Технология работы.
Ничего нового я не придумал, однако я решил, что стоит об этом написать. Скачиваем и устанавливаем виртуальный принтер "PDFCreator". Чтобы наши отсканированные документы имели печать и подпись, необходимо вставить их оригинал в формате PNG в макеты нужных документов, и самое главное, установите свойство "Выводить на печать=ЛОЖЬ", чтобы простой вывод на принтер был без лишнего мусора. Теперь, чтобы все заработало, открываем Конфигуратор -> Общие формы -> ПечатьДокументов. Создаем кнопку "Сканировать". Далее в обработке события по нажатию пишем следующий код:
//Разрешаем вывод печатей и подписей
ЭлементыФормы.ПолеТабличногоДокумента.Защита = Ложь;
ЭлементыФормы.ПолеТабличногоДокумента.ТолькоПросмотр = Ложь;
ЭлементыФормы.ПолеТабличногоДокумента.Рисунки.Получить(1).ВыводитьНаПечать = Истина; //Печать
ЭлементыФормы.ПолеТабличногоДокумента.Рисунки.Получить(0).ВыводитьНаПечать = Истина; //Подпись 1
ЭлементыФормы.ПолеТабличногоДокумента.Рисунки.Получить(2).ВыводитьНаПечать = Истина; //Подпись 2
Попытка
PDFCreator = Новый ComОбъект("PDFCreator.clsPDFCreator");
PDFCreator.cStart("/NoProcessingAtStartup" );
PDFCreator.cClearcache();
PDFCreator.cPrinterStop = false;
//PDFCreator.cDefaultprinter = "PDFCreator";
Если Не PDFCreator.cProfileExists("Печать 1С") Тогда
PDFCreator.cAddProfile("Печать 1С", PDFCreator.cStandardOptions);
КонецЕсли;
///Настройки
PDFCreatorOptions = PDFCreator.cReadOptions("Печать 1С");
//PDFCreatorOptions.NoConfirmMessageSwitchingDefaultprinter = Истина;
PDFCreatorOptions.UseAutosave = 1;
PDFCreatorOptions.UseAutosaveDirectory = 1;
PDFCreatorOptions.AutosaveFormat = 2;
PDFCreatorOptions.AutosaveDirectory = "С:\Temp_1C\";
PDFCreatorOptions.AutosaveFilename = "document";
PDFCreatorOptions.JPEGResolution = 200; //dpi
PDFCreatorOptions.JPEGQuality = 100; //коэффициэнт качества
PDFCreatorOptions.AutosaveStartStandardProgram = 0;
PDFCreator.cSaveOptions(PDFCreatorOptions,"Печать 1С");
PDFCreator.cOptionsProfile = "Печать 1С";
PDFCreator.cOptions = PDFCreatorOptions;
//процесс "сканирования"
ЭлементыФормы.ПолеТабличногоДокумента.ИмяПринтера = Принтер.Item(1);
ЭлементыФормы.ПолеТабличногоДокумента.Напечатать();
//*********************
Исключение
Сообщить("Ошибка");
КонецПопытки;
//Снова запрещаем вывод на печать рисунков
ЭлементыФормы.ПолеТабличногоДокумента.Рисунки.Получить(1).ВыводитьНаПечать = Ложь;
ЭлементыФормы.ПолеТабличногоДокумента.Рисунки.Получить(0).ВыводитьНаПечать = Ложь;
ЭлементыФормы.ПолеТабличногоДокумента.Рисунки.Получить(2).ВыводитьНаПечать = Ложь;
ЭлементыФормы.ПолеТабличногоДокумента.Защита = Истина;
ЭлементыФормы.ПолеТабличногоДокумента.ТолькоПросмотр = Истина;
Готово. Наш документ отсканирован и сохранен по адресу C:\Temp_1C\document.jpg. Можем его смело отправлять по почте.
Бонус.
Вообще говоря, я немного усовершенствовал эту систему, добавив функцию автоматической отправки почты уже с вложенным "сканом" документа. Для этого вам нужно воспользоваться вот этой обработкой - ее необходимо вставить в конфигурацию и назвать СоздатьПисьмо. Теперь немного добавим к вышеописанному коду:
Форма = Обработки.СоздатьПисьмо.Создать().ПолучитьФорму();
Подпись = "Стандартная подпись".
Форма.ЭлементыФормы.ПолеТекст.УстановитьТекст(Подпись);
Форма.Тема = "Счет на оплату.";
Форма.ОткрытьМодально();
Теперь, в коде основной формы обработки "СоздатьПисьмо" пишем:
Процедура ПриОткрытии()
Сообщ = Новый ПочтовоеСообщение;
Предупреждение("Сканируем... Не закрывайте это окно!",15); //Даем время чтобы PDFCreator успел отсканировать
Строка = Вложения.Добавить();
Строка.ИмяФайла = "document.jpg";
Строка.Путь = "C:\Temp_1C\document.jpg";
КонецПроцедуры
На этом все. Теперь, при нажатии созданной нами кнопки, документ будет автоматически сканироваться и вставляться во вложения отправляемой почты. Вам необходимо только дописать текст и добавить схему проезда во вложения.
Надеюсь, кому-то статья пригодится.