партнерский раздел
ФорумЭксплуатацияСлучайная блокировка турникета при выходе сотрудников с фабрики

Эксплуатация » Случайная блокировка турникета при выходе сотрудников с фабрики

Добрый день. В настоящий момент есть необходимость написать сценарии.Задача такая
Необходимо организовать принцип выборочной блокировки турникета для выходящих сотрудников в конце рабочего дня. Или так   может сделать чтобы блокировались через каждые 30 40 секунд, сценарии будем запускать в конце рабочего дня. Имеется 4 турникета. Может у кого было подобное задание от руководства, опыта в написании скриптов к сожалению не имею. Поделитесь опытом пожалуйста.Спасибо за внимание.

12 дней 10 часов назад

avatar
Не совсем понятно ТЗ. Напишите конкретнее, что вы хотите реализовать. Самое простое, это блокировка вручную, если у вас есть на проходной специальный сотрудник какой-нибудь. Можно блокировать через определенное кол-во времени, как вы написали, можно блокировать людей с определенной фамилией или именем. Вариантов много, нужна конкретная задача. Ну и версию Ориона напишите.

Ростовцев Вячеслав Викторович 12 дней 10 часов назад

Вариант с кнопкой отпадает, нужно это реализовать на программном уровне. Версия Ориона 1.12 выпуск 2, Задача такова В 17:00 люди выходят с фабрики имеются 4 турникета  нужно сделать произвольную блокировку прохода для досмотра данного сотрудника охраной. Или как вариант пусть турникеты блокироуются к примеру каждые 30 секунд. 

Лобачев Вячеслав Викторович 12 дней 9 часов назад

Вот что пришло на ум: в сценарии пишется условие, в котором анализируется текущее время. Допустим если текущее кол-во секунд не чётное, то блокируем доступ, если чётное, то не блокируем. Блокируем допустим на 1 сек. Также, что бы сценарий отрабатывал автоматом, ставим проверку по времени, допустим что-бы работал только с 17-30 до 18-00. Дальше этот сценарий привязываем к событию Идентификатор хозоргана (вроде) считывателя.

Ростовцев Вячеслав Викторович 12 дней 9 часов назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

5 ответов

Насчет блокировки так сказать по расписанию, например вам необходимо это делать с 17:30 до 18:00, создаете окно для запуска сценариев, там шаг одна минута,17:31...18:00 в итоге 30 интервалов на каждый день, в самом сценарии используете шаги, заблокировать считыватель(указать считыватели), (ядро) пауза(указать время блокировки), разблокировать считыватель(указать считыватели). Далее на вкладке расписание, указываете сценарий и окно запуска, получаете что с 17:31 до 18:00 каждую минуту будет запускаться сценарий, который блокирует считыватели, ждет необходимое время и разблокирует, на каждый турникет можно указать свой сценарий и окно запуска. Все это можно сделать стандартными средствами. Правда я не знаю как поведет себя АРМ и оборудование при таком частом запуске сценариев.

12 дней 9 часов назад

avatar
Не, так не пойдет, так как нужно блокировать не все проходы, в конкретный промежуток времени, а именно проход конкретного человека. А то получится так: считыватель заблокируется на 10 сек, и в течении этих десяти секунд никто не сможет пройти через турникет. Придётся досматривать всех )))
Проще блокировать, допустим, каждого 10 проходящего, либо вообще рандомно. Не помню, есть рандом в Орионе.

Ростовцев Вячеслав Викторович 12 дней 9 часов назад

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

Тремасов Константин Александрович 12 дней 9 часов назад

Хорошо, блокировка на 1 сек., потом перерыв 30 сек. А если поток выходящих не большой. Тогда шанс попасть в промежуток в 1 сек. будет минимальный.

Ростовцев Вячеслав Викторович 12 дней 9 часов назад

Эт когда такое было чтоб с фабрики по звонку в конце смены был минмальный поток то?)))

Тремасов Константин Александрович 12 дней 9 часов назад

Ну эт я пытаюсь предусмотреть все возможные варианты развития событий ))

Ростовцев Вячеслав Викторович 12 дней 9 часов назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

Поток людей на выход приличный примерно 300-400 человек. Рандомная блокировка отличный вариант но догадываюсь что реализовать достаточно сложно. А кто подскажет как сделать блокировку каждого 10 человека. Если ничего не получиться будем делать блокировку по расписанию на несколько секунд турникета.

