Головоломка с сценарием взятия/снятия

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

Уважаемые пользователи! В связи с отсутствием возможности оплачивать хостинг сайта и отсутствием материальной помощи от пользователей, Форум вынужден будет прекратить работу с Марта месяца 2024 года!.


XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #1 XAMMEP » 13.10.2015, 09:20

Добрый день!!! Была поставлена задача сдавать под охрану 2 раздела, при чем Раздел2 расположен в Разделе1. Постановка под охрану у нас осуществляется при поднесении Прокси карт к считывателю при выходе с территории, в это случаи походу придется обойтись входом/выходом из зон доступа. Хозорган1 (Начальник-Раздел2) придя на работу первым должен снять Раздел 1 и 2, а уходя, если Хозорган2(Рабочие-Раздел1) присутствует на своем рабочем месте, сдать только Раздел2. В свою очередь, Хозорган2 придя на работу первым должен снять только Раздел 1, а уходя, если Хозорган1 присутствует на своем рабочем месте, не смог сдать объект. Есть ли умельцы в написании сценарий на это задание или это бессмысленно?
Вложения
Новый точечный рисунок (2).bmp

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #2 google » 13.10.2015, 12:54

А если поставить еще один считыватель? Один будет для первого раздела, а второй для второго.

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #3 google » 13.10.2015, 13:06

А так сценарий вроде реально написать. Нужно сделать постановку на охрану по проверке состояния второго раздела.

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #4 XAMMEP » 13.10.2015, 13:07

google писал(а):А если поставить еще один считыватель? Один будет для первого раздела, а второй для второго.
В том то и беда, что у нас считыватель только один на выходе с предприятия, а разделов более 140... и все работают нормально.
А вот таких "объектов которые на картинке" 4 шт, и как их запилить ума на приложу.
Есть пример с одним разделом, а тут их 2.

Пример на 1 раздел:

Сценарий
Переменные
Перем Событие1;
Перем РабочееМесто1;
Перем РабочиеМеста1;
Перем Компьютеры1;
Перем Компьютер1;
Перем Раздел1;
Перем Разделы1;
Перем ЗонаДоступа1;
Перем ЗоныДоступа1;
НачалоСценария


Попытка
Компьютеры1 = СоздатьОбъект( "Компьютеры" );
Компьютер1 = Компьютеры1.ПолучитьПоИд(1);
РабочиеМеста1 = Компьютер1.РабочиеМеста();
РабочееМесто1 = РабочиеМеста1.ПолучитьПоТипуСетевогоМеста("Ядро");
Событие1 = ПолучитьСобытие();
ЗоныДоступа1 = СоздатьОбъект( "ЗоныДоступа" );
Если не ПустоеЗначение( ЗоныДоступа1 ) Тогда
Разделы1 = РабочееМесто1.Разделы();
Если не ПустоеЗначение( Разделы1 ) Тогда
Раздел1 = Разделы1.ПолучитьПоИД( 23 );
ЗонаДоступа1 = ЗоныДоступа1.ПолучитьПоИД( 2 );
Если Не ПустоеЗначение( Событие1 ) Тогда
Если Не ПустоеЗначение( Событие1.Событие() ) Тогда
Если Не ПустоеЗначение( Событие1.ЗонаДоступа() ) Тогда
Если Не ПустоеЗначение( Событие1.Пароль() ) Тогда
Если Не ПустоеЗначение( Событие1.Пароль().Сотрудник() ) Тогда
Если Не ПустоеЗначение( Событие1.Пароль().ГруппаДоступа() ) Тогда
Если не ПустоеЗначение( ЗонаДоступа1 ) Тогда
Если (Событие1.ЗонаДоступа().ИД()==ЗонаДоступа1.ИД()) Тогда
Если (Событие1.Событие().ИД()==32) Тогда
Если (ЗонаДоступа1.ПервыйПроход(Событие1.Пароль().Сотрудник().ИД())) Тогда
Если (Событие1.Пароль().ГруппаДоступа().ИД() ==65) Тогда
Если ( ЗонаДоступа1.КоличествоСотрудниковПоуровню( 65 ) == 1 ) Тогда
Если не ПустоеЗначение( Раздел1 ) Тогда
Раздел1.Снять();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Исключение Сообщить("Произошло исключение ",0); КонецПопытки;
КонецСценария
Последний раз редактировалось XAMMEP 13.10.2015, 13:11, всего редактировалось 2 раза.

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #5 google » 13.10.2015, 13:10

Если не сильно срочно, могу попробовать набросать сценарий. Сам ни разу не писал, но на других языках программил )

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #6 google » 13.10.2015, 13:11

XAMMEP писал(а):
google писал(а):В том то и беда, что у нас считыватель только один на выходе с предприятия, а разделов более 140... и все работают нормально.
А вот таких "объектов которые на картинке" 4 шт, и как их запилить ума на приложу.
Есть пример с одним разделом, а тут их 2.

