gifts2017

Использование графического планшета для подписи в 1С

Опубликовал Владимир Поздняков (Red_Devil) в раздел Программирование - Практика программирования

Есть у нас рабочие места, в которых происходит выдача денег/товаров и т.п. в которых человек расписывается о получении материальных ценностей. После этого печатная форма печатается, отдается на подпись, сканируется, прикрепляется в 1С, затем уничтожается в шредере. Возникла идея отказаться от 3 действий (печать + сканирование + уничтожение в шредере) и воспользоваться графическим планшетом с функцией захвата подписи.

На удивление все оказалось очень удобно с точки зрения работы в 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);

Готовая реализация может меняться от вашего оборудования и поставленных задач, но общую концепцию я описал.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Павел Колабухов (kolabaister) 13.10.16 19:02
Реализация интересная и изобретательная, но имеет ли такая подпись какую то юридическую силу?
leonidol; корум; Serega-artem; madonov; sasha777666; Kott01; +6 Ответить 2
2. Максим Кузнецов (Makushimo) 14.10.16 07:03
(1) kolabaister,
а уничтоженный в шредере подписанный документ?
он имеет юридическую силу?
корум; madonov; +2 Ответить 1
3. Владимир Поздняков (Red_Devil) 14.10.16 08:34
(0) В нашем случае ответ в (1) тут чисто формальность, "для галочки" что бы решать споры с сотрудниками) Но электронный ключ можно оформить через юр отдел, он будет иметь юридическую силу. Правда сертификат будет оформлен на компанию а не на сотрудника, но в подписи зашито ФИО сотрудника, на последнем скрине видно.
4. Марат Ганеев (Ober2010) 14.10.16 10:40
Интересное решение..

Я пошел другим путем, когда делал нечто подобное, использовал Wacom-Signature-SDK (2 com объекта из SDK: Florentis.SigCtl и Florentis.DynamicCapture) , формировал обычный табличный документ, его подписывал и сохранял в pdf, pdf прикреплял к документу РКО. SDK позволяет вернуть картинку подписи в формате Base 64, а дальше дело техники.

Сокращенно как то так :

 

	DC.Capture(SigCtl,Фио,"Распишитесь: ", null, null); // окно захвата подписи
        
        SigObj = SigCtl.Signature;
        СтрокаBAse64 = SigObj.RenderBitmap("", dimensionX,dimensionY,"image/png", ТолщинаПераММ , 16711680, 16777215, -1, -1, 524288+8192+65536+1048576) ;  

	 ДвоичныеДанные = Base64Значение(СтрокаBAse64);
        
         Новый Картинка(ДвоичныеДанные,Истина);


...Показать Скрыть


с батником не додумался ( видать документацию плохо курил)

P.S. Оборудование Wacom STU 430 .

корум; Muhin555; Red_Devil; +3 Ответить 1
5. Владимир Поздняков (Red_Devil) 14.10.16 11:41
(4) у нас Wacom STU 530 думаю разница не велика
6. Марат Ганеев (Ober2010) 14.10.16 11:56
(5) Red_Devil, у них даже инструкция одна на 430 и 530
7. Дмитрий Егоров (Diego_Iv) 14.10.16 12:10
Прикольная и нужная штука.
Только в типовой конфигурации любой пользователь может как наприкреплять "своих подписей", так и поудалять или исправить "чужие".
В результате не получится так : "Я ничего не знаю, я этого не подписывал..." ?
8. Владимир Поздняков (Red_Devil) 14.10.16 13:06
(7) как настроишь планшет. Он может блокировать PDF от изменения. И как настроишь 1С, по умолчанию это всего лишь прикрепленный файл, дальше как хочешь блокируй.
9. Павел Колабухов (kolabaister) 14.10.16 13:37
(2) Makushimo, ни малейшей. И скан тоже, без хранящегося где то оригинала, ничего не стоит. Да, как ответил (3) Red_Devil, видимо, только для усиления чувства ответственности сотрудников сделано)
10. Виктор Перевальский (perevalsky) 19.10.16 07:37
Очень интересное применение. У нас есть готовый продукт для аутентификации по подписи на планшете и мобильных устройствах http://www.signtologin.com/. Предлагаю интегрироваться с вашим решением. Можем предоставить API - функции.
11. Dim Dragonim (Dragonim) 19.10.16 08:46
Такая идея с подписями хороша для тёмных сотрудников, которые ни чего про юридическую значимость и возможность электронной подделки не слышали и слышать не хотят. Немного поинтересовавшись можно узнать, юридическая силы такая подпись не имеет, подделывается проще чем реальная подпись.

Вся эта идея с подписями на электронных устройствах обычная профанация и попытка показаться защищёнными и значимыми в доме из трёх стен.
12. Антон Антонов (monkbest) 19.10.16 10:16
(11) Dragonim, почему не имеет? Смотря как хранить и обрабатывать подписанный документ, можно навернуть криптографию и все будет очень даже
главное, чтобы не было технической возможности отделить подпись от документа и приляпать его к другому документу
13. Neman Entorin (ne_en) 20.10.16 14:07
(12) monkbest, Так в том то и дело, что что бы там не навернули, юридической силы это иметь не будет все равно. В суде всегда можно заявить, что у вас есть техническая возможность обойти эти механизмы, т.к. программист может включать и выключать что угодно, и пере создавать сколько угодно документов с прикреплёнными подписями не зависимо от того, что человек документов этих в глаза никогда не видел. Принятие таких подписей в суде будет возможно только в том случае, если программа будет "сертифицирована" в отношении того, что не возможна подделка в программе подписи никем, а так же установлена надёжная блокировка от внесения изменений в программу и применения внешних программ. А до тех пор, только хранящаяся бумажная копия или свидетели (причём не все свидетели одинаково полезны) постановки этой подписи могут сделать такую подпись легитимной.
awk; dddxddd; +2 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа