Сценарий для включения реле

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

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


MAX232
Автор темы
MAX232
Автор темы
Репутация: 0
Сообщения: 72
Зарегистрирован: 21.12.2015
С нами: 8 лет 3 месяца
Профессия: монтажник

Непрочитанное сообщение #1 MAX232 » 06.02.2017, 23:46

Прошу помощи дописать вот этот сценарий:

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


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


Нужно дописать его так чтобы он работал только тогда когда Раздел 6 находится в состоянии ВЗЯТ. Т.е. если раздел уже находится в состоянии ВЗЯТ то сценарий работать не должен.

DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1723
Зарегистрирован: 03.03.2016
С нами: 8 лет
Профессия: безобразнорабочий

Непрочитанное сообщение #2 DruG » 07.02.2017, 04:00

MAX232 писал(а):чтобы он работал только тогда когда Раздел находится в состоянии ВЗЯТ, т.е. если раздел уже находится в состоянии ВЗЯТ то сценарий работать не должен
сильное ТЗ :ps_ih:

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

MAX232
Автор темы
MAX232
Автор темы
Репутация: 0
Сообщения: 72
Зарегистрирован: 21.12.2015
С нами: 8 лет 3 месяца
Профессия: монтажник

Непрочитанное сообщение #3 MAX232 » 07.02.2017, 08:37

) Вы не совсем поняли. То о чем вы говорите можно сделать и в пульте. Но необходимо чтобы не само наступление события "Взят" активировало сценарий, а сценарий работал только тогда когда раздел уже находится в состоянии "взят". А сам сценарий активируют окна времени.

DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1723
Зарегистрирован: 03.03.2016
С нами: 8 лет
Профессия: безобразнорабочий

Непрочитанное сообщение #4 DruG » 07.02.2017, 09:49

боюсь яснее не стало :nez-nayu:
я вижу у вас два противоречивых условия: если раздел Взят, то сценарий должен отработать и сценарий не должен отработать. Как это может быть?

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

Непрочитанное сообщение #5 pet-and » 07.02.2017, 09:56

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

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

Непрочитанное сообщение #6 google » 07.02.2017, 10:30

Ну да.
MAX232, вставляйте условие в текст сценария на проверку состояния раздела, и в теле условия, если раздел взят, выполняйте основное тело сценария. Что не понятного.

MAX232
Автор темы
MAX232
Автор темы
Репутация: 0
Сообщения: 72
Зарегистрирован: 21.12.2015
С нами: 8 лет 3 месяца
Профессия: монтажник

Непрочитанное сообщение #7 MAX232 » 07.02.2017, 11:01

google писал(а):Ну да.
MAX232, вставляйте условие в текст сценария на проверку состояния раздела, и в теле условия, если раздел взят, выполняйте основное тело сценария. Что не понятного.
А вот в этом мне и нужна помощь)

Добавлено спустя 16 секунд:
pet-and писал(а):Никаких противоречий. Смысл в следующем: настало зловещее время, запускается сценарий, и в соотвествии с тем взят раздел на охрану или нет реле и должно либо отрабатывать, либо нет.
Абсолютно верно!

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

Непрочитанное сообщение #8 google » 07.02.2017, 12:20

MAX232, типа этого. Попробуй. Только узнай для начала ИД нужного тебе раздела и вставь в соответствующее место.
Спойлер
Сценарий
Переменные
Перем РабочееМесто1;
Перем РабочиеМеста1;
Перем Компьютер1;
Перем Компьютеры1;
Перем Реле1;
Перем Разделы1;
Перем Раздел1;
НачалоСценария


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

DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1723
Зарегистрирован: 03.03.2016
С нами: 8 лет
Профессия: безобразнорабочий

Непрочитанное сообщение #9 DruG » 07.02.2017, 13:56