12 дней 9 часов назад

avatar
А блокировать выходящих на нечетных секундах, как я выше предложил, не подойдет? Не обязательно именно на нечетных. Можно сделать проверку и ловить скажем тех, кто выходит на 3, 5 и 8 секундах на конце.
А для блокировки каждого десятого - создаётся файл, при каждом проходе в него записывается число с инкрементом 1, т. е. первый прошёл, записалось 1, воторой прошел, записалось два и т. д. На 10 считыватель блокируется, а число в файле обнуляется, и всё начинается заново.

Ростовцев Вячеслав Викторович 12 дней 9 часов назад

А как мне написать скрипт На Блокировку каждого 10 го человека при выходе.  У вас есть пример чтобы понять куда копать.

Лобачев Вячеслав Викторович 12 дней 9 часов назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

Сценарий
Переменные

Перем Событие1;
Перем Считыватель1;

НачалоСценария

Событие1 = ПолучитьСобытие();
Если Не ПустоеЗначение(Событие1) Тогда
Если Не ПустоеЗначение(Событие1.Элемент()) Тогда
Считыватель1 = Событие1.Элемент();
КонецЕсли;
Если Не ПустоеЗначение(Считыватель1.Тег()) Тогда
Считыватель1.ПоместитьВТег(Число(Считыватель1.Тег())+1);
Иначе
Считыватель1.ПоместитьВТег("1");
КонецЕсли;
Если Число(Считыватель1.Тег())==9 тогда
Считыватель1.ЗаблокироватьДоступ();
Задержка(3000);
Считыватель1.ВосстановитьДоступ();
Считыватель1.ПоместитьВТег("0");
КонецЕсли;
КонецЕсли;
КонецСценария

Проверил на демонстраторе, вроде блокирует.
Если число(Считыватель1.тег())==9 // 9 это количество проходов, т.е. после 9 прохода считка по которой выходят блокируется на время: Задержка(3000); значение в скобках это время в миллисекундах, на которое производиться блокировка.
Привязывается к событию "Проход" на нужных считывателях.
Работает только при включенном АРМ, после перезагрузки проходы не сохраняются, отсчет начинается заново.
Конечно возможны ошибки, пробуйте, если возникнут, пишите буду править. 
 

12 дней 8 часов назад

avatar
Спасибо Константин за скрипт. На работу приеду буду пробовать.

 

Лобачев Вячеслав Викторович 12 дней 6 часов назад

В 1.12 этот сценарий не будет работать, так как функция ПолучитьСобытие была введена в версии 1.20.
Тут надо считыватель находить по ИД. Как найти ИД, я хз, только опытным путем: создать сценарий с нужным ситывателем в конструкторе, а потом посмотреть код сценария, там будет виден ИД.

Ростовцев Вячеслав Викторович 12 дней 6 часов назад

Мне кажется нужно привязывать к событию Идентификация хозоргана, а не проход, так как если привязать к событию проход, то будет заблокирован проход следующему человеку, если он попытается пройти в течении задержки (в данном случае 3 сек.). Если привязывать к событию Идентификация хозоргана, то теоретически будет блокироваться доступ текущему человеку. Но надо пробовать.

Ростовцев Вячеслав Викторович 12 дней 6 часов назад

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

Тремасов Константин Александрович 12 дней 6 часов назад

Сценарий
Переменные

Перем Считыватели1;
Перем Считыватель1;

НачалоСценария

Считыватели1 = СоздатьОбъект( "Считыватели" );
Считыватель1 = Считыватели1.ПолучитьПоИД(139);
Если Не ПустоеЗначение(Считыватель1.Тег()) Тогда
Считыватель1.ПоместитьВТег(Число(Считыватель1.Тег())+1);
Иначе
Считыватель1.ПоместитьВТег("1");
КонецЕсли;
Если Число(Считыватель1.Тег())==9 Тогда
Считыватель1.ЗаблокироватьДоступ();
Задержка(3000);
Считыватель1.ВосстановитьДоступ();
Считыватель1.ПоместитьВТег("0");
КонецЕсли;

КонецСценария

Считыватель1 = Считыватели1.ПолучитьПоИД(139); // В скобках указать пользовательский номер считывателя. При таком раскладе, надо создать 4 сценария, для четырех считывателей и в каждом указать пользовательский номер в скобках, каждый привязать к удобному событию.

