gifts2017

Биометрия ANVIZ для отпечатков пальцев в 1с8

Опубликовал Осипов Сергей (fixin) в раздел Оборудование

В статье изложена практическая методика использования сканеров Anvizс бесплатным SDKдля идентификации пользователей в конфигурациях 1с. Приложена демо-база 1С81 и exe-коннектор между 1С и сканером.
Опыт внедрения

Для нужд своих клиентов я внедрил биометрию на базе сканера ANVIZOA 99.


Выбор оборудования был обусловлен:

1.      Отсутствие платы за SDK. Т.е. можно разрабатывать любые программы, взаимодействующие со сканером бесплатно. В среднем SDK других производителей стоит 1000$.

2.      Отсутствие платы за лицензию на сканер при использовании собственных программ, разработанных на SDK. В среднем лицензия стоит 20$ на сканер.

3.      Известность бренда Anviz.

4.      Принцип работы аналогичен сканерам ULINK, особо популярным в России.

 

Мой поставщик поставляет ANVIZOA99 по цене 4400 при поставке от 10 штук. Оборудование надо заказывать заранее, в запасе обычно не более 5 устройств, поставка – 1,5-2 месяца, но можно поискать и у других поставщиков.

 

Для сопряжения 1С со сканером было разработано приложение-коннектор на VB6, управляемое из командной строки.

Оно понимает команды:

1.      Получения отпечатка пальца

2.      Верификации отпечатка с ключом отпечатка.

3.      Идентификации пользователя по базе ключей отпечатков

 

SDKAnviz содержит функции для получения и распознавания отпечатков. Поэтому приложение просто интерпретирует переданные команды и вызывает функции SDK. Функции расположены в DLL, но напрямую DLL из 1С вызывать нельзя, поэтому используется программа-посредник с управлением через командную строку.

 

Как вариант, можно было бы написать внешнюю компоненту, но есть недостатки:

1.      Компонента требует регистрации на компьютере под администраторскими правами.

2.      COM-объекты более глючные и чаще зависают (проверено на практике).

 

Для идентификации формируется файл базы отпечатков, который считывает коннектор в режиме идентификации и по нему распознает пользователя. Файл формируется через компоненту ADODB, которая есть по умолчанию в любой Windows.

 

Программа-коннектор имеет форму, где все указания и команды сделаны на русском языке, текстом, понятным простому сотруднику.

 

На данный момент в базе 75 пользователей, каждый сдал по 2 отпечатка левого и правого указательных пальцев, но можно сдавать отпечатки любых пальцев. Постепенно база растет. Ошибок распознавания и жалоб на работу оборудования замечено не было.

 

Существующие недостатки решения:

1.      После ввода отпечатка пальца окно программы-коннектора закрывается, но фокус отдается не в 1с, а в следующее в Z-последовательности окон приложение. Решаемо, но пока не занимался.

2.      Драйвер ANVIZ работает только под администраторскими правами, производитель драйвера менять это поведение не собирается. Мы выкрутились через использование CPAU, которая позволяет запускать программу под правами администратора. Возможно, можно найти, какое именно право нужно, но у нас не получилось. Это какое-то из прав работы со съемными дисками, навскидку.

3.      COM-компонента – более защищенное решение, хотя и в приложение, управляемое через командную строку, сложно вмешаться. Но, в принципе, если изменить базу отпечатков пальцев, то можно теоретически совершить манипуляцию. Но это не недостаток решения, просто, если требуется, нужно уделить больше внимания правам доступа.

4.      Неизвестно, можно ли сделать mappingдрайвера устройства в терминальном режиме.

 

Само решение состоит из следующих модулей:

1.      Программа-коннектор на VB6, использует SDK в виде DLL-файлов. Вызывается и управляется через командную строку.

2.      Модуль в 1С для подготовки данных для коннектора и вызова коннектора.

3.      Обработка в 1С для снятия отпечатков сотрудников, их тестовой верификации и идентификации.

 

В 1С в форму выбора физических лиц добавляется кнопка, по нажатию на которую физическое лицо выбирается через сканер.

