Сценарий для паролей

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

Непрочитанное сообщение #1 amtex » 26.07.2018, 13:03

Добрый день. Пожалуйста, помогите решить задачу. Есть несколько сотрудников и соответствующий им ряд паролей (пин-кодов), каждому сотруднику отдаем для снятия/взятия только его раздел (они соотносятся по порядку) . Вопрос: если заведено несколько одинаковых паролей у разных сотрудников, как написать сценарий снятия нескольких разделов при однократном вводе такого пин-кода. Орион воспринимает только ПОСЛЕДНИЙ из одинаковых паролей и снимает один раздел.. видимо, у меня неправильное понимание работы циклов
Общее построение базы для таких условий наверное не идеальное, но имеем то что имеем.. Сценарии раньше не писал, сильно не ругайте )
Заранее спасибо.
полурабочая заготовка получилась такая:

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

Сценарий
  Переменные
    Перем Счетчик1;
    Перем Счетчик2;
    Перем Разделы1;
    Перем Раздел1;
    Перем Событие1;
    Перем Пароли1;
    Перем Пароль1;
 
НачалоСценария

Событие1 = ПолучитьСобытие();

 Пароли1 = СоздатьОбъект("Пароли");
             Для Счетчик1 = 0 По Пароли1.КоличествоЭлементов() - 1 Цикл
             Пароль1 = Пароли1.Элемент( Счетчик1 );
             Если Пароль1.СтроковыйПароль() == Событие1.Пароль().СтроковыйПароль()   
          Тогда       
  Разделы1 = СоздатьОбъект("Разделы");
          Для Счетчик2 = 0 По Разделы1.Количество() - 1 Цикл
              Раздел1 = Разделы1.Элемент( Счетчик2 );
              Если Раздел1.Индекс() == Пароль1.Сотрудник().Индекс() Тогда
              Раздел1.Снять();
              КонецЕсли;
          КонецЦикла;

          КонецЕсли;
         КонецЦикла;
КонецСценария

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

Непрочитанное сообщение #2 google » 26.07.2018, 14:29

Что-то я не очень понимаю смысл вашей затеи: у каждого из ваших сотрудников свой код и свой раздел, которым он может управлять, при этом коды совпадают, и при этом вы хотите вводом одного кода снимать сразу все разделы, которыми может управлять такой код, даже если он у нескольких сотрудников одинаковый.
Так заведите тогда один общий код с соответствующим УД и раздайте его нуждающимся.

А по сценарию не понятно: как вы хотите проводить выборку, сравнивая индексы разделов и сотрудников?

amtex
Автор темы
amtex
Автор темы
Репутация: 0
Сообщения: 5
Зарегистрирован: 26.07.2018
С нами: 3 месяца 24 дня
Профессия: проектировщик

Непрочитанное сообщение #3 amtex » 26.07.2018, 17:38

Смысл затеи только тот что написан: снимать несколько разделов при совпадающих паролях, то есть без создания УД.
Ошибся, раздел-сотрудник сравнивать хочу по ИД. Но это дело десятое.. Не понятно, как провести выборку сценарием хотя бы двух одинаковых паролей..

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

Непрочитанное сообщение #4 pet-and » 27.07.2018, 08:02

Что-то я не пойму. Где пароли должны совпадать?

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

Непрочитанное сообщение #5 google » 27.07.2018, 09:19

pet-and писал(а):Что-то я не пойму. Где пароли должны совпадать?
Я вот тоже теперь не понял - в базе ведь одинаковых пин-кодов быть не может :sh_ok:

amtex
Автор темы
amtex
Автор темы
Репутация: 0
Сообщения: 5
Зарегистрирован: 26.07.2018
С нами: 3 месяца 24 дня
Профессия: проектировщик

Непрочитанное сообщение #6 amtex » 30.07.2018, 09:46

В базе могут быть одинаковые пароли. Более того, в версии 20.2 их можно беспрепятственно создавать в АБД..

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

Непрочитанное сообщение #7 google » 30.07.2018, 13:41

Может быть и так, 1.20 сейчас нет под рукой, чтобы проверить. Но версии 1.10 и 1.12 не дают создавать одинаковые пароли и пин-коды.

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

Непрочитанное сообщение #8 pet-and » 30.07.2018, 17:40

Интересно, а как АРМ тогда узнаёт, кто же с охранкой игрался? Ведь пин, пароль, карта - уникальный идентификатор определённого пользователя, с которого потом и спрашивать.
И всё равно, неясно, где должны совпадать пин-коды?

amtex
Автор темы
amtex
Автор темы
Репутация: 0
Сообщения: 5
Зарегистрирован: 26.07.2018
С нами: 3 месяца 24 дня
Профессия: проектировщик

Непрочитанное сообщение #9 amtex » 30.07.2018, 17:55

Пока что АРМ думает что с охранкой игрался последний (по порядку в SQLтаблице) обладающий данным пином.. Пинкоды не "должны", а уже совпадают у 1+х сотрудников, именно их и хочу вытащить операторами орион-скрипта..

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

Непрочитанное сообщение #10 google » 31.07.2018, 10:00

MadHacker писал(а):Да просто баг это. В следующих релизах будет исправлен. Тем кто успел задать одинаковые коды будет весело...
Оказывается это всего лишь просто обычный баг, не более. Ладно бы там была бы ошибка орфографическая (хотя таковых тоже достаточно) или ещё что, что более-менее можно пережить. Но блйа, задвоенные идентификаторы это же мега косяк, при следующем обновлении могут встать целые заводы, а всё из-за какого-то программиста, который забыл сделать проверку на уникальность идентификаторов. Как, скажите мне, ну как можно выпускать такой сырой продукт на рынок. И выпустили его не вчера, уже вон и патч имеется. У вас ПО вообще что-ли не проходит стадию тестирования перед выпуском в свет?
Зачем выпускать очередную версию этого, простите, недопродукта, на рынок, если вы толком не довели до ума предыдущую версию? Зачем выпустили 1.20, когда 1.12 до сих пор содержит ошибки?
Жжжесть...

Добавлено спустя 11 минут 29 секунд:
amtex, наверное как-то так:

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

Пароли1 = СоздатьОбъект("Пароли");
Для Счетчик1 = 0 По Пароли1.КоличествоЭлементов() - 1 Цикл
   Пароль1 = Пароли1.Текущий();
   Если Пароль1.СтроковыйПароль() == "бла-бла-бла" Тогда
      Счетчик2 = Счетчик2 + 1;
   КонецЕсли;
   Пароли1.Следующий();
КонецЦикла;


В переменной Счетчик2 будет содержатся кол-во паролей "бла-бла-бла"


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

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

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

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

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