Version 6.1 by admin on 2026/06/17 20:02

Show last authors
1 В данном разделе приведены сведения о порядке настройки шаблона формы для вывода данных о владельце и пропуске.
2
3 {{info}}
4 **ПОДСКАЗКА**
5
6 Если вы не хотите разбираться с кодом шаблона формы или вам требуется форма о определенном стиле, с дополнительными графическими элементами, вы всегда можете заказать разработку такой формы у специалистов компании ИТРИУМ.
7 {{/info}}
8
9 [[image:attach:ui.Параметры узла.WebHome@content.png||thumbnail="true" height="10"]] Содержание:
10
11 {{toc/}}
12
13 == {{id name="Настройкаформыфотоидентификации-Общиесведения"/}}Общие сведения ==
14
15 Платформа НЕЙРОСС с версии 20.41 позволяет вывести в форме фотоидентификации любые данные в владельце и пропуске, в том числе пользовательские свойства владельца и пропуска.
16
17 [[image:attach:s_photoid_extended.png||width="900"]]
18
19 {{info}}
20 Инструкция по добавлению пользовательских свойств приведена в разделе ~[[[doc:neyross.Настройка Платформы НЕЙРОСС.Настройка функций контроля доступа.Добавление пользовательских свойств.WebHome]]]. Чтобы вывести свойства в форме владельца и пропуска для ввода данных в АРМ Доступ используйте конструктор форм ~[[[doc:neyross.Настройка Платформы НЕЙРОСС.Настройка функций контроля доступа.Настройка форм ввода данных.WebHome]]].
21 {{/info}}
22
23 (% style="text-align: left;" %)
24 Для отображения поля необходимо сформировать его ключ по следующим правилам:
25
26 {{code language="java"}}
27 $PASS.$type_$field
28 {{/code}}
29
30 (% style="text-align: left;" %)
31 где {{code language="none"}}$PASS{{/code}} фиксированная строка, {{code language="none"}}$type{{/code}} = **person** для владельца и **pass** для пропуска, а {{code language="none"}}$field{{/code}} формируется по следующим правилам:
32
33 (% style="text-align:left" %)
34 1. Если свойство типовое (ФИО, организация и т. п.) – то просто ключ свойства
35 1. Если свойство пользовательское с ключом **key** – то строка вида {{code language="none"}}property_key{{/code}}
36
37 == {{id name="Настройкаформыфотоидентификации-Ключисвойств"/}}Ключи свойств ==
38
39 |=(((
40 Свойство
41 )))|=(((
42 Ключ
43 )))|=(((
44 Пример
45 )))
46 |=(% colspan="3" %)(((
47 Стандартные поля формы
48 )))
49 |(((
50 ФИО
51 )))|(((
52 {{code language="none"}}
53 $PASS.personName
54 {{/code}}
55 )))|(((
56 Петров Петр Сергеевич
57 )))
58 |(((
59 (((
60 Карта
61
62 {{code language="java"}}
63 №Код_предприятия/Номер_карты
64 {{/code}}
65 )))
66 )))|(((
67 {{code language="none"}}
68 $PASS.cardNumber
69 {{/code}}
70 )))|(((
71 №175/32784
72 )))
73 |(((
74 Событие
75 )))|(((
76 {{code language="none"}}
77 $EVENT.status
78 {{/code}}
79 )))|(((
80 Доступ разрешен
81 )))
82 |(((
83 Источник события
84 )))|(((
85 {{code language="none"}}
86 $EVENT.source
87 {{/code}}
88 )))|(((
89 Главный вход (турникет) — имя точки доступа
90 )))
91 |(((
92 Время события
93 )))|(((
94 $EVENT.time
95 )))|(((
96 08:56
97 )))
98 |=(% colspan="3" %)(((
99 Свойства владельца пропуска
100 )))
101 |(((
102 Фамилия
103 )))|(((
104 {{code language="none"}}
105 $PASS.person_surname
106 {{/code}}
107 )))|(((
108 Петров
109 )))
110 |(((
111 Имя
112 )))|(((
113 {{code language="none"}}
114 $PASS.person_name
115 {{/code}}
116 )))|(((
117 Петр
118 )))
119 |(((
120 Отчество
121 )))|(((
122 {{code language="none"}}
123 $PASS.person_patronymic
124 {{/code}}
125 )))|(((
126 Сергеевич
127 )))
128 |(((
129 Организация
130 )))|(((
131 {{code language="none"}}
132 $PASS.person_organization
133 {{/code}}
134 )))|(((
135 ООО Промтехмонтаж
136 )))
137 |(((
138 Подразделение
139 )))|(((
140 {{code language="none"}}
141 $PASS.person_division
142 {{/code}}
143 )))|(((
144 Технологической инспекции
145 )))
146 |(((
147 Должность
148 )))|(((
149 {{code language="none"}}
150 $PASS.person_post
151 {{/code}}
152 )))|(((
153 Инспектор
154 )))
155 |(((
156 Табельный номер
157 )))|(((
158 {{code language="none"}}
159 $PASS.person_clock_number
160 {{/code}}
161 )))|(((
162 5465-У
163 )))
164 |(((
165 Номер документа
166 )))|(((
167 {{code language="none"}}
168 $PASS.person_document_number
169 {{/code}}
170 )))|(((
171 4016584681
172 )))
173 |(((
174 Доп. информация
175 )))|(((
176 {{code language="none"}}
177 $PASS.person_properties_extra
178 {{/code}}
179 )))|(((
180 Доступ к работе на электроустановках: до 1000 В
181 )))
182 |(((
183 пользовательское свойство с ключом xxxxx
184 )))|(((
185 {{code language="none"}}
186 $PASS.person_properties_xxxx
187 {{/code}}
188 )))|(((
189 [[#Заметки отображения пользовательских свойств владельца/пропуска>>doc:||anchor="Настройкаформыфотоидентификации-Заметкиотображенияпользовательскихсвойстввладельца/пропуска"]]
190 )))
191 |=(% colspan="3" %)(((
192 Свойства пропуска
193 )))
194 |(((
195 Состояние пропуска
196 )))|(((
197 {{code language="none"}}
198 $PASS.pass_state
199 {{/code}}
200 )))|(((
201 Действителен
202 )))
203 |(((
204 Тип пропуска
205 )))|(((
206 {{code language="none"}}
207 $PASS.pass_type
208 {{/code}}
209 )))|(((
210 Постоянный
211 )))
212 |(((
213 Номер карты
214 )))|(((
215 {{code language="none"}}
216 $PASS.pass_card
217 {{/code}}
218 )))|(((
219 32784
220 )))
221 |(((
222 Код предприятия
223 )))|(((
224 {{code language="none"}}
225 $PASS.pass_facility
226 {{/code}}
227 )))|(((
228 175
229 )))
230 |(((
231 Действителен с
232 )))|(((
233 {{code language="none"}}
234 $PASS.pass_activation_date
235 {{/code}}
236 )))|(((
237 2025.12.01 00:00:00
238 )))
239 |(((
240 Действителен по
241 )))|(((
242 {{code language="none"}}
243 $PASS.pass_expiration_date
244 {{/code}}
245 )))|(((
246 2032.12.16 00:00:00
247 )))
248 |(((
249 пользовательское свойство с ключом yyyyy
250 )))|(((
251 {{code language="none"}}
252 $PASS.pass_properties_yyyyy
253 {{/code}}
254 )))|(((
255
256 )))
257
258
259 == {{id name="Настройкаформыфотоидентификации-Заметкиотображенияпользовательскихсвойств"/}}Заметки отображения пользовательских свойств ==
260
261 |=(((
262 Тип поля
263 )))|=(((
264 Комментарий
265 )))
266 |(((
267 Дата и время
268 )))|(((
269 1979-03-31T10:00:00+03:00
270 Указывается время и часовой пояс
271 )))
272 |(((
273 Только дата
274 )))|(((
275 1979-03-31
276 )))
277 |(((
278 Только время
279 )))|(((
280 18:00:00
281 )))
282 |(((
283 Переключатель
284 )))|(((
285 да/нет
286 Если не указано, ничего не выводится.
287 )))
288 |(((
289 Список
290 )))|(((
291 Отображается код, а не значение. Рекомендуется задавать осмысленные коды.
292 )))
293
294
295
296 (% style="text-align: left;" %)
297 == {{id name="Настройкаформыфотоидентификации-Порядокнастройки"/}}Порядок настройки ==
298
299 Скопируйте приведённый ниже код шаблона формы.
300
301 {{code language="java"}}
302 <!DOCTYPE html>
303 <html>
304 <head>
305 <meta charset="utf-8" />
306 <meta
307 name="viewport"
308 content="initial-scale = 1.0, maximum-scale=1.0, user-scalable = no, width=device-width"
309 />
310 <meta name="mobile-web-app-capable" content="yes" />
311 <meta name="apple-mobile-web-app-capable" content="yes" />
312 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
313 <link rel="stylesheet" type="text/css" href="/dry/css/vendor/font-awesome.css" />
314 </head>
315 <body>
316 <div class="card">
317 <div class="card__header">
318 <div class="{{ $EVENT.state }}">
319 <span>{{ $EVENT.status }}</span>
320 </div>
321 </div>
322 <div class="card__body">
323 <div class="card__body__photo" style="background-image: url('{{ $PASS.photoURL }}')"></div>
324 <div class="card__body__data">
325 <div class="card__body__data__row">
326 <div class="card__body__data__row__title">ФИО:</div>
327 <div class="card__body__data__row__value">{{ $PASS.personName }}</div>
328 </div>
329 <div class="card__body__data__row">
330 <div class="card__body__data__row__title">Карта:</div>
331 <div class="card__body__data__row__value">{{ $PASS.cardNumber }}</div>
332 </div>
333 <div class="card__body__data__row">
334 <div class="card__body__data__row__title">Событие:</div>
335 <div class="card__body__data__row__value">{{ $EVENT.status }}</div>
336 </div>
337 <div class="card__body__data__row">
338 <div class="card__body__data__row__title">Источник события:</div>
339 <div class="card__body__data__row__value">{{ $EVENT.source }}</div>
340 </div>
341 <div class="card__body__data__row">
342 <div class="card__body__data__row__title">Время события:</div>
343 <div class="card__body__data__row__value">{{ $EVENT.time }}</div>
344 </div>
345 <!-- all person fields -->
346 <div class="card__body__data__row">
347 <div class="card__body__data__row__title">Фамилия:</div>
348 <div class="card__body__data__row__value">{{ $PASS.person_surname }}</div>
349 </div>
350 <div class="card__body__data__row">
351 <div class="card__body__data__row__title">Имя:</div>
352 <div class="card__body__data__row__value">{{ $PASS.person_name }}</div>
353 </div>
354 <div class="card__body__data__row">
355 <div class="card__body__data__row__title">Отчество:</div>
356 <div class="card__body__data__row__value">{{ $PASS.person_patronymic }}</div>
357 </div>
358 <div class="card__body__data__row">
359 <div class="card__body__data__row__title">Организация:</div>
360 <div class="card__body__data__row__value">{{ $PASS.person_organization }}</div>
361 </div>
362 <div class="card__body__data__row">
363 <div class="card__body__data__row__title">Подразделение:</div>
364 <div class="card__body__data__row__value">{{ $PASS.person_division }}</div>
365 </div>
366 <div class="card__body__data__row">
367 <div class="card__body__data__row__title">Должность:</div>
368 <div class="card__body__data__row__value">{{ $PASS.person_post }}</div>
369 </div>
370 <div class="card__body__data__row">
371 <div class="card__body__data__row__title">Табельный номер:</div>
372 <div class="card__body__data__row__value">{{ $PASS.person_clock_number }}</div>
373 </div>
374 <div class="card__body__data__row">
375 <div class="card__body__data__row__title">Номер документа:</div>
376 <div class="card__body__data__row__value">{{ $PASS.person_document_number }}</div>
377 </div>
378 <div class="card__body__data__row">
379 <div class="card__body__data__row__title">Доп. информация:</div>
380 <div class="card__body__data__row__value">{{ $PASS.person_properties_extra }}</div>
381 </div>
382 <!-- all pass fields -->
383 <div class="card__body__data__row">
384 <div class="card__body__data__row__title">Состояние:</div>
385 <div class="card__body__data__row__value">{{ $PASS.pass_state }}</div>
386 </div>
387 <div class="card__body__data__row">
388 <div class="card__body__data__row__title">Тип:</div>
389 <div class="card__body__data__row__value">{{ $PASS.pass_type }}</div>
390 </div>
391 <div class="card__body__data__row">
392 <div class="card__body__data__row__title">Номер карты:</div>
393 <div class="card__body__data__row__value">{{ $PASS.pass_card }}</div>
394 </div>
395 <div class="card__body__data__row">
396 <div class="card__body__data__row__title">Код предприятия:</div>
397 <div class="card__body__data__row__value">{{ $PASS.pass_facility }}</div>
398 </div>
399 <div class="card__body__data__row">
400 <div class="card__body__data__row__title">Дата начала действия:</div>
401 <div class="card__body__data__row__value">{{ $PASS.pass_activation_date }}</div>
402 </div>
403 <div class="card__body__data__row">
404 <div class="card__body__data__row__title">Дата окончания действия:</div>
405 <div class="card__body__data__row__value">{{ $PASS.pass_expiration_date }}</div>
406 </div>
407 </div>
408 </div>
409 <div class="card__footer">{{ #DECISION_BUTTONS }} {{ #CAMERA_ICON }}</div>
410 </div>
411
412 <script type="text/javascript">
413 function safeClosure() {
414 return {
415 execute: function () {
416 // code goes here
417 },
418 cleanup: function () {
419 // required hook for script deactivation!
420 },
421 };
422 }
423
424 safeClosure().execute();
425 window.cleanup = safeClosure().cleanup;
426 </script>
427
428 <style>
429 html,
430 body {
431 height: 100%;
432 }
433 body {
434 margin: 0;
435 font-family: Arial, Verdana, Helvetica, sans-serif;
436 }
437 * {
438 box-sizing: border-box;
439 }
440 .card {
441 display: flex;
442 flex-direction: column;
443 width: 100%;
444 height: 100%;
445 justify-content: space-between;
446 overflow: hidden;
447 }
448 .card__header {
449 display: flex;
450 flex-direction: row;
451 align-items: center;
452 justify-content: space-between;
453 height: 40px;
454 }
455 .card__header > div {
456 width: 100%;
457 height: 100%;
458 padding: 0 25px;
459 overflow: hidden;
460 text-overflow: ellipsis;
461 }
462 .card__header > .ok {
463 background-color: #0a9d13;
464 }
465 .card__header > .warn {
466 background-color: #e8a71b;
467 }
468 .card__header > .alert {
469 background-color: #c73734;
470 }
471 .card__header > div > span {
472 line-height: 40px;
473 color: #fff;
474 display: block;
475 white-space: nowrap;
476 }
477 .card__body {
478 display: flex;
479 flex-direction: row;
480 height: calc(100% - 80px);
481 margin-top: 0;
482 margin-bottom: auto;
483 padding: 20px;
484 overflow: auto;
485 }
486 .card__body__photo {
487 position: relative;
488 display: flex;
489 flex-direction: column;
490 flex-grow: 1;
491 flex-shrink: 0;
492 max-width: 30%;
493 max-height: 70%;
494 background-size: contain;
495 background-repeat: no-repeat;
496 background-position: 50% 50%;
497 }
498 .card__body__photo > img {
499 width: 100%;
500 height: 100%;
501 margin: auto;
502 object-fit: contain;
503 }
504 .card__body__data {
505 display: table;
506 padding-left: 4vw;
507 width: 60%;
508 }
509 .card__body__data__row {
510 display: table-row;
511 }
512 .card__body__data__row__title {
513 display: table-cell;
514 padding-top: 4.5vh;
515 padding-right: 1vw;
516 font-size: 2vw;
517 }
518 .card__body__data__row__value {
519 display: table-cell;
520 font-size: 2.5vw;
521 }
522 .card__footer {
523 position: absolute;
524 display: flex;
525 flex-direction: row;
526 background-color: #d8dde1;
527 bottom: 0;
528 height: 40px;
529 width: 100%;
530 }
531 .card__footer #hoverable-camera-tooltip {
532 flex-shrink: 0;
533 color: #8f9aa3;
534 margin-right: 0;
535 margin-left: auto;
536 padding: 12px;
537 }
538 .card__footer .buttons__wrapper {
539 height: 40px;
540 flex-grow: 1;
541 }
542 .card__footer .buttons__wrapper > .button {
543 height: 40px;
544 line-height: 40px;
545 width: 50%;
546 padding: 0 20px;
547 margin: 0;
548 color: #fff;
549 border: none;
550 outline: none;
551 cursor: pointer;
552 }
553 .button.disabled {
554 opacity: 0.7;
555 pointer-events: none;
556 }
557 .card__footer .buttons__wrapper > .button.green {
558 background-color: #0a9d13;
559 }
560 .card__footer .buttons__wrapper > .button.green:hover {
561 background-color: #08820f;
562 }
563 .card__footer .buttons__wrapper > .button.red {
564 background-color: #9e0b0f;
565 }
566 .card__footer .buttons__wrapper > .button.red:hover {
567 background-color: #800007;
568 }
569 </style>
570 </body>
571 </html>
572 {{/code}}
573
574
575 Вставьте в текстовый редактор без форматирования, например, — свободно распространяемый Notepad++.
576
577 Отредактируйте код формы из блока:
578
579 {{code language="java"}}
580 <div class="card__body">
581 ...
582 </div>
583 {{/code}}
584
585
586 В этом блоке три группы полей. Порядок соответствует таблице выше.
587
588 Чтобы удалить поле из шаблона формы, просто удалите соответствующий блок кода.
589
590 Вы также можете добавить произвольное количество полей с пользовательскими свойствами владельца и пропуска, например:
591
592 {{code language="java"}}
593 <div class="card__body__data__row">
594 <div class="card__body__data__row__title">Группа крови:</div>
595 <div class="card__body__data__row__value">{{ $PASS.person_properties_Gruppa_krovi }}</div>
596 </div>
597 {{/code}}
598
599 , поле «Группа крови» с полем типа «список».
600
601
602 {{code language="java"}}
603 <div class="card__body__data__row">
604 <div class="card__body__data__row__title">Согласие на обработку персональных данных:</div>
605 <div class="card__body__data__row__value">{{ $PASS.person_properties_consent_to_personal_data_processing }}</div>
606 </div>
607 {{/code}}
608
609 , поле «Согласие на обработку персональных данных» типа «переключатель».
610
611
612 {{code language="java"}}
613 <div class="card__body__data__row">
614 <div class="card__body__data__row__title">Выход строго до:</div>
615 <div class="card__body__data__row__value">{{ $PASS.pass_properties_Vikhod_do }}</div>
616 </div>
617 {{/code}}
618
619 , поле «Выход строго до» типа «дата и время», подтипом «только время».
620
621 {{error}}
622 **ВАЖНО**
623
624 Будьте внимательны при вводе уникального ключа свойства. Рекомендуется копировать код во избежание ошибок.
625 {{/error}}
626
627
628 Сохраните подготовленный шаблон формы в формате TEMPLATE, например:
629
630 {{code language="java"}}
631 Шаблон_формы.template
632 {{/code}}
633
634
635 Загрузите файл шаблона в соответствующее поле настроек ячейки ~[[[doc:neyross.Настройка Платформы НЕЙРОСС.Настройка функций контроля доступа.Настройка АРМ фотоидентификации.WebHome]]]. Каждая ячейка может иметь свой шаблон формы.
636
637

Платформа НЕЙРОСС