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

FORUM_NAME: АРМ Орион Про версии до 1.20
Описание: АРМ "Орион Про" — пакет программного обеспечения для аппаратно-программного комплекса ИСО "Орион", на котором реализуются системы охранной сигнализации, контроля и управления доступом, охранного видеонаблюдения, автоматика противопожарных систем, сопряженные с инженерными системами объектов.
Справочная информация, руководства для АРМ Орион Про версии до 1.20
Модератор: Модераторы
google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 31
Репутация: 27
Сообщения: 1178
Зарегистрирован: 11.06.2015
С нами: 1 год 5 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #21 google » 14.10.2015, 13:44

XAMMEP писал(а):
google писал(а):Если создавать четыре сценария, то их как-то надо будет одновременно все привязать к событию проход турникета, так что скорее всего это будет один сценарий. Либо нужен сценарий, который будет запускать другие сценарии по определенному условию.
Вообщем чуть попозже освобожусь попробую что-нибудь замутить.
С этим проблем не возникнет, пусть даже с 4... В настройках доступа это все настроить не проблема...

Значит сценарий привязывается к определенному уровню доступа (или к каждому сотруднику, который может управлять разделами).

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 31
Репутация: 27
Сообщения: 1178
Зарегистрирован: 11.06.2015
С нами: 1 год 5 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #22 google » 14.10.2015, 13:48

А мне сможет кто-нибудь объяснить, что всё-таки значит Событие1 = ПолучитьСобытие() в сценариях?

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

Непрочитанное сообщение #23 pet-and » 14.10.2015, 14:23

google писал(а):А мне сможет кто-нибудь объяснить, что всё-таки значит Событие1 = ПолучитьСобытие() в сценариях?
В результате Вы получите наименование события, по которому стартовал сценарий.

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

Непрочитанное сообщение #24 XAMMEP » 14.10.2015, 15:10

google писал(а):Значит сценарий привязывается к определенному уровню доступа (или к каждому сотруднику, который может управлять разделами).
и к уровню доступа, и к сотруднику
Вложения
Новый точечный рисунок (4).bmp
Новый точечный рисунок (4).bmp

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 31
Репутация: 27
Сообщения: 1178
Зарегистрирован: 11.06.2015
С нами: 1 год 5 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #25 google » 14.10.2015, 16:17

pet-and писал(а):
google писал(а):А мне сможет кто-нибудь объяснить, что всё-таки значит Событие1 = ПолучитьСобытие() в сценариях?
В результате Вы получите наименование события, по которому стартовал сценарий.

В принципе так и думал, только в рук-ве по языку не нашел описание.

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 31
Репутация: 27
Сообщения: 1178
Зарегистрирован: 11.06.2015
С нами: 1 год 5 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #26 google » 14.10.2015, 16:18

XAMMEP писал(а):
google писал(а):Значит сценарий привязывается к определенному уровню доступа (или к каждому сотруднику, который может управлять разделами).
и к уровню доступа, и к сотруднику

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

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

Непрочитанное сообщение #27 XAMMEP » 17.10.2015, 23:35

Для снятия подходят и сценарии с шаблона, а вот для взятия не получается придумать...
говорила же МАМА, учись...

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

Непрочитанное сообщение #28 pet-and » 18.10.2015, 08:51

Действительно, проверка на ПустоеЗначение не имеет смысла, когда выборка осуществляется по определенному признаку, индекс например. Другое дело, когда значение переменной вычисляется и для того, чтобы не получить бесконечный цикл или ещё какую-нибудь дрянь, которая завалит ядро опроса и вводится эта проверка.
У Вас же шаблонный вариант сценария, т.е. простой как лом. Поэтому и имеете в тексте много всего лишнего.

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

Непрочитанное сообщение #29 XAMMEP » 18.10.2015, 11:03

DruG писал(а):и в чём проблемы? для рабочих:
Спойлер
Сценарий
Переменные
Перем Событие1;
Перем РабочееМесто1;
Перем РабочиеМеста1;
Перем Компьютеры1;
Перем Компьютер1;
Перем Раздел1;
Перем Раздел2;
Перем Разделы1;
Перем ЗонаДоступа1;
Перем ЗоныДоступа1;
НачалоСценария


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

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


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

в сценариях надо ещё выставить актуальные ИД Уровней и ГруппДоступа, но в целом должно правильно работать))

для знатоков: мне вот интересно, а для чего идут эти проверки на ПустоеЗначение? если мы чётко указываем нужные разделы, без перебора всех возможных, то и такие проверки бессмысленны и можно лихо уменьшить размер сценария

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

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

Непрочитанное сообщение #30 XAMMEP » 18.10.2015, 18:23