Т. е. с одного этого считывателя управляются все 140 разделов? Круто )))
Скинь пример с одним разделом

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #7 XAMMEP » 13.10.2015, 13:35

google писал(а):Если не сильно срочно, могу попробовать набросать сценарий. Сам ни разу не писал, но на других языках программил )
был бы очень признателен

google писал(а):
XAMMEP писал(а):

Т. е. с одного этого считывателя управляются все 140 разделов? Круто )))
Скинь пример с одним разделом
Пропиши все разделы и уровни доступа в С2000М, задай Хозорганов с паролями и привяжи к уровням доступа, не забыв привязать разделы к считывателю. И как бы все работает.

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #8 google » 13.10.2015, 16:19

А что вот это за строчка в сценарии Событие1 = ПолучитьСобытие();
Пол-часа пытаюсь найти ее в рук-ве по языку, никак не могу найти.

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #9 google » 13.10.2015, 16:27

DruG писал(а):
google писал(а):А так сценарий вроде реально написать. Нужно сделать постановку на охрану по проверке состояния второго раздела.
а чтобы жизнь мёдом не казалась, не забываем про условия:
- у рабочих управление только разделом 1
- у начальника управление разделом 1, 2
- если рабочие уходят первыми, то они не могут поставить раздел 1, т.к. раздел 2 не взят
- если начальник уходит первым, то он ставит раздел 1, 2 (ведь они оба прописаны в уровнях доступа), и рабочие оказываются закрытыми, если же начальник не будет ставить свой раздел, то рабочие тем более его никак не смогут поставить
- если начальнику дать управление только разделом 2, он не сможет поставить раздел 1, когда будет уходить последним.

решение проблемы конечно есть, но может у кого-то оно более изящное, нежели создавать раздел 3 и использовать его как своеобразный буфер для рабочих


Ну первые три пункта явно прописаны в условии. По поводу четвертого если начальник уходит первым, то он ставит раздел 1, 2 (ведь они оба прописаны в уровнях доступа), и рабочие оказываются закрытыми, если же начальник не будет ставить свой раздел, то рабочие тем более его никак не смогут поставить. Это уже на совести начальника остается, если он будет закрывать рабочих или не будет ставить свой раздел при выходе, то хреновый это начальник.
Ну а последний пункт я так понял тут вообще не вариант.

И при чем здесь третий раздел и буфер?

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #10 google » 13.10.2015, 17:34

Ну ясно. В условии, что начальник сваливает в середине рабочего дня, нет ни слова. Поэтому будем считать, что сидеть он будет до конца рабочего дня.

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #11 XAMMEP » 14.10.2015, 08:17

DruG писал(а):
google писал(а):А так сценарий вроде реально написать. Нужно сделать постановку на охрану по проверке состояния второго раздела.
а чтобы жизнь мёдом не казалась, не забываем про условия:
- у рабочих управление только разделом 1
- у начальника управление разделом 1, 2
- если рабочие уходят первыми, то они не могут поставить раздел 1, т.к. раздел 2 не взят
- если начальник уходит первым, то он ставит раздел 1, 2 (ведь они оба прописаны в уровнях доступа), и рабочие оказываются закрытыми, если же начальник не будет ставить свой раздел, то рабочие тем более его никак не смогут поставить
- если начальнику дать управление только разделом 2, он не сможет поставить раздел 1, когда будет уходить последним.

решение проблемы конечно есть, но может у кого-то оно более изящное, нежели создавать раздел 3 и использовать его как своеобразный буфер для рабочих
Забыл уточнить, тут в сценарии написано как "Взятие раздела после прохода последнего с уровнем доступа из зоны доступа" (взят из шаблона) и управление разделом происходит при проходе через турникет (смена зон доступа), а не при прикладывании прокси карты к считывателю. Это не должно мешать сдать начальнику только свой кабинет при уходе первой.

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #12 XAMMEP » 14.10.2015, 08:30

А вот пример сценария "Взятие раздела после прохода последнего с подразделением из зоны доступа".
Вот только как туда 2 раздел прописать....
Спойлер
Сценарий
Переменные
Перем Событие1;
Перем РабочееМесто1;
Перем РабочиеМеста1;
Перем Компьютеры1;
Перем Компьютер1;
Перем Раздел1;
Перем Разделы1;
Перем ЗонаДоступа1;
Перем ЗоныДоступа1;
НачалоСценария


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

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #13 google » 14.10.2015, 09:19

Это сценарий для рабочих я так понял (постановка на охрану Раздела1). Т. е. нужно добавить проверку раздела Раздел2 (если под охраной, соответственно Раздел1 должен ставиться, если Раздел2 не под охраной, то и Раздел1 не должен поставиться под охрану). Если я так понял, то сценарий будет таков:

Спойлер
Сценарий
Переменные
Перем Событие1;
Перем РабочееМесто1;
Перем РабочиеМеста1;
Перем Компьютеры1;
Перем Компьютер1;
Перем Раздел1;
Перем Раздел2;
Перем Разделы1;
Перем ЗонаДоступа1;
Перем ЗоныДоступа1;
НачалоСценария


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

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #14 XAMMEP » 14.10.2015, 09:52