Соответственно, 1С получает подтверждение о том, что физлицо выбрано через сканер и можно это контролировать.

 

Существует функция для выбора физлица, которая может вызываться из нужных мест программы. В ней контролируется, что физлицо было выбрано через сканер (биометрически). Для некоторых физлиц допускается возможность работы без отпечатков (исключения), если, например, их отпечатки не снимаются. Но такого у нас не было, т.к. можно снимать любой палец, а не только указательный.

 

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

 

Если в программе используется не справочник ФизическиеЛица, а другой, нужно адаптировать программу под соответствующий справочник, что делается в 1С достаточно тривиально.

 

Демонстрационные данные

Для проверки работоспособности программы с вашим сканером выложена демонстрационная версия программы.

Для начала работы с программой нужно:

  1. Создать папку anviz в корне диска C: и скопировать в нее содержимое каталога anviz.
  2. Файл 1Cv8.1CD – это файл базы данных 1С81. Пропишите его в список баз и откройте, зайдите под пользователем Администратор с пустым паролем.
  3. Подключите сканер в USBпорт.

Для того, чтобы программа работала нужно, чтобы у пользователя были права администратора.

 

Интерфейс минимальный:

 

В справочнике Физические лица заведено трое сотрудников:

Пункт меню «Ввод отпечатков anviz» открывает обработку, которой пользуется администратор базы данных отпечатков для сбора, удаления и изменения отпечатков пальцев. Для проверки можно выполнить добавление отпечатков, верификацию, идентификацию, смотрите раздел «Работа администратора базы данных отпечатков».

Работа администратора базы данных отпечатков

Обработка, с которой работает администратора базы данных отпечатков, имеет вид:

Добавление отпечатка пальца:

  1. Нужно выбрать сотрудника в поле «Сотрудник»
  2. Выбрать палец, который сканируется. Можно выбрать из списка или использовать кнопки быстрого выбора «Ук-лев» или «Ук-прав».
  3. Попросить сотрудника положить палец на устройство и не отпускать.
  4. Нажать кнопку «Добавить отпечаток». Откроется окно программы-коннектора. При этом отпечаток сразу считается, т.к. сотрудник приложил палец.Будет отображена картинка отпечатка и добавлена строчка в список отпечатков сотрудника.
  5. Нажать кнопку «Верификация». Будет еще раз получен отпечаток пальца и произведено сопоставление полученного отпечатка со слепком в базе данных. Если верификация прошла неуспешно несколько раз, удалить отпечаток и снять повторно.
  6. Нажать кнопку «Обновить базу отпечатков». При этом все отпечатки, хранимые в базе, будут собраны в файл, используемый для идентификации.
  7. Нажать кнопку «Идентификация». Будет еще раз получен отпечаток пальца и произведено его сопоставление с базой всех отпечатков.
  8. В результате идентификации сотрудник должен быть опознан и выдана фамилия сотрудника в поле «Сотрудник».

 

Удаление отпечатка:

  1. Установить курсор в списке на удаляемый отпечаток.
  2. Нажать кнопку «Delete» на клавиатуре. Подтвердить удаление.

Особенности подключения сканера в Windows

Устройство распознается как USB-флешка:

Особенности реализации в 1С

В 1С используются следующие объекты:

  1. Модуль _Anviz- основные функции для работы с биометрией Anviz.
  2. Модуль _AnvizLocal- локальные для клиента особенности реализации биометрии.
  3. Регистр _БиометрияAnviz- хранит отпечатки сотрудников
  4. Константы ДанныеБиометрииAnvizи ДанныеБиометрииAnviz2 - используются для хранения уже готовой базы данных отпечатков для идентификации.

 

