А как быть, если используется несколько уровней?
https://drive.google.com/file/d/1v8F...usp=drive_link
А как быть, если используется несколько уровней?
https://drive.google.com/file/d/1v8F...usp=drive_link
А именно?!
Разрешить доступ в поле ввода только при открытии всех уровней (или определенных).
Как это сделать без макросов?
Опять же танец с бубном.
ФО:
Если не будет хватать хоть одного уровня, то разница будет > 0.Код:Копировать PSB60 -> PSW256.0 Копировать PSB61 -> PSW256.1 Копировать PSB62 -> PSW256.2 Копировать PSB63 -> PSW256.3 Копировать PSB64 -> PSW256.4 Копировать PSB65 -> PSW256.5 Копировать PSB66 -> PSW256.6 Копировать PSB67 -> PSW256.7 Копировать PSB68 -> PSW256.8 Инвертировать PSW256.0 Инвертировать PSW256.1 Инвертировать PSW256.2 Инвертировать PSW256.3 Инвертировать PSW256.4 Инвертировать PSW256.5 Инвертировать PSW256.6 Инвертировать PSW256.7 Инвертировать PSW256.8 Мат.операция PSW256 = 511 - PSW256 (511 dec = 111111111 bin - маска затребованных уровней доступа, если все включены, то результат будет 0) Мат.операция PSW256 = PSW256 / 2 Мат.операция PSW256 = PSW256 / 2 Мат.операция PSW256 = PSW256 / 2 Мат.операция PSW256 = PSW256 / 2 Мат.операция PSW256 = PSW256 / 2 Мат.операция PSW256 = PSW256 / 2 Мат.операция PSW256 = PSW256 / 2 Мат.операция PSW256 = PSW256 / 2
Фишка в том что, при делении на 2 (8 раз) любое число > 0 вырождается в 1, т.е. 1/2 = 1
Соответственно PSW256.0 становится "Битом видимости", т.е. признаком того, что не все требуемые уровни открыты.
Последний раз редактировалось EFrol; 01.03.2025 в 21:25.
спасибо, попробую
Результат будет не однозначнымМат.операция PSW256 = 511 - PSW256 (511 dec = 111111111 bin - маска затребованных уровней доступа, если все включены, то результат будет 0)
Мат.операция PSW256 = PSW256 / 2
Мат.операция PSW256 = PSW256 / 2
Мат.операция PSW256 = PSW256 / 2
Мат.операция PSW256 = PSW256 / 2
Мат.операция PSW256 = PSW256 / 2
Мат.операция PSW256 = PSW256 / 2
Мат.операция PSW256 = PSW256 / 2
Мат.операция PSW256 = PSW256 / 2
так как
последнее утверждение весьма опрометчиво. Наверно Вы это проверяли в эмуляции. Если загрузите свой код в панель, то окажется, что 1/2 = 0Фишка в том что, при делении на 2 (8 раз) любое число > 0 вырождается в 1, т.е. 1/2 = 1
Т.е. я утверждаю, что в эмуляции целочисленное деление выполняется не правильно - остаток от деления не отбрасывается, вместо этого происходит округление результата и 1/2 получается равны 1.
А вот в живой панели тоже самое целочисленное деление выполняется правильно - остаток от деления отбрасывается и 1/2 получается равным 0.
Последний раз редактировалось petera; 02.03.2025 в 10:03.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
А вот такая ФО прокатит?
Код:Копировать PSB60 -> PSW256.0 Копировать PSB61 -> PSW256.1 Копировать PSB62 -> PSW256.2 Копировать PSB63 -> PSW256.3 Копировать PSB64 -> PSW256.4 Копировать PSB65 -> PSW256.5 Копировать PSB66 -> PSW256.6 Копировать PSB67 -> PSW256.7 Копировать PSB68 -> PSW256.8 Инвертировать PSW256.0 Инвертировать PSW256.1 Инвертировать PSW256.2 Инвертировать PSW256.3 Инвертировать PSW256.4 Инвертировать PSW256.5 Инвертировать PSW256.6 Инвертировать PSW256.7 Инвертировать PSW256.8 Мат.операция PSW256 = PSW256 + 0 включить макс значение = 1 (Если PSW256 > 0, то результат не превысит 1)
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Попробовал. И не понял сути всего этого. `PSW256` равен единице, если пройдена авторизация. Как это использовать?
Допустим, в проекте заданы 9 уровней пароля. Есть контролы доступные для первого уровня, есть контролы доступные для второго уровня, и т.д. до девятого уровня.
Наверно, надо сделать так, что бы
при авторизации первого уровня `PSW256` был `111111110 bin`
при авторизации второго уровня `PSW256` был `111111100 bin`
...
при авторизации восьмого уровня `PSW256` был `100000000 bin`
при авторизации девятого уровня `PSW256` был `000000000 bin`
и тогда `PSW256` можно будет использовать для битов видимости в кнопках вызова окна с ошибкой
Последний раз редактировалось monteg; 02.03.2025 в 13:56.
Теперь мой способ с использованием ТОЛЬКО СТАНДАРТНЫХ средств конфигуратора
НИКАКИХ ГМ!!!
И так имеем
Захват-11.png
1. Три Ввода данных с паролями 1, 2 и 3 уровней
PSW300
PSW301
PSW302
2. Вашу Ф.область с копированием/ инвертированием бит оставляю как есть
Захват-12.png
3. Создаем три дисплея для PSW300, 301, 302 с оформлением и размерами таким же как и у цифровых вводов
Скрытый текст:
4. сохраняем их в библиотеке материалов и удаляем дисплеи с экрана, больше они не нужны
Скрытый текст:
5. Берем 3 кнопки открытия окна (окно с аварией уже есть - 61001)
Делаем размеры кнопок равными размерам цифровых вводов. Помещаем кнопки поверх цифровых вводов
В качестве битов видимости для них - PSB300, 301, 302
Скрытый текст:
6.А как же дисплеи сохраненные в библиотеке?
Мы их используем в оформлении внешнего вида кнопок !!!
Скрытый текст:
Теперь внешний вид кнопки совпадает с видом цифрового ввода и даже на кнопке отображаются значения регистров!!!
Скрытый текст:
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg