Сценарий управления для Орион-Про

FORUM_NAME: АРМ Орион Про версии 1.20 и выше
Описание: АРМ "Орион Про" — пакет программного обеспечения для аппаратно-программного комплекса ИСО "Орион", на котором реализуются системы охранной сигнализации, контроля и управления доступом, охранного видеонаблюдения, автоматика противопожарных систем, сопряженные с инженерными системами объектов.
Справочная информация, руководства для АРМ Орион Про версии 1.20 и выше
Модератор: Модераторы
alex_fn
Автор темы
alex_fn
Автор темы
Репутация: 0
Сообщения: 3
Зарегистрирован: 03.03.2018
С нами: 6 месяцев 15 дней
Профессия: инженер

Непрочитанное сообщение #1 alex_fn » 03.03.2018, 16:06

Добрый день, уважаемые коллеги.
Помогите пожалуйста разобраться в сценарии управления для реализации автоматического взятия раздела при условии выхода из зоны пользователя.
Исходный код прилагаю. Я только начал разбираться с языком сценариев, и поэтому есть небольшие затруднения в реализации задачи.
Главное понять принцип. Заранее благодарю за отзыв.
Спойлер
СЦЕНАРИЙ
НАЧАЛОСЦЕНАРИЯ
Переменные
Перем ЗоныДоступа1;
Перем ЗонаДоступа1;
Перем Разделы1;
Перем Раздел1;
Перем Компьютер1;
Перем Компьютеры1;
Перем РабочиеМеста1;
Перем РабочееМесто1;
Перем Событие1;
НачалоСценария

Попытка
Компьютеры1 = СоздатьОбъект( "Компьютеры" );
Компьютер1 = Компьютеры1.ПолучитьПоИд(2);
РабочиеМеста1 = Компьютер1.РабочиеМеста();
РабочееМесто1 = РабочиеМеста1.ПолучитьПоТипуСетевогоМеста("Ядро");
Событие1 = ПолучитьСобытие();
ЗоныДоступа1 = СоздатьОбъект( "ЗоныДоступа" );
Если не ПустоеЗначение( ЗоныДоступа1 ) Тогда
Разделы1 = РабочееМесто1.Разделы();
Если не ПустоеЗначение( Разделы1 ) Тогда
Раздел1 = Разделы1.ПолучитьПоИД( 76 );
ЗонаДоступа1 = ЗоныДоступа1.ПолучитьПоИД( 1 );
Если Не ПустоеЗначение( Событие1 ) Тогда
Если Не ПустоеЗначение( Событие1.Событие() ) Тогда
Если Не ПустоеЗначение( Событие1.ЗонаДоступа() ) Тогда
Если Не ПустоеЗначение( Событие1.Пароль() ) Тогда
Если Не ПустоеЗначение( Событие1.Пароль().Сотрудник() ) Тогда
Если не ПустоеЗначение( ЗонаДоступа1 ) Тогда
Если (Событие1.Событие().ИД()==32) Тогда
Если не ПустоеЗначение( РабочееМесто1.Сотрудники() ) Тогда
Сотрудник2 = РабочееМесто1.Сотрудники().ПолучитьПоИД( 492 );
Если не ПустоеЗначение( Сотрудник2 ) Тогда
Если не ПустоеЗначение( Раздел1 ) Тогда
Раздел1.Взять();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Исключение Сообщить("Произошло исключение ",0); КонецПопытки;
КОНЕЦСЦЕНАРИЯ

DruG
DruG
Репутация: 42
Сообщения: 660
Зарегистрирован: 03.03.2016
С нами: 2 года 6 месяцев
Профессия: безобразнорабочий

Непрочитанное сообщение #2 DruG » 03.03.2018, 17:34

