На удивление все оказалось очень удобно с точки зрения работы в 1С. Пользователь нажимает одну кнопку и получает готовый результат, подписанное изображение, привязанное к документу в 1С.
Конкретная реализация зависит от вашего оборудования и программного обеспечения.
В нашем случае схема работы такая:
Устанавливаем на компьютер PDF принтер, в нашем случае был PDF24 Creator.
Готовим печатную форму документа с прямой печатью на PDF принтер
//Сначала удалим старые PDF
УдалитьФайлы("C:\PDF\", "*.pdf");
ТабДокумент.ИмяПринтера = "PDF24 PDF";
НаПринтер = Истина;
В настройках PDF принтера указываем, что при печати необходимо автоматически сохранять в папку, например, C:\PDF
Затем сразу после кода, который отвечает за печать, вставляем код, который запустит утилиту захвата подписи (в нашем случае батник)
СтрокаКоманды = "C:\PDF\ElPod.bat";
ЗапуститьПриложение(СтрокаКоманды,,Истина,);
Текст батника для примера: "C:\Program Files (x86)\Wacom sign pro PDF\jre7\bin\javaw.exe" -client -Djava.library.path="C:\Program Files (x86)\Common Files\Florentis;C:\Program Files (x86)\Wacom sign pro PDF\SignPro_lib" -Dfile.encoding=UTF-8 -jar "C:\Program Files (x86)\Wacom sign pro PDF\signpro.jar" c:\PDF\RKO.pdf
Сотрудник расписывается на планшете. Графический планшет берет PDF, добавляет в нее подпись и сохраняет PDF.
После закрытия утилиты графического планшета управление вернется к 1С (третий параметр ДождатьсяЗавершения = Истина ).
И мы сразу, незаметно для пользователя, прикрепляем PDF к документу 1С.
НовыйФайл = Новый ДвоичныеДанные("C:\PDF\RKO.PDF");
НовыйХЗ = Новый ХранилищеЗначения(НовыйФайл);
НоваяКартинка = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
НоваяКартинка.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл;
НоваяКартинка.ИмяФайла = "Ведомость.pdf";
НоваяКартинка.Наименование = "Ведомость";
НоваяКартинка.Объект = Ссылка;
НоваяКартинка.Хранилище = НовыйХЗ;
НоваяКартинка.Записать();
Для пользователя 1С все это происходит незаметно, он нажимает печать и после этого видит готовый документ, прикрепленный в 1С.
В итоге вместо 3 шт. используемого оборудования + бумаги и краски мы используем 1 оборудование.
Которое к тому же очень легкое, наши пользователи порой работают с парой «Ноутбук + планшет», которые берут с собой.
В дальнейшем в PDF можно видеть человека, который подписался.
В зависимости от выбора оборудования существуют различные настройки вывода информации на планшет, в нашем случае это редактирование информации о назначении и сумме платежа:
//Отредактируем XML с настройками
ИмяПользователя = СтрЗаменить(ПользователиИнформационнойБазы.НайтиПоИмени(глЗначениеПеременной("глТекущийПользователь")).ПользовательОС, "\\GROUP1\", "");
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать("c:\Users\" + ИмяПользователя + "\AppData\Roaming\Wacom\signpro\signpro.xml", КодировкаТекста.UTF8);
ТекстXML = ТекстовыйДокумент.ПолучитьТекст();
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.УстановитьТекст(ТекстXML);
ТекстовыйДокумент.ЗаменитьСтроку(16, "<entry key=""user_name"">" + ФизическиеЛица[0].ФизическоеЛицо.Наименование + "</entry>");
ТекстовыйДокумент.ЗаменитьСтроку(21, "<entry key=""signing_reason"">" + "Выдача денег в размере " + СуммаДокумента + " " + ВалютаДокумента.Наименование + "</entry>");
ТекстовыйДокумент.Записать("c:\Users\" + ИмяПользователя + "\AppData\Roaming\Wacom\signpro\signpro.xml", КодировкаТекста.UTF8);
Готовая реализация может меняться от вашего оборудования и поставленных задач, но общую концепцию я описал.