|
Добрый день. В настоящий момент есть необходимость написать сценарии.Задача такая 6 лет 10 месяцев назад Лобачев Вячеслав Викторович 12Вариант с кнопкой отпадает, нужно это реализовать на программном уровне. Версия Ориона 1.12 выпуск 2, Задача такова В 17:00 люди выходят с фабрики имеются 4 турникета нужно сделать произвольную блокировку прохода для досмотра данного сотрудника охраной. Или как вариант пусть турникеты блокироуются к примеру каждые 30 секунд.
– Лобачев Вячеслав Викторович 6 лет 10 месяцев назад Вот что пришло на ум: в сценарии пишется условие, в котором анализируется текущее время. Допустим если текущее кол-во секунд не чётное, то блокируем доступ, если чётное, то не блокируем. Блокируем допустим на 1 сек. Также, что бы сценарий отрабатывал автоматом, ставим проверку по времени, допустим что-бы работал только с 17-30 до 18-00. Дальше этот сценарий привязываем к событию Идентификатор хозоргана (вроде) считывателя.
– Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?) |
|
Насчет блокировки так сказать по расписанию, например вам необходимо это делать с 17:30 до 18:00, создаете окно для запуска сценариев, там шаг одна минута,17:31...18:00 в итоге 30 интервалов на каждый день, в самом сценарии используете шаги, заблокировать считыватель(указать считыватели), (ядро) пауза(указать время блокировки), разблокировать считыватель(указать считыватели). Далее на вкладке расписание, указываете сценарий и окно запуска, получаете что с 17:31 до 18:00 каждую минуту будет запускаться сценарий, который блокирует считыватели, ждет необходимое время и разблокирует, на каждый турникет можно указать свой сценарий и окно запуска. Все это можно сделать стандартными средствами. Правда я не знаю как поведет себя АРМ и оборудование при таком частом запуске сценариев. 6 лет 10 месяцев назад Тремасов Константин Александрович 5564Не, так не пойдет, так как нужно блокировать не все проходы, в конкретный промежуток времени, а именно проход конкретного человека. А то получится так: считыватель заблокируется на 10 сек, и в течении этих десяти секунд никто не сможет пройти через турникет. Придётся досматривать всех )))
Проще блокировать, допустим, каждого 10 проходящего, либо вообще рандомно. Не помню, есть рандом в Орионе. – Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Ну заблокируйте считку на 1 сек, и не каждую минуту и не каждый турникет, окна посмотрие как создаются, можно в разные дни разные турникеты блокировать, коснулся, блок, на досмотр, остальные проходят. Насчет рандома, надо думать, на это больше времени надо. Написал пока что сразу на ум пришло.
– Тремасов Константин Александрович 6 лет 10 месяцев назад Хорошо, блокировка на 1 сек., потом перерыв 30 сек. А если поток выходящих не большой. Тогда шанс попасть в промежуток в 1 сек. будет минимальный.
– Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Эт когда такое было чтоб с фабрики по звонку в конце смены был минмальный поток то?)))
– Тремасов Константин Александрович 6 лет 10 месяцев назад Ну эт я пытаюсь предусмотреть все возможные варианты развития событий ))
– Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?) |
|
Поток людей на выход приличный примерно 300-400 человек. Рандомная блокировка отличный вариант но догадываюсь что реализовать достаточно сложно. А кто подскажет как сделать блокировку каждого 10 человека. Если ничего не получиться будем делать блокировку по расписанию на несколько секунд турникета. 6 лет 10 месяцев назад Лобачев Вячеслав Викторович 12А блокировать выходящих на нечетных секундах, как я выше предложил, не подойдет? Не обязательно именно на нечетных. Можно сделать проверку и ловить скажем тех, кто выходит на 3, 5 и 8 секундах на конце.
А для блокировки каждого десятого - создаётся файл, при каждом проходе в него записывается число с инкрементом 1, т. е. первый прошёл, записалось 1, воторой прошел, записалось два и т. д. На 10 считыватель блокируется, а число в файле обнуляется, и всё начинается заново. – Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад А как мне написать скрипт На Блокировку каждого 10 го человека при выходе. У вас есть пример чтобы понять куда копать.
– Лобачев Вячеслав Викторович 6 лет 10 месяцев назад Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?) |
|
Сценарий 6 лет 10 месяцев назад Тремасов Константин Александрович 5564Спасибо Константин за скрипт. На работу приеду буду пробовать.
– Лобачев Вячеслав Викторович 6 лет 10 месяцев назад В 1.12 этот сценарий не будет работать, так как функция ПолучитьСобытие была введена в версии 1.20.
Тут надо считыватель находить по ИД. Как найти ИД, я хз, только опытным путем: создать сценарий с нужным ситывателем в конструкторе, а потом посмотреть код сценария, там будет виден ИД. – Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Мне кажется нужно привязывать к событию Идентификация хозоргана, а не проход, так как если привязать к событию проход, то будет заблокирован проход следующему человеку, если он попытается пройти в течении задержки (в данном случае 3 сек.). Если привязывать к событию Идентификация хозоргана, то теоретически будет блокироваться доступ текущему человеку. Но надо пробовать.
– Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Ну это уже как хотите, пробуйте с нужными событиями, это не проблема. По поводу, ИД считки, переделаю, сейчас на выезде.
– Тремасов Константин Александрович 6 лет 10 месяцев назад Сценарий
Переменные Перем Считыватели1; Перем Считыватель1; НачалоСценария Считыватели1 = СоздатьОбъект( "Считыватели" ); Считыватель1 = Считыватели1.ПолучитьПоИД(139); Если Не ПустоеЗначение(Считыватель1.Тег()) Тогда Считыватель1.ПоместитьВТег(Число(Считыватель1.Тег())+1); Иначе Считыватель1.ПоместитьВТег("1"); КонецЕсли; Если Число(Считыватель1.Тег())==9 Тогда Считыватель1.ЗаблокироватьДоступ(); Задержка(3000); Считыватель1.ВосстановитьДоступ(); Считыватель1.ПоместитьВТег("0"); КонецЕсли; КонецСценария Считыватель1 = Считыватели1.ПолучитьПоИД(139); // В скобках указать пользовательский номер считывателя. При таком раскладе, надо создать 4 сценария, для четырех считывателей и в каждом указать пользовательский номер в скобках, каждый привязать к удобному событию. – Тремасов Константин Александрович 6 лет 10 месяцев назад Константин здравствуйте, пробовал запускать ваш сценарии, через конструктор скрипта нашёл номер ИД считывателя. Но блокировки не происходит считки. Можете если есть возможность у себя протестировать скрипт на блок?
– Лобачев Вячеслав Викторович 6 лет 10 месяцев назад Проверю, но не сегодня, возможно есть различия в командах между 1.12 и 1.20.2. у вас в журнале идут события "запуск сценария" и после 10 раза "доступ заблокирован"?
– Тремасов Константин Александрович 6 лет 10 месяцев назад Спасибо. Да в журнале побития иду что доступ предоставлен но на 10 раз не блокируется считка.(((
– Лобачев Вячеслав Викторович 6 лет 10 месяцев назад События "Доступ предоставлен" в логах мало, надо ещё и Запуск сценария там увидеть ;) сценарий то привязали к событию на нужном считывателе (ИД которого в самом сценарии указали)?
– Волков Андрей 6 лет 10 месяцев назад Вячеслав, к какому событию считывателя привязываете сценарий?
– Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад У меня сценарий работает. Вы перезагружали ОЗ после привязки сценария к считывателю?
– Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад И попробуйте увеличить время ожидания скажем до 5 сек. или даже до 10, чтобы уж точно убедиться, происходит блокировка или нет.
– Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Еще можете в конце сценария добавить вот такую строчку
КонецЕсли; Сообщить(Считыватель1.Тег(), 1); КонецСценария И в ядре опроса на вкладке сценариев смотреть, меняются у вас значения в Теге. – Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Вячеслав вы сценарий пробуйте Котоый Константин написал? А у вас какая версия Ориона ?
– Лобачев Вячеслав Викторович 6 лет 10 месяцев назад Да, сценарий который написал Константин, второй который. Первый не будет работать на 1.12
Я вообще запускал его на 1.10 действующей. ОЗ перезагружали? Строчку в код добавляли, как я говорил, смотрели, что происходит после этого в ядре опроса в сценариях? Если всё верно отрабатывает, должны появляться цифры, после каждого предоставления доступа, от 1 до 8, и так по кругу. – Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Сценарий вручную вбивали или копировали текст с форума? Если вручную, кидайте сюда листинг, возможно какая-то ошибка закралась.
– Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?) |
|
1.12 6 лет 10 месяцев назад Лобачев Вячеслав Викторович 12Спасибо всем большое за представленные идеи , за помощь.. Константин спасибо за скрипт, Разобрались дописали Вячеслав вашу строчку подвязали сценарии к считывателю. И вот оно счастье. Ещё раз спасибо огромное.
– Лобачев Вячеслав Викторович 6 лет 10 месяцев назад Ну если всё заработало, то эту строчку можете удалить. Это в качестве отладочного инструмента.
– Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?) |
|
Ну походу пока я отдуплился, тут все порешали) 6 лет 10 месяцев назад Тремасов Константин Александрович 5564Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?) |
5298 раз
6 лет 10 месяцев назад
По каждому вопросу/ответу можно добавлять комментарии. Комментарии предназначены для уточнения вопроса/ответа.
– Ростовцев Вячеслав Викторович 6 лет 10 месяцев назад
#ссылка