Тремасов Константин Александрович 12 дней 4 часа назад

Константин здравствуйте, пробовал запускать ваш сценарии, через конструктор скрипта нашёл номер ИД считывателя. Но блокировки не происходит считки. Можете если есть возможность у себя протестировать скрипт на блок?

Лобачев Вячеслав Викторович 11 дней 12 часов назад

Проверю, но не сегодня, возможно есть различия в командах между 1.12 и 1.20.2. у вас в журнале идут события "запуск сценария" и после 10 раза "доступ заблокирован"?

Тремасов Константин Александрович 11 дней 12 часов назад

Спасибо. Да в журнале побития иду что доступ предоставлен но на 10 раз не блокируется считка.(((

Лобачев Вячеслав Викторович 11 дней 12 часов назад

События "Доступ предоставлен" в логах мало, надо ещё и Запуск сценария там увидеть ;) сценарий то привязали к событию на нужном считывателе (ИД которого в самом сценарии указали)?

Волков Андрей 11 дней 11 часов назад

Вячеслав, к какому событию считывателя привязываете сценарий?

Ростовцев Вячеслав Викторович 11 дней 11 часов назад

Вячеслав. К Доступ предоставлен.

Лобачев Вячеслав Викторович 11 дней 10 часов назад

У меня сценарий работает. Вы перезагружали ОЗ после привязки сценария к считывателю?

Ростовцев Вячеслав Викторович 11 дней 10 часов назад

И попробуйте увеличить время ожидания скажем до 5 сек. или даже до 10, чтобы уж точно убедиться, происходит блокировка или нет.

Ростовцев Вячеслав Викторович 11 дней 10 часов назад

Еще можете в конце сценария добавить вот такую строчку

КонецЕсли;
Сообщить(Считыватель1.Тег(), 1);
КонецСценария

И в ядре опроса на вкладке сценариев смотреть, меняются у вас значения в Теге.

Ростовцев Вячеслав Викторович 11 дней 10 часов назад

Вячеслав вы сценарий пробуйте Котоый Константин написал? А у вас какая версия Ориона ? 

Лобачев Вячеслав Викторович 11 дней 10 часов назад

Да, сценарий который написал Константин, второй который. Первый не будет работать на 1.12
Я вообще запускал его на 1.10 действующей.
ОЗ перезагружали? Строчку в код добавляли, как я говорил, смотрели, что происходит после этого в ядре опроса в сценариях? Если всё верно отрабатывает, должны появляться цифры, после каждого предоставления доступа, от 1 до 8, и так по кругу.

Ростовцев Вячеслав Викторович 11 дней 10 часов назад

Сценарий вручную вбивали или копировали текст с форума? Если вручную, кидайте сюда листинг, возможно какая-то ошибка закралась.

Ростовцев Вячеслав Викторович 11 дней 10 часов назад

Сценарии копировал с форума. 

Лобачев Вячеслав Викторович 11 дней 10 часов назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

1.12

11 дней 10 часов назад

avatar
Спасибо всем большое за представленные идеи , за помощь.. Константин спасибо за скрипт, Разобрались дописали Вячеслав вашу строчку подвязали сценарии к считывателю. И вот оно счастье. Ещё раз спасибо огромное.

Лобачев Вячеслав Викторович 11 дней 10 часов назад

Ну если всё заработало, то эту строчку можете удалить. Это в качестве отладочного инструмента. 

Ростовцев Вячеслав Викторович 11 дней 9 часов назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

Ну походу пока я отдуплился, тут все порешали)

10 дней 22 часа назад

avatar
Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

Добавить ответ

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

ПОКАЗАН

422 раза

ЗАДАН

12 дней 10 часов назад

По каждому вопросу/ответу можно добавлять комментарии. Комментарии предназначены для уточнения вопроса/ответа.

Слева от каждого вопроса/ответа указано число – количество голосов. Над и под этим числом имеются стрелки, с помощью которых вы можете проголосовать за актуальный или понравившийся вам вопрос/ответ. Причем можете оставить свой голос как в «плюс» (верхняя стрелка), так и в «минус» (нижняя стрелка), если сообщение, например, неуместно или вы его не поддерживаете. Также можно отменить свой голос, если проголосовали ошибочно или передумали. Для отмены надо нажать на оранжевую стрелку.