Нет, год назад я спрашивал у ТП. Сделать нельзя. Делай смещение в 100-200 символов и сохраняй в файл - потом копируй в Ворд и будет счастие))lamyk писал(а):не могу сообразить каким образом сформировать файл типа
переменная1
переменная2
переменная3
получается только в одну строчку типа переменная1 переменная2 переменная3
кто-нибудь в курсе как организовать перевод строки?
Я это делал в виндовом блокноте. Закончилась строчка, жмем ентер, 1.11 sp5 все это нормально переварил.AlexRuden писал(а): Сделать нельзя.
Причем тут это? Процесс должен быть автоматизирован - я не собираюсь 1000 раз жать ентер при выводе в файл информации о состоянии заслонок ОЗ при ТО (рабочий-дежурный-рабочий режим заслонок).Запустил сценарий и ушел курить 10 минут пока идет проверка заслонок и вывод результата в файл (со смещением). Далее копипаст в Ворд и на печать - всё наглядно и хорошо. Ну а вам предлагаю сидеть и жать ентер...pet-and писал(а):Я это делал в виндовом блокноте. Закончилась строчка, жмем ентер, 1.11 sp5 все это нормально переварил.AlexRuden писал(а): Сделать нельзя.
В АБД в "Инспекторе/События" на вкладке "Компьютер" есть "Изменение состояния". Кладете туда скрипт со строкойpet-and писал(а):Никак не могу разобраться, как же заставить скрипт отслеживать не какой-то конкретный раздел/шлейф, а любое событие в системе?
Код: Выделить всё
Событие1= ПолучитьСобытие();
Код: Выделить всё
СобытиеСкрипта
(*)Событие() : Объект - возвращает объект «Событие».
(*)ВремяиДата() : Число - возвращает время и дату события.
(*)Прибор() : Объект - возвращает прибор, на котором произошло событие.
(*)Элемент() : Объект - возвращает объект («Шлейф», «Реле», «Считыватель»,
«Камера»), которому принадлежит событие.
(*)Объект() : Объект - возвращает раздел или группу разделов, зоне которого
принадлежит событие.
(*)Пароль() : Объект - возвращает пароль.
(*)Дверь() : Объект - возвращает дверь для событий СКД.
(*)РежимПрохода() : Число - возвращает режим прохода для событий СКД
(0 - проход, 1 - вход, 2 - выход).
(*)ЗонаДоступа() : Объект - возвращает зону доступа для событий СКД.
(!!!) Объект «СобытиеСкрипта» возвращается только при вызове системной функции «ПолучитьСобытие».
У вас на каждый клапан свое реле? Я делал проверку для клапанов , но там по отсекам отключение. Просто нужна была проверка на предмет работоспособности клапана, ежемесячно.pet-and писал(а):Просто на объекте 450, ну без малого, клапанов, монтажники вечно путают эти оранжевые/красные провода, а очень хотелось автоматизированно знать, какая релюха какой клапан движет. Прям БЕДА какая-то.
Код: Выделить всё
Сценарий
Переменные
Перем СерверОрион;
Перем ШС;
Перем ШС1;
Перем ШС2;
Перем ГруппыРазделовБД;
Перем РучнойПуск;
Перем Счетчик1;
Перем Счетчик2;
Перем Смещение;
НачалоСценария
СерверОрион = СоздатьОбъект( "Ядро" );
ГруппыРазделовБД = СоздатьОбъект( "ГруппыРазделов" );
ШС = "";
ШС1 = "";
ШС2 = "";
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Запуск сценария .", 1 );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Проверим состояние клапанов в исходном режиме. Ожидайте ...", 1 );
Для Счетчик1 = 0 По ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Количество() - 1 Цикл
Если Не ПустоеЗначение( ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ) ) Тогда
Если Не ПустоеЗначение( ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны() ) Тогда
Для Счетчик2 = 0 По ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Количество() - 1 Цикл
Если ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ТипЭлемента() == "ШЛЕЙФ" Тогда
Если ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Состояние() == "ВОССТАНОВЛЕНИЕ ТЕХНОЛОГИЧЕСКОГО ШС" Тогда
ШС = ШС + "1";
Иначе
Если ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Состояние() == "НАРУШЕНИЕ ТЕХНОЛОГИЧЕСКОГО ШС" Тогда
ШС = ШС + "0";
Иначе
ШС = ШС + "2";
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
РучнойПуск = СерверОрион.ЗапросОператору( "Снимите питание с клапанов." , 300, 7 ) ;
Если РучнойПуск == 6 Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Клапаны обесточены. ", 1 );
Иначе
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Запуск отменен.", 2 );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Конец сценария .", 1 );
Возврат( 0 );
КонецЕсли;
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Ждем 30 секунд.", 1 );
Для Счетчик1 = 1 По 60 Цикл
Задержка( 500 );
КонецЦикла;
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Проверим состояние клапанов в рабочем режиме. Ожидайте ...", 1 );
Для Счетчик1 = 0 По ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Количество() - 1 Цикл
Если Не ПустоеЗначение( ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ) ) Тогда
Если Не ПустоеЗначение( ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны() ) Тогда
Для Счетчик2 = 0 По ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Количество() - 1 Цикл
Если ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ТипЭлемента() == "ШЛЕЙФ" Тогда
Если ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Состояние() == "ВОССТАНОВЛЕНИЕ ТЕХНОЛОГИЧЕСКОГО ШС" Тогда
ШС1 = ШС1 + "1";
Иначе
Если ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Состояние() == "НАРУШЕНИЕ ТЕХНОЛОГИЧЕСКОГО ШС" Тогда
ШС1 = ШС1 + "0";
Иначе
ШС1 = ШС1 + "2";
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
РучнойПуск = СерверОрион.ЗапросОператору( "Подайте питание на клапаны." , 300, 7 ) ;
Если РучнойПуск == 6 Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Продолжаем сканирование. ", 1 );
Иначе
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Запуск отменен.", 2 );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Конец сценария .", 1 );
Возврат( 0 );
КонецЕсли;
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Ждем 200 секунд.", 1 );
Для Счетчик1 = 1 По 400 Цикл
Задержка( 500 );
КонецЦикла;
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Проверим состояние клапанов в исходном режиме. Ожидайте ...", 1 );
Для Счетчик1 = 0 По ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Количество() - 1 Цикл
Если Не ПустоеЗначение( ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ) ) Тогда
Если Не ПустоеЗначение( ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны() ) Тогда
Для Счетчик2 = 0 По ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Количество() - 1 Цикл
Если ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ТипЭлемента() == "ШЛЕЙФ" Тогда
Если ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Состояние() == "ВОССТАНОВЛЕНИЕ ТЕХНОЛОГИЧЕСКОГО ШС" Тогда
ШС2 = ШС2 + "1";
Иначе
Если ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Состояние() == "НАРУШЕНИЕ ТЕХНОЛОГИЧЕСКОГО ШС" Тогда
ШС2 = ШС2 + "0";
Иначе
ШС2 = ШС2 + "2";
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Смещение = 1;
Для Счетчик1 = 0 По ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Количество() - 1 Цикл
Если Не ПустоеЗначение( ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ) ) Тогда
Если Не ПустоеЗначение( ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны() ) Тогда
Для Счетчик2 = 0 По ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Количество() - 1 Цикл
Если ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ТипЭлемента() == "ШЛЕЙФ" Тогда
Сообщить( ".", 0 );
Если (Сред( ШС, Смещение, 1 ) == Сред( ШС1, Смещение, 1 ))И(Сред( ШС1, Смещение, 1 ) == Сред( ШС2, Смещение, 1 )) Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Клапан не меняет положение." + ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес(), 1 );
СерверОрион.ЗаписьВФайл( "c:\BOLID\состояние_клапанов.txt" , Смещение*128 , ТекущаяДата() + " " + ТекущееВремя() + " - Клапан не меняет положение." + ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() );
Иначе
Если Сред( ШС, Смещение, 1 ) == Сред( ШС1, Смещение, 1 ) Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Клапан не принял рабочее положение." + ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес(), 1 );
СерверОрион.ЗаписьВФайл( "c:\BOLID\состояние_клапанов.txt" , Смещение*128 , ТекущаяДата() + " " + ТекущееВремя() + " - Клапан не меняет положение." + ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() );
КонецЕсли;
Если Сред( ШС1, Смещение, 1 ) == Сред( ШС2, Смещение, 1 ) Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Клапан не принял исходное положение." + ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес(), 1 );
СерверОрион.ЗаписьВФайл( "c:\BOLID\состояние_клапанов.txt" , Смещение*128 , ТекущаяДата() + " " + ТекущееВремя() + " - Клапан не меняет положение." + ГруппыРазделовБД.ПолучитьПоИндексу( 100 ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() );
КонецЕсли;
КонецЕсли;
Смещение = Смещение + 1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Конец сценария .", 1 );
КонецСценария
Немного изменив и дополнив мой скрипт вы можете снять логи поведения реле и пар КЦ (найти зависимости) . Если клапан "играет" примерно 2 минуты, то вам нужно лишь запустить правильный скрипт на 450*2 минут и ждать результатов. Потом уже анализировать, где какие зависимости реле и КЦ. Можно эти зависимости заложить в БД или в скрипте - тогда скрипт опустит правильные пары и будет выводить в лог-файл только ошибки монтажников.pet-and писал(а):Однако, засада в том, что я гарантированно не знаю, какое реле управляет каким клапаном, да и признаться, в каком состоянии шлейфы на клапане в штатном режиме, я также гарантированно не знаю. Дело в том, что положение клапана отображают КЦ АР8 (открыт/закрыт), поэтому парные КЦ будут на один клапан или нет - это вопрос вопросов.
Кстати, с юбилеем Вас, и огромное человеческое СПАСИБО.AlexRuden писал(а):Зарегистрирован: 13.01.2012 - 11:01
Сообщения: 1000
Откуда: Россия.
Благодарил (а): 0 раз.
Поблагодарили: 52 раз.
Профессия: Наёмник.
Код: Выделить всё
...
...
...
АббревиатураОповещение = "(АСО)";
...
...
...
Если КодСобытия == 3 //255 // "ДВА ПОЖАРА"
Тогда
//- Определим отсек по названию группового раздела
//- Запуск зеркала скрипта с параметром АСО+АСДУ+ЭУ
//-
ГрРазделСобытия = 0;
Если Не ПустоеЗначение ( СобытиеОрион.Объект().ГруппыРазделов() )
Тогда
Для Счетчик = 0 По СобытиеОрион.Объект().ГруппыРазделов().КоличествоЭлементов() - 1
Цикл
Если Лев( СобытиеОрион.Объект().ГруппыРазделов().Элемент( Счетчик ).Название() , ДлинаСтроки( АббревиатураПС ) ) == АббревиатураПС
Тогда
ГрРазделСобытия = СобытиеОрион.Объект().ГруппыРазделов().Элемент( Счетчик ).Индекс();
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ГрРазделСобытия == 0
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Гр.Раздел " + АббревиатураПС + " не найден - авария скрипта №1. " , 2 );
Возврат( 0 );
КонецЕсли;
ЯдроОрион.Шлейфы().Элемент( 6 ).ПоместитьВТег( ГрРазделСобытия );
// Запуск зеркала скрипта с параметром АСО+АСДУ+ЭУ
Для Счетчик = 2 По 4
Цикл
ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).ПоместитьВТег( Счетчик );
ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).ВыполнитьСценарий( 0 );
Пока ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).Тег() <> 1
Цикл
Задержка( 10 );
КонецЦикла;
КонецЦикла;
КонецЕсли;
...
...
...
// Зеркало скрипта АСО
Если ( ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).Тег() == 3 )
Тогда
ГрРазделСобытия = ЯдроОрион.Шлейфы().Элемент( 6 ).Тег();
ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).ПоместитьВТег( 1 );
Если ЯдроОрион.Шлейфы().Элемент( 2 ).Тег() == 0 // работает зеркало АСО, ждем ..
Тогда
//- Ждем максимум 10 минут
Для Счетчик = 1 По 600
Цикл
Если ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).Тег() == 100 // Прерывание работы всех систем
Тогда
Сообщить( АббревиатураОповещение + " - Работа прервана.", 1 );
Возврат( 0 );
КонецЕсли;
Если ЯдроОрион.Шлейфы().Элемент( 2 ).Тег() == 2 // Все уже сделано до нас - выходим
Тогда
Сообщить( АббревиатураОповещение + " - Завершено.", 0 );
Возврат( 0 );
КонецЕсли;
Задержка( 500 );
КонецЦикла;
Сообщить( АббревиатураОповещение + " - Завершено по истечении времени." , 2 );
Возврат( 0 );
КонецЕсли;
Если ЯдроОрион.Шлейфы().Элемент( 2 ).Тег() == 2 // Все уже сделано до нас - выходим
Тогда
Сообщить( АббревиатураОповещение + " - Выполнено." , 0 );
Возврат( 0 );
КонецЕсли;
Если ЯдроОрион.Шлейфы().Элемент( 2 ).Тег() == 1 // разрешено работать зеркалу АСО
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Начало зеркала " + АббревиатураОповещение + " .", 0 );
Для Счетчик2 = 0 По ЯдроОрион.ГруппыРазделов().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Название() == АббревиатураОповещение
Тогда
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().КоличествоЭлементов() > 0
Тогда
Для Счетчик = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().КоличествоЭлементов() - 1
Цикл
Если Не ПустоеЗначение ( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ) )
Тогда
Если Не ПустоеЗначение ( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны() )
Тогда
Для Счетчик1 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны().Элемент( Счетчик1 ).ТипЭлемента() == "ВЫХОД"
Тогда
Если ТактикаРелеПускОповещениеПриПожаре == "включить"
Тогда
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны().Элемент( Счетчик1 ).Включить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Название() + " ' - Реле включили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны().Элемент( Счетчик1 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны().Элемент( Счетчик1 ).ЕстьСостояние( 401 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Название() + " ' - Реле включено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны().Элемент( Счетчик1 ).Адрес() , 0 );
КонецЕсли;
Иначе
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны().Элемент( Счетчик1 ).Выключить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Название() + " ' - Реле ввыключили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны().Элемент( Счетчик1 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны().Элемент( Счетчик1 ).ЕстьСостояние( 402 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Название() + " ' - Реле ввыключено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик2 ).Разделы().Элемент( Счетчик ).Зоны().Элемент( Счетчик1 ).Адрес() , 0 );
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ЯдроОрион.Шлейфы().Элемент( 3 ).ПоместитьВТег( 2 );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Конец зеркала " + АббревиатураОповещение + " ." , 0 );
Возврат( 0 );
Иначе
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Сканируем только разделы, входящие в Гр.Разделы с именем 'АСО.???'
Для Счетчик = 0 По ЯдроОрион.ГруппыРазделов().КоличествоЭлементов() - 1
Цикл
Если Лев( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Название() , ДлинаСтроки( АббревиатураОповещение ) ) == АббревиатураОповещение
Тогда
Для Счетчик1 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() - 1
Цикл
// вкл реле в этом разделе
// Сообщить( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() , 1 );
// Сообщить( "АСО." + Прав( ЯдроОрион.ГруппыРазделов().ПолучитьПоИндексу( ГрРазделСобытия ).Название() , ( ДлинаСтроки( ЯдроОрион.ГруппыРазделов().ПолучитьПоИндексу( ГрРазделСобытия ).Название() ) - 3 ) ) , 2 );
Если ( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() ) == ( АббревиатураОповещение + Прав( ЯдроОрион.ГруппыРазделов().ПолучитьПоИндексу( ГрРазделСобытия ).Название() , ( ДлинаСтроки( ЯдроОрион.ГруппыРазделов().ПолучитьПоИндексу( ГрРазделСобытия ).Название() ) - ВесАббр ) ) )
Тогда
// Сообщить(" Нашли ", 1 );
Для Счетчик2 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ТипЭлемента() == "ВЫХОД"
Тогда
Если ТактикаРелеПускОповещениеПриПожаре == "включить"
Тогда
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Включить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ЕстьСостояние( 401 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
КонецЕсли;
Иначе
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Выключить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле ввыключили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ЕстьСостояние( 402 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле ввыключено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// найдем Гр.раздел, в который входит данный раздел и прочитаем время задержки включения реле в Гр.разделе
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - " + АббревиатураОповещение + " - Ждем " + Строка( ЗадержкаРелеПускОповещениеПриПожареВГруппеТревоги ) + " секунд..." , 0 );
Для Счетчик2 = 1 По ЗадержкаРелеПускОповещениеПриПожареВГруппеТревоги
Цикл
Если ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).Тег() == 100 // Прерывание работы всех систем
Тогда
Сообщить( АббревиатураОповещение + " - Работа прервана.", 1 );
Возврат( 0 );
КонецЕсли;
Задержка( 1000 );
КонецЦикла;
Для Счетчик2 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() - 1
Цикл
Для Счетчик1 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Зоны().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Зоны().Элемент( Счетчик1 ).ТипЭлемента() == "ВЫХОД"
Тогда
Если ТактикаРелеПускОповещениеПриПожаре == "включить"
Тогда
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Зоны().Элемент( Счетчик1 ).Включить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - " + АббревиатураОповещение + " - Реле включили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Зоны().Элемент( Счетчик1 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Зоны().Элемент( Счетчик1 ).ЕстьСостояние( 401 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - " + АббревиатураОповещение + " - Реле включено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Зоны().Элемент( Счетчик1 ).Адрес() , 0 );
КонецЕсли;
Иначе
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Зоны().Элемент( Счетчик1 ).Выключить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - " + АббревиатураОповещение + " - Реле ввыключили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Зоны().Элемент( Счетчик1 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Зоны().Элемент( Счетчик1 ).ЕстьСостояние( 402 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - " + АббревиатураОповещение + " - Реле ввыключено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Зоны().Элемент( Счетчик1 ).Адрес() , 0 );
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
// найдем остальные Гр.разделы с реле пуска оповещения
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - " + АббревиатураОповещение + " - Ждем " + Строка( ЗадержкаРелеПускОповещениеПриПожареВГруппах ) + " секунд..." , 0 );
Для Счетчик2 = 1 По ЗадержкаРелеПускОповещениеПриПожареВГруппах
Цикл
Если ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).Тег() == 100 // Прерывание работы всех систем
Тогда
Сообщить( "" + АббревиатураОповещение + " - Работа прервана.", 1 );
Возврат( 0 );
КонецЕсли;
Задержка( 1000 );
КонецЦикла;
Для Счетчик = 0 По ЯдроОрион.ГруппыРазделов().КоличествоЭлементов() - 1
Цикл
Если Лев( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Название() , ДлинаСтроки( АббревиатураОповещение ) ) == АббревиатураОповещение
Тогда
Для Счетчик1 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() - 1
Цикл
Для Счетчик2 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ТипЭлемента() == "ВЫХОД"
Тогда
Если ТактикаРелеПускОповещениеПриПожаре == "включить"
Тогда
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Включить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ЕстьСостояние( 401 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
КонецЕсли;
Иначе
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Выключить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле ввыключили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ЕстьСостояние( 402 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле ввыключено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ЯдроОрион.Шлейфы().Элемент( 2 ).ПоместитьВТег( 2 );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Конец зеркала " + АббревиатураОповещение + " .", 0 );
КонецЕсли;
Возврат( 0 );
КонецЕсли;
...
...
...
такая же ситуацияpet-and писал(а):Я делал что-то похожее, но по-моему каким-то более сложным путем; оценю Ваш скрипт только завтра. Однако, засада в том, что я гарантированно не знаю, какое реле управляет каким клапаном, да и признаться, в каком состоянии шлейфы на клапане в штатном режиме, я также гарантированно не знаю. Дело в том, что положение клапана отображают КЦ АР8 (открыт/закрыт), поэтому парные КЦ будут на один клапан или нет - это вопрос вопросов.
Мне вот интересно, монтажники/проектировщики - они все такие?
Вернуться в «АРМ Орион Про версии до 1.20»
Сейчас этот раздел просматривают: 25 гостей
Боты: MailRu [Bot]