Version 5.2 by superadmin on 2026/06/15 21:57

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

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