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

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

Непрочитанное сообщение #81 DruG » 07.07.2016, 17:06

действительно, тут и ограничений то никаких не видно. Может попробовать разбить диапазон на два? с 22:00 до 23:59 и с 0:00 до 5:00, правда тут целая минута выпадает

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

Непрочитанное сообщение #82 pet-and » 07.07.2016, 18:12

Видимо, все дело в том, что скрипт не умеет понимать значение "время", а пользуется исключительно математическим принципом, где не существует правила, что 5>22. Поэтому, придется смириться с тем, что надо обозначать два условия: от 22:00 до 23:59 и от 00:00 до 5:00. С этим как раз все более менее ясно.
А вот почему не работает с 8:00 до 21:00, таки непонятно.
Хотя, как вариант - попробуйте задать время в условии не " 5:00", а "05:00".

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

Непрочитанное сообщение #83 XAMMEP » 08.07.2016, 10:58

Код: Выделить всё

((ТекущееВремя() >= "22:00") и (ТекущееВремя() <= "23:59")) или ((ТекущееВремя() >= "00:00") и (ТекущееВремя() <= "05:00"))
- срабатывает только до 0, после нет

Код: Выделить всё

((ТекущееВремя() >= "22:00") и (ТекущееВремя() <= "23:59")) или ((ТекущееВремя() >= "0:00") и (ТекущееВремя() <= "5:00"))
или

Код: Выделить всё

((ТекущееВремя() >= "0:00") и (ТекущееВремя() <= "5:00")) или ((ТекущееВремя() >= "22:00") и (ТекущееВремя() <= "23:59"))
- срабатывает все 24 часа

Код: Выделить всё

((ТекущееВремя() >= "22:00") и (ТекущееВремя() <= "05:00"))
- не срабатывает вовсе

Добавлено спустя 15 минут 40 секунд:
Даже попробовал

Код: Выделить всё

((ТекущееВремя() >= "22:00") и (ТекущееВремя() <= "5:00"))
или

Код: Выделить всё

((ТекущееВремя() >= "0:00") и (ТекущееВремя() <= "2:00"))
- результат потрясает, не срабатывает с 5.00 до 9.59, в остальное время сработки
Где логика?????!!!!!

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

Непрочитанное сообщение #84 pet-and » 08.07.2016, 11:32

Даааа, лажа. По всей видимости надо стучать в ТП, чтобы когда-нибудь пофиксили багу.

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

Непрочитанное сообщение #85 XAMMEP » 08.07.2016, 11:33

pet-and писал(а):Даааа, лажа. По всей видимости надо стучать в ТП, чтобы когда-нибудь пофиксили багу.
Уже постучал...

DruG
DruG
Репутация: 18
Сообщения: 254
Зарегистрирован: 03.03.2016
С нами: 8 месяцев 30 дней
Профессия: безобразнорабочий

Непрочитанное сообщение #86 DruG » 08.07.2016, 15:55

чот реально какой-то бред %)
если ТП ничего толкового не сделает, то можно попробовать изобрести очередной велосипед))
резюком заглушить один свободный шлейф, создать два окна времени для сценариев, по расписанию в 22:00 этот свободный шлейф ставится на охрану, в 5:00 по второму расписанию шлейф снимается. Сценарий оповещения проверяет состояние шлейфа и если на охране - оповещение ON, снят с охраны - оповещение OFF. Такой способ просто обязан работать ;)

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

Непрочитанное сообщение #87 XAMMEP » 08.07.2016, 16:03

Вот их ответ
Здравствуйте!

Попробуйте просто (ТекущееВремя() >= "22:00") или (ТекущееВремя() <= "05:00").


Мой: По вашему примеру срабатывает: ON- с 22 до 9.59, OFF- с 10 до 22
С двумя ЕСЛИ пробовал, так они друг друга начинают гасить... Может проще реле времени воткнуть? :du_ma_et:

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

Непрочитанное сообщение #88 XAMMEP » 11.07.2016, 14:35

Во что ТП скинула:

Здравствуйте!

Для отработки сценария по Вашей просьбе необходимо временной формат перевести в целочисленный.
Вот такой текст надо использовать внутри сценария для сравнения дат, предварительно введя переменные t, t1, t2:


Код: Выделить всё

t = ПолучитьЧасы(ТекущееВремяДатаЧисло())*3600+ ПолучитьМинуты(ТекущееВремяДатаЧисло ())*60+ ПолучитьСекунды(ТекущееВремяДатаЧисло());
t2 = СобратьВремя(5,0,0,0);
t2 = ПолучитьЧасы(t2)*3600+ ПолучитьМинуты(t2)*60+ ПолучитьСекунды(t2);
t1 =СобратьВремя(22,0,0,0);
t1 = ПолучитьЧасы(t1)*3600+ ПолучитьМинуты(t1)*60+ ПолучитьСекунды(t1);
Если (t<=t2) ИЛИ (t>=t1) Тогда


РабМесто4.ЗаписатьВЖурналСобытий("Оповещение охраны ON");
иначе РабМесто4.ЗаписатьВЖурналСобытий("Оповещение охраны OFF");

Во как оказывается...
Пойду тестить )))

Добавлено спустя 1 час 21 минуту:
Работает!!!!! :ya_hoo_oo:

nick108
nick108
Репутация: 0
Сообщения: 65
Зарегистрирован: 04.09.2015
С нами: 1 год 2 месяца
Профессия: iT

Непрочитанное сообщение #89 nick108 » 11.07.2016, 17:03

Код: Выделить всё

t = ПолучитьЧасы(ТекущееВремяДатаЧисло())*3600+ ПолучитьМинуты(ТекущееВремяДатаЧисло ())*60+ ПолучитьСекунды(ТекущееВремяДатаЧисло());
t2 = СобратьВремя(5,0,0,0);
t2 = ПолучитьЧасы(t2)*3600+ ПолучитьМинуты(t2)*60+ ПолучитьСекунды(t2);
t1 =СобратьВремя(22,0,0,0);
t1 = ПолучитьЧасы(t1)*3600+ ПолучитьМинуты(t1)*60+ ПолучитьСекунды(t1);
Если (t<=t2) ИЛИ (t>=t1) Тогда
РабочееМесто1.ПоказатьСообщение("ночь");
Конецесли;
Если (t<=t1) ИЛИ (t>=t2) Тогда
РабочееМесто1.ПоказатьСообщение("день");
Конецесли;

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

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

Непрочитанное сообщение #90 pet-and » 11.07.2016, 18:41

Даааа, чего-то не подумал об этой функции, честно говоря, совершенно не представлял, нафига она нужна. А вот жешь, где собака может покопаться.


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

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

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

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

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