Для того, чтобы клиент мог по-своему написать некоторые нюансы реализации, в модуле _AnvizLocal реализованы вызовы событий, которые можно реализовать по-своему, не затрагивая основной модуль _Anviz:

  1. УстановитьФайлыБиометрии– может содержать код, распаковывающий программу-коннектор из архива на компьютер пользователя. Полезно в РИБ.
  2. АдресКаталогаФайлов– возвращает адрес, где хранятся данные биометрии и программа-коннектор.
  3. ПолучитьСотрудниковСОтпечатками– запрос по регистру с отпечатками, можно скорректировать.
  4. СохранитьДанныеБиометрии– сохраняет упакованные в двоичный файл данные отпечатков в базу данных.
  5. ВосстановитьДанныеБиометрии– восстанавливает упакованные в двоичный файл данные отпечатков из базы данных.
  6. ДатьЛокальнуюКомандуЗапускаПриложенияAnviz– возможность запустить программу-коннектор из другого места или другим способом.
  7. ВосстановитьФокус – собственная реализация восстановления фокуса 1С после отработки программы-коннектора.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
down.zip
.zip 310,99Kb
03.01.13
48
.zip 310,99Kb 48 Скачать
Прокладка ANVIZ.EXE, поддерживающая UBIO и OA99 одновременно
.zip 786,69Kb
01.11.13
27
.zip 786,69Kb 27 Скачать

См. также

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

Комментарии

1. Евгений Рачковский (eugen91) 04.01.13 13:16
Добрый день, кто использовал, поделитесь пожалуйста информацией и впечатлениями от использования. Хотели бы в перспективе нечто подобное внедрить.
2. Осипов Сергей (fixin) 04.01.13 14:48
(1) eugen91, лично у меня все работает. Единственное, что бесит - потеря 1ской фокуса. Если бы написать как COM-объект, такого бы не было. В настоящее время ищу, как вернуть 1ске фокус после команды ЗапуститьПриложение.

Кстати, до этого использовал EKEY, но там платный SDK 1000$
3. Сергей Буланкин (bulas) 09.01.13 08:40
Знаком с дактилоскопическими системами Папилон и Сонда Плюс. А на 1с впервые, здорово.
4. Осипов Сергей (fixin) 09.01.13 10:40
(3) ну у меня есть опыт внедрения на EKEY. Но там SDK платное, соответственно, чтобы легально использовать 1с:Коннектор, нужно заплатить 1000$ на контору, где используется биометрия. Т.е. цену 20 сканеров. Маразм.

То же самое и с Биолинк, ну на эту тему тут статья на ИС есть.
5. tnk (tnk) 09.01.13 14:52
6. Осипов Сергей (fixin) 09.01.13 14:56
(5) вряд ли напрямую. устройство подключается как флеш-карта (мобильный диск), даже если подключать RDP с локальным оборудованием, не уверен. У кетайцев не через COM-порт сделано.

Ну или извращаться с общим каталогом, т.е. создать общий каталог, туда отправлять отсканированный палец, но приложение на компе пользователя надо или вручную запускать или службу подымать.
7. OldthiefXXX OldthiefXXX (OldthiefXXX) 22.03.13 22:39
8. myv (JuliettT) 30.03.13 13:34
Мне очень нужно всего 2 СМ....)) переведите пожалуйста...
9. Игорь Гречкин (Grekk) 24.10.13 10:07
Сергей, здравствуйте. Ваша прокладка написана для OA99, но ОА99 выпускалось до декабря 2012. С января 2013 уже начали выпускать и поставлять Ubioreader. В результате прокладка не работает с новыми устройствами. Есть готовое решение?
10. Осипов Сергей (fixin) 25.10.13 10:43
да, новая прокладка есть. Она написана так, что работает с обеими типами сканеров, т.к. в конторе, где внедрял, старые есть и новые.
11. Осипов Сергей (fixin) 01.11.13 12:28
выложил новую прокладку, поддерживает OA99 и UBIO одновременно.
Наслаждайтесь.
Тут без сырцов.
12. Алексей Ко (Жолтокнижниг) 07.11.13 12:35
А смысл этого продукта? Используется обмен с терминалами?
13. Осипов Сергей (fixin) 07.11.13 13:00
нет, ANVIZ на уровне SDK терминалы не поддерживает, надо писать свой драйвер. Несложный, в принципе.
14. Vitaly Belenky (vitus_b) 08.11.13 17:12
Тут только демо-версия ? А как приобресть рабочую?
15. Осипов Сергей (fixin) 08.11.13 18:39
(14) Это полностью рабочая версия, но без сырцов. Сырцы - в личку.
16. Олег Грибов (Oboron) 05.02.15 12:09
>Единственное, что бесит - потеря 1ской фокуса...
Я для решения подобной проблемы использовал "нетленку": здесь
У меня была проблема в том, что окно сканирования было не в фокусе. Я решил её так:
1. До запуска сканирования получаем массив дескрипторов запущенных окон
ВКНетленка.ПолучитьДревоОкон(ВКНетленка.ДескрипторРабочегоСтола)).ВыгрузитьКолонку("Дескриптор")