pet-and писал(а):Никаких противоречий. Смысл в следующем: настало зловещее время, запускается сценарий, и в соотвествии с тем взят раздел на охрану или нет реле и должно либо отрабатывать, либо нет.
смысл то может и в этом, но в ТЗ чётко сказано:
MAX232 писал(а):чтобы он работал только тогда когда Раздел 6 находится в состоянии ВЗЯТ. Т.е. если раздел уже находится в состоянии ВЗЯТ то сценарий работать не должен.
где в этом предложении сказано про иное состояние раздела кроме ВЗЯТ? лично я вижу, что сценарий должен работать и не должен работать когда раздел ВЗЯТ :zvez_ochki:

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

Непрочитанное сообщение #10 google » 07.02.2017, 14:37

MAX232 писал(а):Нужно дописать его так чтобы он работал только тогда когда Раздел 6 находится в состоянии ВЗЯТ. Т.е. если раздел уже находится в состоянии ВЗЯТ то сценарий работать не должен.
DruG, возможно в этом ТЗ гораздо глубокий смысл, вероятно это за гранью нашего понимания :-) Ключевое слово в нем - уже

Добавлено спустя 3 минуты 15 секунд:
Обратное условие будет такое: если Раздел 6 в состоянии ВЗЯТ, но ещё не находится в состоянии ВЗЯТ.

MAX232
Автор темы
MAX232
Автор темы
Репутация: 0
Сообщения: 72
Зарегистрирован: 21.12.2015
С нами: 8 лет 3 месяца
Профессия: монтажник

Непрочитанное сообщение #11 MAX232 » 07.02.2017, 15:09

google писал(а):MAX232, типа этого. Попробуй. Только узнай для начала ИД нужного тебе раздела и вставь в соответствующее место.
Для меня пока сложность узнать ИД раздела. Я скопировал макрос созданный в автоматическом режиме для команды взять раздел ( который мне нужен) и склеил со своим макросом. Пока не работает) Как бы два вопроса, где я ошибся и второй вопрос: как происходит отладка работы сценария. Я вижу там есть команда Сообщить( "Реле не найдено", 1 ), куда выводится эти сообщения ? Я много програмировал в разных средах, но везде использовал отладчики, там всегда видно содержание переменных и прочее на любом этапе выполнения программы.

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


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

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

Непрочитанное сообщение #12 pet-and » 07.02.2017, 15:13

Сообщение выводится в ЯдроОпроса, вкладка "Сценарии".
Там же будут видны все ошибки, на которых стопорится выполнение сценария.

MAX232
Автор темы
MAX232
Автор темы
Репутация: 0
Сообщения: 72
Зарегистрирован: 21.12.2015
С нами: 8 лет 3 месяца
Профессия: монтажник

Непрочитанное сообщение #13 MAX232 » 07.02.2017, 15:22

pet-and писал(а):Сообщение выводится в ЯдроОпроса, вкладка "Сценарии".
Там же будут видны все ошибки, на которых стопорится выполнение сценария.
Спасибо! Но ошибок нет ни в каких вкладках
2018:0.0.0.0 ЗАПУСК СЦЕНАРИЯ УПРАВЛЕНИЯ Сценарий:Ручной запуск:ИК (взят\снят) от 07.02.2017 15:20:35

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

Непрочитанное сообщение #14 google » 07.02.2017, 15:30

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

MAX232
Автор темы
MAX232
Автор темы
Репутация: 0
Сообщения: 72
Зарегистрирован: 21.12.2015
С нами: 8 лет 3 месяца
Профессия: монтажник

Непрочитанное сообщение #15 MAX232 » 07.02.2017, 15:48

google писал(а):MAX232, вы мой сценарий пробовали?
Чтобы узнать ИД раздела, сделайте какой-нибудь сценарий на основе шаблона с нужным разделом и посмотрите этот ИД в коде сценария.
ИД я так и сделал, спасибо за совет.
Ваш сценарий заработал, я в нем поправил только ИД реле.
И мой также работает. Я не правильно интерпретирование результат. Я ожидал в мониторе появление строки "включение реле" , но эта строка не появлялась т.к. реле уже было включено. Я написал вспомогательный скрипт для его тестового выключения и результат работы вашего и моего скрипта стал сразу виден.
Спасибо всем большое за вашу помощь!


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

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

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

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

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