Скорее всего должно быть 2 отдельных сценария: и для рабочих, и для начальника.
Последний раз редактировалось XAMMEP 14.10.2015, 10:10, всего редактировалось 1 раз.

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #15 google » 14.10.2015, 10:08

Т. е. постановку на охрану разделов происходит при проходе через турникет. И начальник и рабочие не ставят разделы через считыватель?
Последний сценарий, который ты выложил, ставит на охрану один раздел с ИД0 (из более чем 140 имеющихся). Или нет? Сильно прошу не пинать, изучать стал этот язык только вчера.
А как тогда ставятся на охрану другие разделы?
А в этот сценарий получается надо добавить уход начальника, постановку его раздела на охрану и постановку раздела рабочих, если они тоже ушли. Так я понял?

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #16 XAMMEP » 14.10.2015, 10:25

google писал(а):Т. е. постановку на охрану разделов происходит при проходе через турникет. И начальник и рабочие не ставят разделы через считыватель?
Совершенно верно. Другого пути пока не нашел.
google писал(а):Последний сценарий, который ты выложил, ставит на охрану один раздел с ИД0 (из более чем 140 имеющихся). Или нет? Сильно прошу не пинать, изучать стал этот язык только вчера.
Последний сценарий был только к примеру..
google писал(а):А как тогда ставятся на охрану другие разделы?
Остальные разделы работают без сценарий и через считыватель (через С2000М, прошитыми ключами и уровнями допуска).
google писал(а):А в этот сценарий получается надо добавить уход начальника, постановку его раздела на охрану и постановку раздела рабочих, если они тоже ушли. Так я понял?
Сценарии на приход и уход разные (из шаблонов взятые) Если можно в один пихнуть, то это большой +. И скорее всего надо их 4, (приход начальника, приход рабочего, уход начальника, уход рабочего)

Приход:
Спойлер
Сценарий
Переменные
Перем Событие1;
Перем РабочееМесто1;
Перем РабочиеМеста1;
Перем Компьютеры1;
Перем Компьютер1;
Перем Раздел1;
Перем Разделы1;
Перем ЗонаДоступа1;
Перем ЗоныДоступа1;
НачалоСценария


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


Уход:
Спойлер
Сценарий
Переменные
Перем Событие1;
Перем РабочееМесто1;
Перем РабочиеМеста1;
Перем Компьютеры1;
Перем Компьютер1;
Перем Раздел1;
Перем Разделы1;
Перем ЗонаДоступа1;
Перем ЗоныДоступа1;
НачалоСценария


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

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #17 google » 14.10.2015, 11:38

Если создавать четыре сценария, то их как-то надо будет одновременно все привязать к событию проход турникета, так что скорее всего это будет один сценарий. Либо нужен сценарий, который будет запускать другие сценарии по определенному условию.
Вообщем чуть попозже освобожусь попробую что-нибудь замутить.

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #18 XAMMEP » 14.10.2015, 12:11

google писал(а):Если создавать четыре сценария, то их как-то надо будет одновременно все привязать к событию проход турникета, так что скорее всего это будет один сценарий. Либо нужен сценарий, который будет запускать другие сценарии по определенному условию.
Вообщем чуть попозже освобожусь попробую что-нибудь замутить.
С этим проблем не возникнет, пусть даже с 4... В настройках доступа это все настроить не проблема...

pet-and M
Активный участник
Активный участник
pet-and M
Активный участник
Активный участник
Возраст: 45
Репутация: 139
Сообщения: 3300
Зарегистрирован: 11.11.2012
С нами: 11 лет 4 месяца
Профессия: инженер
Откуда: Санкт-Петербург

Непрочитанное сообщение #19 pet-and » 14.10.2015, 12:27

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

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #20 XAMMEP » 14.10.2015, 12:48

pet-and писал(а):Все надо паковать в один сценарий, несколько сценариев к одному событию не привязать. Но есть вот такая вещь
Существует возможность запускать сценарии управления по событиям, инициированным
конкретным сотрудником, сотрудником с конкретным уровнем доступа, или конкретным паролем
(пин-кодом, ключом TouchMemory, картой Proximity) сотрудника.
может быть поможет.
Далее, чего-то не до конца переварил алгоритм действий.
В вкладке "Доступ" 2 зоны:1. Внешний - который запускает сценарий на уход и 2. Предприятие - который запускает сценарий на вход. На "одном разделе" при проходе через турникет все работает.
pet-and писал(а):Как я понял, должно быть примерно так:
Спойлер
    начальник ставит и снимает с охраны оба раздела, если там никого нет
    начальник ставит и снимает только свой раздел, если в лавке уже кто-то из работяг
    работяги в любом случае управляют только одним разделом
Поправьте, если не так.
Все верно
Вложения
Новый точечный рисунок (4).bmp


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

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

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

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

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