Version 4.1 by admin on 2026/06/07 17:49

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

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