из ТЗ не сильно понятно условие.
на объекте есть такая реализация: центральный вход, две считки на вход/выход, определённый человек с определённой картой машет на вход - весь офис снимается с охраны (тут можно любой раздел, группу), тот же человек с той же картой на выходе - весь офис ставится на охрану. Жесткая привязка сценария к карте. Никакого учёта количества людей в офисе - турникета нет, СКУД в рабочее время отдыхает.
Если такого варианта достаточно, могу рассказать, хотя там всё очень примитивно :smu:sche_nie:

alex_fn
Автор темы
alex_fn
Автор темы
Репутация: 0
Сообщения: 3
Зарегистрирован: 03.03.2018
С нами: 6 месяцев 15 дней
Профессия: инженер

Непрочитанное сообщение #3 alex_fn » 03.03.2018, 18:53

Да. Совершенно верно. Я понимаю, что все примитивно. Но нужно понять логику. А она станет понятна, когда сам на практике ее ощутишь.
Есть центральный вход с одним считывателем. На вход и выход. Нужно жестко привязать конкретный раздел к конкретному ID карты (человеку).
Пикнул на выход, раздел взялся. Пикнул на вход - раздел взялся. Пока так. Как реализую этот сценарий, дальше разберусь думаю.
В любом случае, заранее спасибо Вам, DruG.

Добавлено спустя 5 минут 6 секунд:
Одно уточнение. Извините. Точка входа одна, считывателей 2. На вход и на выход.

DruG
DruG
Репутация: 42
Сообщения: 660
Зарегистрирован: 03.03.2016
С нами: 2 года 6 месяцев
Профессия: безобразнорабочий

Непрочитанное сообщение #4 DruG » 03.03.2018, 20:10

мой примитивный вариант для одного человека, если надо на несколько человек, то придётся создавать каждому по два сценария (снять/взять).

создаёте два шаблонных сценария на Взятие раздела и Снятие, указываете в них нужный раздел, далее переходите к входному считывателю и в Инспекторе на событие "Доступ предоставлен" выбираете либо Сотрудника (тогда все назначенные ему карты будут выполнять сценарий), либо Пароль (тогда сценарий будет запускаться только от конкретной карты) и привязываете сценарий на Снятие. С выходным считывателем тоже самое, но на взятие.
Вариант топорный, но он работает :-)

следующий вариант, можно попробовать создать более универсальные сценарии, но т.к. в моей версии Ориона ещё нету оператора Событие, то вариант будет чисто теоретический:
Спойлер
.....стандартное начало сценария

Компьютеры1 = СоздатьОбъект( "Компьютеры" );
Компьютер1 = Компьютеры1.ПолучитьПоИд(2);
РабочиеМеста1 = Компьютер1.РабочиеМеста();
РабочееМесто1 = РабочиеМеста1.ПолучитьПоТипуСетевогоМеста("Ядро");
Событие1 = ПолучитьСобытие();
Разделы1 = РабочееМесто1.Разделы();

Если ( Событие1.Пароль().Сотрудник()== 492 ) Тогда //здесь, по моему разумению, идёт проверка, что за сотрудник получил доступ
Раздел1 = Разделы1.ПолучитьПоИД( 76 ); //а здесь уже работаем с разделом этого сотрудника
Раздел1.Взять();
КонецЕсли;

Если ( Событие1.Пароль().Сотрудник()== ХХХ ) Тогда //и так для каждого сотрудника свой номер
Раздел1 = Разделы1.ПолучитьПоИД( УУУ ); //и для его раздела тоже
Раздел1.Взять();
КонецЕсли;

......стандартное завершение сценария
этот сценарий уже не надо будет привязывать в Инспекторе к конкретному сотруднику, достаточно привязать к событию "Доступ предоставлен".

alex_fn
Автор темы
alex_fn
Автор темы
Репутация: 0
Сообщения: 3
Зарегистрирован: 03.03.2018
С нами: 6 месяцев 15 дней
Профессия: инженер

Непрочитанное сообщение #5 alex_fn » 03.03.2018, 20:45

Опробую, отпишусь. Merci...


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «АРМ Орион Про версии 1.20 и выше»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 2 гостя

forum-bolid.ru : Отказ от ответственности