DruG писал(а):ну скобочек в копипасте не было :smu:sche_nie:
вот оно, ошибочное место:
Раздел2.Состояние () == "ВЗЯТ"
Точно!!! Исчезла ошибка!!! Завтра затестю... :wo_rk:
Ты настоящий DruG :co_ol:

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

Непрочитанное сообщение #31 XAMMEP » 19.10.2015, 13:10

DruG писал(а):
XAMMEP писал(а):Ты настоящий DruG :co_ol:
я знаю :smu:sche_nie: :-)

жаль, что мне самому такой сценарий не подходит - турникетов нету, двери в рабочее время открыты, контролировать первого/последнего по подразделениям возможности никакой.

2XAMMEP и всё таки советую по-изучать этот язык, если не операторы то хотя бы логику его работы. Скорее всего те два сценария можно уменьшить раза в 2-3, проверить не на чем, но что-то подсказывает, что там достаточно оставить всего по паре условий.

Логика понятна, как никак блок-схемы рисовал, а вот язык программирования не дался...
Вот чет, не пошли скрипты, не выполняются :ny_tik: :ne_vi_del:
Вложения
Новый точечный рисунок (4).bmp

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

Непрочитанное сообщение #32 XAMMEP » 19.10.2015, 15:00

DruG писал(а):
XAMMEP писал(а):Вот чет, не пошли скрипты, не выполняются :ny_tik: :ne_vi_del:
а окончательный вариант сценариев увидеть можно?
Кабинет Начальника (119)

Спойлер

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

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


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


Кабинет Рабочие (118)

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


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

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 31
Репутация: 27
Сообщения: 1178
Зарегистрирован: 11.06.2015
С нами: 1 год 5 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #33 google » 19.10.2015, 15:16

А ИД разделов, зон доступа правильные стоят? Где вообще можно посмотреть номера ИД объектов системы?

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

Непрочитанное сообщение #34 XAMMEP » 19.10.2015, 15:31

google писал(а):А ИД разделов, зон доступа правильные стоят?
Правильно (думаю), брал с сценариев на снятие...
google писал(а):Где вообще можно посмотреть номера ИД объектов системы?
Тоже загадка

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 31
Репутация: 27
Сообщения: 1178
Зарегистрирован: 11.06.2015
С нами: 1 год 5 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #35 google » 19.10.2015, 15:40

А вот это
Если (Событие1.Событие().ИД()==32) Тогда
что за событие?
Может дело в нём?

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

Непрочитанное сообщение #36 XAMMEP » 19.10.2015, 15:49

google писал(а):А вот это
Если (Событие1.Событие().ИД()==32) Тогда
что за событие?
Может дело в нём?
Это событие появляется в "мониторе" в строке Событие" и свидетельствует "Запуск сценария управления", как я понял

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 31
Репутация: 27
Сообщения: 1178
Зарегистрирован: 11.06.2015
С нами: 1 год 5 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #37 google » 19.10.2015, 15:51

Смотри, если сократить сценарии до минимума, убрав всё лишнее, включая получение непонятного (для меня) события, получится вот что:
Спойлер
Кабинет начальника (119)

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


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

Спойлер
Кабинет рабочие (118)

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


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

Попробовать привязать эти сценарии к событию Проход нужной зоны доступа (например Предприятие) по признаку Уровня доступа. Я так понимаю у начальника свой уровень доступа, а у рабочих свой уровень доступа один на всех.

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

Непрочитанное сообщение #38 XAMMEP » 19.10.2015, 16:06

google писал(а):Смотри, если сократить сценарии до минимума, убрав всё лишнее, включая получение непонятного (для меня) события, получится вот что:
Спойлер
Кабинет начальника (119)

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


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

Спойлер
Кабинет рабочие (118)

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


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

Попробовать привязать эти сценарии к событию Проход нужной зоны доступа (например Предприятие) по признаку Уровня доступа.
Все это было сделано!!!
google писал(а): Я так понимаю у начальника свой уровень доступа, а у рабочих свой уровень доступа один на всех.
ЗАРАБОТАЛО!!!!!! :bra_vo: :bra_vo: :bra_vo:
Последний раз редактировалось XAMMEP 19.10.2015, 16:14, всего редактировалось 5 раз.

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

Непрочитанное сообщение #39 XAMMEP » 19.10.2015, 16:16

DruG писал(а):хех, видать шаблонный сценарий заработал бы только при наступлении нужного события, а не при запуске сценария вручную ;) после чистки от хлама - заработал в любом случае :-)
Не вручную запускалось, на проктике ...
Вот тока при проходе начальника, раздел 118, еще раз снимаеться...
Проверку бы засунуть...
Пиво с меня за все....

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 31
Репутация: 27
Сообщения: 1178
Зарегистрирован: 11.06.2015
С нами: 1 год 5 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #40 google » 19.10.2015, 16:22

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


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

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

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

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

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