Настройка интеграции PROSTO:СКУД с биометрической системой O-VISION
InformationO-VISION — современная биометрическая система контроля доступа на базе алгоритмов распознавания лиц. Интеграция с PROSTO:СКУД обеспечивает автоматическую передачу списков сотрудников, фотографий и структуры предприятия из 1С в терминалы O-VISION, а также получение точных событий проходов для автоматического расчета табеля Т-13.
1. Описание интеграции
Обмен данными между «1С:Предприятие» и сервером O-VISION выполняется по защищенному протоколу REST API (HTTPS/OAuth2).
Ключевые принципы взаимодействия:
- Двухуровневая модель персоны: В O-VISION для каждого человека создается Объект (Персона), к которому привязывается Профиль сотрудника (с указанием подразделения и табельного номера).
- Оргструктура: В O-VISION структура предприятия формируется списком Подразделений (понятие «Группы доступа» отсутствует).
- Бережная синхронизация (Защита карт и уровней): Идентификаторы (пропуска/карты) и уровни доступа к терминалам назначаются непосредственно в веб-интерфейсе O-VISION. Модуль 1С управляет кадровыми данными и фото, не затирая назначенные в СКУД права и пропуска.
2. Предварительные требования на стороне O-VISION
Перед началом настройки интеграции в 1С убедитесь, что выполнены системные условия:
WarningКритически важно для учетной записи API:
В веб-интерфейсе O-VISION для интеграции должна быть создана сервисная учетная запись с ролью Администратор (Administrator).
В текущих версиях API O-VISION сервисная роль с ограниченными правами «Интеграция» блокирует получение списков персонала.
- Сетевой доступ: Сервер 1С имеет прямой сетевой доступ к серверу O-VISION по порту веб-сервиса (по умолчанию `443` или порт вашей публикации).
- Топология: В интерфейсе O-VISION созданы терминалы распознавания лиц (Точки доступа) и зоны (Территории).
3. Настройка подключения в 1С
Для настройки подключения к СКУД O-VISION необходимо перейти в "Настройки подсистемы PROSTO:СКУД" и установить флаг для используемого СКУД.
Для создания узла подключения перейдите в меню:
PROSTO:СКУД ➝ Интеграция со СКУД ➝ справочник Системы контроля доступа (СКУД) ➝ кнопка «Создать».
| Параметр | Значение / Пример | Назначение | |
|---|
| Наименование | `O-VISION` | Пользовательское название узла подключения | |
| Система контроля доступа | `O-VISION` | Выбор типа интеграционного драйвера | |
| Используется | ☑️ (Включено) | Флаг активности узла обмена | |
| Сервер | `ab.ovision.ru` | IP-адрес или доменное имя сервера O-VISION | |
| Логин / Пароль | `admin / *` | Учетные данные пользователя O-VISION с правами админа | |
InformationПроверка связи
После заполнения полей нажмите кнопку «Проверить соединение».
При корректных настройках появится сообщение: «Соединение установлено». После этого нажмите «Записать».
На второй вкладке указываются дополнительные настройки, отвечающие за параметры и состав данных, участвующих в интеграции. Для первоначальной настройки рекомендуется воспользоваться кнопкой «Заполнить по умолчанию».
4. Параметры синхронизации (Дополнительные настройки)
На вкладке «Дополнительные настройки» карточки СКУД задаются правила поведения обмена. Рекомендуемые параметры:
Организационная структура
- Создавать организации / Создавать подразделения (Да): создание отделов в 1С при чтении из СКУД.
- Создавать организации СКД / Создавать подразделения СКД (Да): автоматическая выгрузка структуры отделов из 1С в O-VISION.
- Синхронизировать только действующие подразделения (Да): исключает передачу расформированных отделов.
- Подразделение по умолчанию: резервный отдел в O-VISION для сотрудников без кадрового подразделения в 1С.
Персонал и биометрия
- Создавать физических лиц СКД (Да): создание новых персон (Объект + Профиль) в O-VISION при выгрузке из 1С.
- Создавать фото физических лиц СКД (Да): выгрузка фотографий сотрудников из 1С в O-VISION для биометрической идентификации.
- Синхронизировать только работающих сотрудников (Да): уволенные сотрудники не выгружаются в активный список.
- Автоматически выгружать сотрудников при приеме на работу (Да):при проведении кадрового приказа в 1С сотрудник автоматически встает в очередь фоновой выгрузки в O-VISION.
- Синхронизировать сотрудников всех организаций СКД: при значении Да выгружаются все сотрудники базы; при Нет — только по организациям из разрешенного перечня.
Увольнение
- Автоматически блокировать сотрудников СКД (Да): при увольнении в 1С профиль сотрудника в O-VISION блокируется (доступ закрывается).
- Подразделение для уволенных: выбор архивной папки O-VISION, куда перемещается уволенный персонал.
Подключение
- Порт : порт сервера O-VISION (по умолчанию 8 000).
- Таймаут: время ожидания ответа, сек.
- Защищенное Соединение: использование SSL.
Оборудование
- Создавать контроллеры (Да): разрешает автоматическое создание элементов в справочнике 1С «Контроллеры» при чтении терминалов из O-VISION.
- Создавать территории (Да): разрешает загрузку зон доступа из O-VISION в справочник 1С «Территории».
Обмен
- Регистрировать историю обмена (Да): подробные записи об операциях обмена (объект, статус Успешно/Ошибка, тело ответа API) пишутся в регистр «История обмена со СКУД».
- Использовать отложенную выгрузку: изменения регистрируются в узле обмена и выгружаются регламентным заданием по расписанию, а не в момент записи объекта.
5. Начальная синхронизация с OVISION
Существует два подхода начала работы с системой:
- Все справочные данные создаются в системе PROSTO:СКУД и выгружаются в СКУД регламентным заданием после настройки (см. раздел 6).
- СКУД OVISION уже запущена на момент внедрения и содержит данные. Для этого в системе PROSTO:СКУД предусмотрена обработка Начальной синхронизации.
Механика обработки:
- Выберите Систему контроля доступа и, перемещаясь между вкладками в порядке их расположения, поочередно синхронизируйте объекты.
- Для отображения данных в табличной части нажмите «Заполнить». Каждая запись об объекте разделяется на две строки: первая — данные из 1С, вторая — данные из СКУД.
- Первичное сопоставление производится по SID и по наименованию (для сотрудников — по SID, а при пустом SID по ФИО и Табельному номеру). При расхождении данных в первой колонке указывается, что значения различаются; данные можно сопоставить вручную либо создать недостающие объекты обработкой.
- Выберите приоритет синхронизации: 1С (выгрузка в СКУД) или СКУД (загрузка из СКУД), отметьте строки флажками и нажмите «Синхронизировать».
- При успешной синхронизации в первой колонке появится надпись «Данные синхронизированы», а в регистре сведений «Идентификаторы объектов СКУД» создастся запись идентификатора (SID) объекта.
5.1 Организации и Подразделения.
При создании организационной структуры предприятия в системе OVISION организации встают в верхний уровень иерархии справочника «Подразделения» корневой элемент, который находится в разделе «Объекты» название которого обычно совпадает с названием предприятия (организации). Подразделения тоже хранятся в справочнике «Подразделения», с возможностью создания многоуровневого раскрывающегося списка структурных подразделений.
Первичное сопоставление данных происходит по наименованию. Возможна двухсторонняя интеграция:
- Приоритет 1С: в OVISION создаются соответствующие организации и подразделения с сохранением иерархии (родительских папок).
- Приоритет СКУД: в 1С загружаются организации и подразделения.
- С настройкой СинхронизироватьТолькоДействующиеПодразделения расформированные подразделения не выгружаются и не сопоставляются.
5.2 Территории и Контроллеры
В системе O-VISION точки прохода и зоны доступа настраиваются администратором в разделе «Зоны и устройства» на соответствующих вкладках.
InformationОсобенность интеграции с O-VISION:
Обмен топологией оборудования работает строго в одном направлении: из СКУД в 1С.
Создание зон и терминалов из 1С в O-VISION аппаратно отключено — первоисточником оборудования всегда является сервер O-VISION.
Шаг 1. Импорт топологии из O-VISION в 1С
Загрузка выполняется через обработку:
PROSTO:СКУД ➝ Первичная синхронизация данных.
- Вкладка «Территории»:
- Перейдите на вкладку, нажмите кнопку «Заполнить» ➝ «Синхронизировать».
- Зоны доступа запишутся в справочник 1С с сохранением уникальных идентификаторов `SID O-VISION`.
- Вкладка «Контроллеры»:
- Перейдите на вкладку, нажмите кнопку «Заполнить» ➝ «Синхронизировать».
- Биометрические терминалы распознавания лиц будут загружены в справочник 1С «Контроллеры».
Шаг 2. Разметка рабочих зон (Справочник «Территории»)
После завершения импорта необходимо указать системе, какие из загруженных зон считаются рабочими (влияют на оплату труда), а какие служебными или нейтральными (улица, парковка, КПП).
- Перейдите: PROSTO:СКУД ➝ Справочники ➝ Территории (СКУД).
- Откройте карточку территории, где непосредственно работают сотрудники (например, *«Цех №1»*, *«Офис»*, *«Склад»*).
- Установите флаг ☑️ «Это рабочая территория».
- Нажмите Записать и закрыть.
WarningВажно: Если для территории не включен признак рабочей зоны, нахождение сотрудника на ней не будет засчитываться в явку при автоматическом расчете табеля Т-13.
Шаг 3. Настройка векторов движения (Справочник «Контроллеры»)
Чтобы система понимала, пришел сотрудник на работу или ушел домой, для каждого биометрического терминала необходимо задать направления прохода.
- Перейдите: PROSTO:СКУД ➝ Справочники ➝ Контроллеры (СКУД).
- Откройте карточку нужного терминала/турникета.
- Заполните параметры направлений:
- Поле «Территория вход»: выберите территорию, на которую попадает сотрудник при успешном распознавании лица на вход (например, *«Офис»* или *«Производственная площадка»*).
- Поле «Территория выход»: выберите территорию, куда направляется сотрудник при выходе (например, *«Улица»*, *«Внешний периметр»* или *«Неконтролируемая территория»*).
- Нажмите Записать и закрыть.
5.3 Сотрудники
В системе OVISION список сотрудников представляет собой справочник «Объекты», который находится в разделе "Объекты"
Первичное сопоставление данных происходит по SID; если SID пустой — по связке ФИО + Табельный номер, без создания дублей.
При приоритете СКУД: в 1С создаются Физлица; заполняются ФИО и SID OVISION.
Приоритет 1С: в O-VISION создаются Объект (ФИО) и привязанный к нему Профиль сотрудника (Подразделение, Табельный номер).
Сотрудник без указанного отдела в 1С попадает в Подразделение По Умолчанию.
При включенных дополнительных настройках Создавать ФотоФизических Лиц / Создавать Фото Физических Лиц СКД фото корректно передается в профиль OVISION и отображается в карточке физлица 1С.
Фильтры: Синхронизировать Только Работающих Сотрудников исключает уволенных из таблицы; Синхронизировать Сотрудников Всех Организаций исключает, отображение сотрудников всех организаций базы, в таблице будут видны только организаций из разрешенного списка.
5.4 События СКУД
Вкладка предназначена для ручной загрузки данных о событиях проходов сотрудников, которые зафиксировал тот или иной контроллер доступа.
В поле «Период» по умолчанию указывается текущий день, но при необходимости можно задать тот период, за который необходимо получить данные.В табличной части в колонке «Пометка» указано, загрузились ли данные в систему или нет. Для того, чтобы загрузить данные в систему PROSTO:СКУД, нужно выбрать необходимые строки, проставив галочки. Если необходимо выбрать все строки сразу, то можно нажать на кнопку «Установить флажки», после чего нажать на кнопку Синхронизировать.
Данные в колонках табличной части:
- Дата – показывает дату и время, когда сотрудником (физическим лицом) был осуществлен проход через турникет;
- Физ. лицо – отражает полные фамилию, имя и отчество сотрудника;
- Контроллер – отражает информацию о том, через какой контроллер был осуществлен проход;
- Дверь – отображаются данные о направлении прохода, где «0» - это вход, а «1» - выход;
- Территория – отражает данные о том, на какую территорию был осуществлен проход;
- Карта – отражает номер карты, которая была использована при проходе.
6. Настройка автоматического обмена данными с O-VISION и получение событий проходов сотрудников
После первоначального сопоставления данных двух систем 1С и СКУД считается, что 1С выступает мастер системой и выгрузка новых объектов, а также изменения уже сопоставленных должны быть осуществлены и в СКУД.
Для настройки автоматического обмена данными со СКУД необходимо в Сервисах и настройках открыть форму плана обмена «Узлы регистрации объектов для выгрузки в СКУД», где для каждой СКУД в которую планируется выгрузка данных создать узел обмена.
Далее в дополнительных отчетах и обработках во внешней обработке «Регламентные задания СКУД» можно настроить расписание выгрузки.
Не удалось выполнить макрос [html]. Причина: [When using HTML content inline, you can only use inline HTML content. Block HTML content (such as tables) cannot be displayed. Try leaving an empty line before and after the macro.]. Нажмите на это сообщение для получения подробной информации.
org.xwiki.rendering.macro.MacroExecutionException: When using HTML content inline, you can only use inline HTML content. Block HTML content (such as tables) cannot be displayed. Try leaving an empty line before and after the macro.
at org.xwiki.rendering.internal.transformation.macro.HTMLRawBlockFilter.cleanHTML(HTMLRawBlockFilter.java:133)
at org.xwiki.rendering.internal.transformation.macro.HTMLRawBlockFilter.filter(HTMLRawBlockFilter.java:80)
at org.xwiki.rendering.internal.macro.XWikiHTMLRawBlockFilter.filter(XWikiHTMLRawBlockFilter.java:63)
at org.xwiki.rendering.internal.macro.html.HTMLMacro.execute(HTMLMacro.java:160)
at org.xwiki.rendering.internal.macro.html.HTMLMacro.execute(HTMLMacro.java:70)
at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:311)
at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:88)
at org.xwiki.display.internal.DocumentContentAsyncExecutor.executeInCurrentExecutionContext(DocumentContentAsyncExecutor.java:396)
at org.xwiki.display.internal.DocumentContentAsyncExecutor.execute(DocumentContentAsyncExecutor.java:269)
at org.xwiki.display.internal.DocumentContentAsyncRenderer.execute(DocumentContentAsyncRenderer.java:112)
at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:157)
at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:290)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.execute(DefaultBlockAsyncRendererExecutor.java:125)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:67)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:43)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:96)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:39)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:123)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:52)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:68)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:42)
at com.xpn.xwiki.doc.XWikiDocument.display(XWikiDocument.java:1428)
at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:1564)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1514)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1483)
at com.xpn.xwiki.api.Document.displayDocument(Document.java:821)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:704)
at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:75)
at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:242)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.xwiki.velocity.internal.directive.TryCatchDirective.render(TryCatchDirective.java:86)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:233)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:107)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:905)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:867)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:854)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:809)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:801)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:217)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:233)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:107)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:905)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:867)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:854)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:809)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:801)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:217)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:233)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:107)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:905)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:867)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:847)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:833)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:91)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:85)
at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2569)
at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:180)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:650)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:338)
at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:108)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:656)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1792)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Unknown Source)
В этой же обработке задается «Импорт событии СКД (СКУД)» - т.е. периодичность, с которой система будет обращаться к настроенным в ней СКУД и получать события проходов через турникеты.
После описанных выше настроек система будет в автоматическом режиме выгружать данные в СКУД в зависимости от настроек.