2. После запуска получаем второй массив дескрипторов. Сравниваем - находим нужное окно.
3. Настраиваем окно:
Параметры = Новый Структура;
Параметры.Вставить("ПоверхДругихОкон", Истина);
ВКНетленка.НастроитьОкно(ДескрипторОкнаСканирования, Параметры);


В Вашем случае можно еще проще:
1. ДескрипторАктивногоОкна|GetHandleOfForegroundWindow
Описание: Получает дескриптор активного (текущего) окна.
Параметры: без параметров.
Возвращаемое значение: 4-х байтное, целое, беззнаковое. Дескриптор активного окна.

2. Сканируем...

3. АктивироватьОкно|SetForegroundWindow
Описание: Активирует указанное окно и помещает его на передний план.
Параметры:
ДескрипторОкна – 4-х байтное, целое, беззнаковое. Принимает дескриптор окна, для которого будет выполняться активация.
Возвращаемое значение: значение не возвращается.
17. Осипов Сергей (fixin) 26.09.15 00:14
из новостей - наваял ВК для ANVIZ UBIO и внедрил её в Розница 2.0 (на управляемых формах). Кстати, УФ теперь не боюсь.
18. Nikky (Nikky) 05.02.16 19:28
(17) fixin, а можете рассказать о своей компоненте поподробнее? а может и выложить? ))
19. Осипов Сергей (fixin) 05.02.16 22:02
20. Nikky (Nikky) 08.02.16 11:14
(19) fixin, не нашел публикацию в которой вы её продаете, можете ткнуть носом? или по вопросу продажи этой компоненты в личку?
21. Осипов Сергей (fixin) 08.02.16 14:50
22. Алекс Алекс (alexoid666) 28.06.16 11:40
Добрый день!
Занимаюсь задачей подключения сканера Anviz U Bio Reader к 1С8.2.
В принципе, суда по описанию, эта разработака позволяет решить мои задачи. Есть 2 вопроса:
1. решена ли в результате проблема потери фокуса?
2. прокладка по прежнему запускается только из под Админа?
(у нас на местах права урезаны, в том числе заблокированы флешки. А сканер вроде именно как флешка подключается)

Так-же есть второй вариант:
В комментарии №17 написано "из новостей - наваял ВК для ANVIZ UBIO и внедрил её в Розница 2.0 (на управляемых формах). "
Я так понимаю, эта компонента продается. А как у нее со стабильностью работы? (у нас сеть магазинов - стабильность на первом месте). Обладает ли она проблемами "прокладки": потеря фокуса, запуск только под админом?
23. Осипов Сергей (fixin) 28.06.16 15:30
(22)
1. Я уже переписал в виде компоненты, но для ее установки вам понадобятся права админа. Хотя и в обычной прокладке проблема с Админом решена.
2. Т.к. работа идет через ВК теперь, то потеря фокуса не актуальна.
24. Алекс Алекс (alexoid666) 28.06.16 16:25
1. Я уже переписал в виде компоненты, ...

То есть в этой "раздаче" уже лежит компонента?

25. Осипов Сергей (fixin) 28.06.16 17:20
(24) нет, здесь я не выкладываю то, что продаю.
Писал компоненту под одного клиента для розницы, там банальная обертка для API, не знаю, чему там вылетать.

Позвоните, обсудим. 8 909 153 29 87 Сергей
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа