Version 2.1 by admin on 2026/06/07 08:06

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