Красивая временная блокировка (7.7+Formex)

Просто красивая блокировка сеанса

Можно просто добавить на панель инструментов или

заменить стандартную блокировку с помощью //infostart.ru/projects/602/

 

89 Comments

  1. sys_adminus

    это конечно прикольная штука- но ввожу пароль, а он не впускает обратно 🙁

    Reply
  2. Noy

    (1) Странно, я тестировал на 20 пользователях — вроде все ОК.

    Reply
  3. sys_adminus

    к стати у меня терминал — щас покапаюсь

    Reply
  4. artbear

    Красиво.

    Reply
  5. vip

    Молодец.

    Reply
  6. Noy

    (1,3) Как вариант — обработку можно запустить со «своим» паролем — передать в Форма.Параметр строку. (Например ОткрытьФормуМодально(«Отчет»,»777″,»C:… .fn_lock.ert») — пароль будет «777» ).

    Reply
  7. ded00786

    Симпатишно

    Reply
  8. Bezborodoff

    Красиво!

    Reply
  9. kery

    А я красоты не увидела.

    {C:2009IK2009FN_LOCK.ERT(57)}: Неудачная попытка создания объекта (Окна)

    Reply
  10. andrewalexk

    🙂

    ..а у мадемуазель формекс стоит?

    Reply
  11. Noy

    (9) Скачайте http://www.dorex.ru/files/?formex_t.zip Затем из архива достаньте файлик FormEx.dll и положите его в каталог с обработкой…

    Reply
  12. kiyaas

    Здравствуйте!! Я начинающий 1с программсит! не подскжете как это добавиьт????

    Reply
  13. Noy

    (12) Зайти в конфигуратор — Открыть Конфигурацию — Интерфейсы — нужный интерфес — панели инструментов — там добавляешь пункт «Отчеты — Отчеты.ВнешнийОткрыть» на вкладке дополнительно указываешь путь к файлу (лучше положить его в ExtForms), назначеашь иконку/комбинацию клавиш

    Reply
  14. kiyaas

    (13)

    Окна=СоздатьОбъект(«Окна»);

    {D:NSS-OFFICEEXTFORMSFN_LOCK.ERT(57)}: Неудачная попытка создания объекта (Окна)

    Reply
  15. Noy

    (14) Читай (9) + (11)

    Reply
  16. Noy

    Добавил архив вместе с компонентой Альфа и обработкой.

    Для тех, у кого еще нет єтой прекрасной компоненты

    (14) и (9) Это для вас…

    Reply
  17. Джиневра

    Вау 🙂 Какая красивая задумка.

    Reply
  18. kiyaas

    все равно такая же ошибка!!!

    Reply
  19. pata

    Красиво

    Reply
  20. Noy

    (19) Возьми обработку из архива (!!!) и длл-ку и все положи в ExtForms

    Reply
  21. ТипТопыч

    dahanago попробуй капслок нажать и большими символами набери пароль.

    Reply
  22. kery

    (21) Выражаю признательность за донесение искусства 1С до всяких, не особо умелых пользователей. Мерси.

    Reply
  23. chsm

    Вхожу в 1С без пароля, заставку каким паролем убрать?

    Reply
  24. Душелов

    (24) Отправь SMS на короткий номер ХХХХ со словом пароль и в ответ пришлют смс с паролем снятия блокировки. :))

    Reply
  25. Noy

    (25) 🙂 🙂 🙂

    (24) по-логике пустым…

    но там немного мутно все с пользователями, у которых пароль «неопределён»…

    я думал что поборол проблемку, оказывается не совсем.

    Reply
  26. sarius

    (22) Помогло 🙂

    Reply
  27. Андроид

    У меня ошибка такая.. У меня не прописан католог пользователя..

    FN_LOCK.ERT(76)}: Поле агрегатного объекта не обнаружено (ПолучитьХэшПароляПользователя)

    ХешПравильногоПароля=Сервис.ПолучитьХэшПароляПользователя(ИмяПользователя(), КаталогИБ());

    Reply
  28. АЛьФ

    2(28) Наверное, надо обновить FormEx.

    Reply
  29. sarius

    Кстати, насчет пароля — может взять пароль в ВРЕГ() в самой проверке пароля?

    Reply
  30. Noy

    (30) А есть проблемы с паролем? У меня все пароли цифровые — там проблем нет.

    Если есть ошибка — пишите — я поправлю.

    Reply
  31. sarius

    (31) Да, такая проблема есть — ввод большими буквами ее решает. У себя в обработке поднял регистр — проблемы нет.

    Reply
  32. Noy

    (32) Исправил, обновил.

    Reply
  33. demaoleg

    В ExtForms базы — создать папку FormEx.grp вложить оба файла (ert и dll) все работает на ура.

    Reply
  34. vip

    (34) А без этого не работает? ;))

    Reply
  35. napala@

    Красота какая! даже не хочется включать обратно ))

    Reply
  36. simply1

    Красиво. Только размеры нужно подправить. Красота должна быть красивой до конца. :))

    Идея — супер! Автору — уважуха и респект!

    Провел несколько экспериментов и сделал для себя открытие. Оказывается, пароль в 1С 7.7 регистронезависимый! :((((

    Столько лет я верил что регистр имеет значение …

    Исходя из этого, при проверке можно оставить только переменные: <ХешПравильногоПароля> и <ХешПароля2>. И условие упростить:

    Если ХешПравильногоПароля=ХешПароля2 Тогда

    … снять блокировку …

    КонецЕсли;

    Reply
  37. Noy

    (37) Размеры как раз и подбирал что бы покрасивше (но это уже дело вкуса).

    по поводу регистронезависимого пароля — для меня тоже открытие (sarius подсказал), но так как я лично тестов не проводил, то просто добавил еще одну проверку.

    Reply
  38. simply1

    Список контролируемых клавиш — хороший ход.

    Но не понятно, зачем он здесь?

    Разве не достаточно перехватывать только клавишу <Esc>?

    Reply
  39. Noy

    (39) Нет, нужно перехватывать еще и хоткеи…

    У меня используется обработка http://infostart.ru/projects/3800/ — так если вызывать с помощью хоткея какой-нибудь журнал — то он открывается под «экраном блокировки», что есть не очень-то красиво…

    то же самое относиться к хоткеям на кнопках и пунктах меню…

    Reply
  40. Yashazz

    Красиво, но идейно не вполне верно — отсутствующий сотрудник может оставить на экране важные сведения, каковые всё равно видно, а это уязвимость. Лучше, если занавеска будет совсем сплошная, чтоб изображение рабочего окна 1С стало нечитабельным.

    Reply
  41. Noy

    (41) там легко поправить в коде ищи строки:

    Для х=1 по 220 Цикл

    х=х+14;

    Форм.Прозрачность=х;

    КонецЦикла;

    Меняй на

    Для х=1 по 250 Цикл

    х=х+14;

    Форм.Прозрачность=х;

    КонецЦикла;

    Форм.Прозрачность=255;

    P.S. у нас в компании важные данные вообще запрещено оставлять на экране даже при блокировке, в остальных случаях — наоборот присутствует определенная открытость — сотрудник временно отошел, но он работает и даже видно над чем.

    Reply
  42. simply1

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

    Но уж сильно большой список нужных клавиш у тебя получился.

    Я бы пошел по принципу «чего меньше». Меньше перечислений нужных или НЕ нужных. Проследил бы закономерность всех хоткеев, например, они все используют сочетание Контр+Шифт, или везде используются функциональные (F?) и т.д.

    Но не подумай что я тебя учу? Тем более, что обработка уже написана и работает!

    Хочу отметить — написана хорошо даже для не опытных или начинающих — только скачай и запускай! Это признак профессионализма!

    Reply
  43. simply1

    (42) — поддерживаю полностью!

    А я изменил прозрачность до 190.

    Reply
  44. Noy

    (43) мерси за коплимант! (с) За двома Зайцами

    🙂

    А по сути я и пошел по принципу «чего меньше» — просто у меня уже есть несколько обработок, которые содержат в себе списки «отфильтрованных» клавиш и я банально сделал копи-паст 😉

    Reply
  45. simply1

    Предлагаю при включении блокировки в цикл вставить задержку на 500 миллисекунд. Или другое число, кому как нравится 🙂

    «…

    Для х=1 по 190 Цикл

    х=х+14;

    Форм.Прозрачность=х;

    ВыполнитьЗадержку(500);

    КонецЦикла;

    …»

    Когда экран затемняется постепенно, то очень красиво получается.

    А для разблокировки задержка не нужна. Работать надо ведь быстро, правильно? 🙂

    Вот код функции:

    //————————————————

    Функция ВыполнитьЗадержку(мс=1000) Экспорт

    // Устанавливает задержку в указанных миллисекундах

    Попытка

    TextScript=»

    |Function pause(ms)

    | WScript.Sleep ms

    |End Function

    |»;

    ScrptCtrl=CreateObject(«MSScriptControl.ScriptControl»);

    ScrptCtrl.Language = «vbscript»;

    ScrptCtrl.AddCode(TextScript);

    ScrptCtrl.Run(«pause»,1000);

    ScrptCtrl=Пусто;

    Возврат 1;

    Исключение

    Возврат 0;

    КонецПопытки;

    КонецФункции // ВыполнитьЗадержку

    Reply
  46. Noy

    (46) Хорошая идея, только сильно зависит от скорости компа. Например у меня и так плавно затухает…

    Reply
  47. simply1

    (46) что-то в цикле задержка не срабатывает … 🙁

    Надо еще покопаться.

    Reply
  48. Noy

    (48) Попробуй «обычную» задержку:

    ТекВремя=ТекущееВремя(); Пока ТекВремя=ТекущееВремя() Цикл Состояние («Пауза»);КонецЦикла;

    Reply
  49. .S.e.R.e.G.a.

    ЗАЧЕТ !!!! плюс !

    Reply
  50. simply1

    (46) функция не рабочая, прошу никого не копировать. Объект WScript с 1С-ом не подружен. Подружу, перевыложу.

    (49) — задержка на 1 секунду. Это слишком много, миллисекунд 100 — с головой.

    Reply
  51. antz

    Красата!

    Reply
  52. Noy
  53. GSoft

    а у меня сделано так

    -==Глобальный модуль==-

    //ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ

    Перем ЕстьАктивность; //нужна для определения активности пользователя

    //глобальная процедура внешней компоненты FormEx

    //__________________________________________________________­___________________

    Процедура ПриНажатииКнопкиКлавиатуры(Конт, КодКл, кнАльт, кнШифт, кнКонтрол, Символ)

    ЕстьАктивность = 1;

    КонецПроцедуры

    //__________________________________________________________­___________________

    Процедура ЗаблокироватьПрограмму()

    //проверка активности пользователя

    //в конце каждой минуты флаг активности выставляем в ноль

    //если за минуту активность была то время неактивности обнуляем

    //иначе время неактивности накапливаем

    //как только время неактивности достигает значения переменной

    //КолвоМинутДоБлокировки — блокируем программу.

    Если ПустоеЗначение(глПользователь.КолвоМинутДоБлокировки) = 1 Тогда

    Возврат;

    КонецЕсли;

    Если ЕстьАктивность = 0 Тогда

    ВремяНеактивностиПользователя = 1 + ВремяНеактивностиПользователя;

    Иначе

    ВремяНеактивностиПользователя = 1;

    КонецЕсли;

    Если ВремяНеактивностиПользователя = глПользователь.КолвоМинутДоБлокировки Тогда //КолвоМинутДоБлокировки Тогда

    Если глПрограммаЗаблокирована = 0 Тогда

    глПрограммаЗаблокирована = 1;

    ОткрытьФормуМодально(«Обработка.ПроверкаПароля», «Блокировка»);

    КонецЕсли;

    КонецЕсли;

    ЕстьАктивность = 0;

    КонецПроцедуры // ЗаблокироватьПрограмму

    //__________________________________________________________­___________________

    Процедура парамОбработкаОжидания()

    ЗаблокироватьПрограмму();

    КонецПроцедуры // парамОбработкаОжидания

    //__________________________________________________________­___________________

    Процедура ПриНачалеРаботыСистемы()

    Если ЗагрузитьВнешниеКомпоненты() = 0 Тогда

    СтатусВозврата(0);

    Возврат;

    КонецЕсли;

    Если глПриНачалеРаботыСистемы() <> 1 Тогда

    СтатусВозврата(0);

    Возврат;

    КонецЕсли;

    //вызов процедуры парамОбработкаОжидания каждые 60 секунд (60000мС)

    глСервис.ОбработкаОжидания(«парамОбработкаОжидания», 60000);

    КонецПроцедуры // ПриНачалеРаботыСистемы

    Reply
  54. Noy

    (54) Завидую…

    а вот у меня есть несколько пользователей, работающих исключительно с мышей…

    А каждый чих мышки ловить — накладно выходит.

    Reply
  55. GSoft

    (55)

    повесь на обработку нажатия кнопки мыши. В формексе есть на правую и левую, сингл и дабл клик

    Reply
  56. JohnyDeath

    (54,55) Может вам 1С++ поможет:

    http://www.1cpp.ru/docum/icpp/html/Informer.html#getidletimeofsystem

    ?

    Reply
  57. artbear

    (54) Ага, решение из (57) я делал как раз для подобных задач

    Reply
  58. simply1

    (46) и (51) — туфта все это!

    Есть метод Sleep у объекта «Система» внешней компоненты 1С++.

    При мощном ПК затухание смотрится красиво только при задержке 12 миллисекунд, не больше.

    Reply
  59. simply1

    (57) — мы с тобой в обоих форумах одновременно! :)))

    Reply
  60. Abadonna

    54.>ЗаблокироватьПрограмму();

    при нективности. Посмешил. У меня стоит ЗавершитьРаботуСистемыНах() ибо не фиг там неактивному торчать. И бокировать у менеджера только 1С не вижу смысла.

    Боликровать надо комп, решается скрин-сейвером с паролем. А тех манагеров, у которых он не стоит, у нас на первый раз предупреждают, на второй — выгоняют

    Reply
  61. GSoft

    и такое есть:

    у каждого пользователя в настройках есть реквизит — колво минут до блокировки,но это значение не может превышать значение константы, достигнув которого система пользователя выкидывает

    Reply
  62. GSoft

    собстно там просто надо в процедуре ЗаблокироватьПрограмму() убрать первое условие вначале и добавить добавить условие на проверку времени неактивности со значением константы

    //__________________________________________________________­___________________

    Процедура ЗаблокироватьПрограмму()

    //проверка активности пользователя

    //в конце каждой минуты флаг активности выставляем в ноль

    //если за минуту активность была то время неактивности обнуляем

    //иначе время неактивности накапливаем

    //как только время неактивности достигает значения переменной

    //КолвоМинутДоБлокировки — блокируем программу.

    Если ЕстьАктивность = 0 Тогда

    ВремяНеактивностиПользователя = 1 + ВремяНеактивностиПользователя;

    Иначе

    ВремяНеактивностиПользователя = 1;

    КонецЕсли;

    Если ВремяНеактивностиПользователя = глПользователь.КолвоМинутДоБлокировки Тогда

    Если глПрограммаЗаблокирована = 0 Тогда

    глПрограммаЗаблокирована = 1;

    ОткрытьФормуМодально(«Обработка.ПроверкаПароля», «Блокировка»);

    КонецЕсли;

    КонецЕсли;

    Если ВремяНеактивностиПользователя > Константа.КолвоМинутДоВыходаПриНеактивности Тогда

    ЗавершитьРаботуСистемы(0);

    КонецЕсли;

    ЕстьАктивность = 0;

    КонецПроцедуры // ЗаблокироватьПрограмму

    Reply
  63. Paully

    Меня так и не пускает обратно:

    ХешПравильногоПароля=Сервис.ПолучитьХэшПароляПользователя(ИмяПользователя(), КаталогИБ());

    {C:DOCUMENTS AND SETTINGSNEVASILEVSKIYМОИ ДОКУМЕНТЫ1С БАЗЫBASE КУРГАНBASEEXTFORMSFORMEX.GRPFN_LOCK.ERT(106)}: Поле агрегатного объекта не обнаружено (Полу

    И чего не так? Скачал отдельно длл-ку, с офф.сайта — ни к черту. Все описанные рекомендации — делал.

    Reply
  64. Noy

    (64) У тебя загружается старая версия длл. Найди по поиску formex.dll на всех локальных дисках и все длл замени на новую версию.

    Reply
  65. Paully

    не помогло… че делать — как быть?

    Reply
  66. Noy

    в 1С — Помощь — О программе — Закладка Formex — там есть путь к внешней компоненте…

    в твоем случае должен быть

    C:DOCUMENTS AND SETTINGSNEVASILEVSKIYМОИ ДОКУМЕНТЫ1С БАЗЫBASE КУРГАНBASEEXTFORMSFORMEX.GRPFORMEX.DLL

    Reply
  67. GSoft

    а путь покороче

    Reply
  68. Paully

    да, все так и есть — по поиску же ВСЕХ локальных дисков — все нашел и позаменял…

    Reply
  69. Paully

    но ничего не изменяется…

    Reply
  70. Paully

    (67)

    Не нахожу таковой закладки. 1C++ — есть. На этом — все.

    Reply
  71. Noy

    (71) Значит формекс не обновлен. Запусти на «чистой» машине!

    Reply
  72. Paully

    (72)

    Ничего не понимаю — что значит, что я не нахожу вкладки с ФормЕкс? И, я все скачивал с твоего топика. Зачем еще что-то обновлять?

    Reply
  73. Noy

    (73) разберись со своими внешними компонентами. У тебя либо старый формекс подгружается, либо старый 1С++ (тот который содержит в себе формекс)

    Reply
  74. Paully

    Все нормально — обновил 1cpp.dll на 2.5.0.7-версию. Спасибо!

    Reply
  75. Noy

    (75) Тут принято оценивать обработку: «+» или «-«…

    а то куча усилий по запуску и ноль реакции — непонятно.

    Reply
  76. vip

    (75) Обнови лучше на 3.0.1.22

    Reply
  77. Paully

    (77) Где взять?

    Reply
  78. vip

    (78) http://www.1cpp.ru/images/3/32/Icpp-latest.rar

    Опасаться не надо. Нормальная, стабильная сборка.

    И возможностей гораздо больше, чем в 2.5

    2.5 больше развиваться не будет.

    Reply
  79. Paully

    (79) Спасибо за информацию!

    Reply
  80. artbear

    (80) Добавлю к (79)

    Не просто стабильная сборка, но в результате простого запуска 1С++ вся система 1С начнет работать быстрее 🙂

    Например, СоздатьОбъект() будет работать намного быстрее, чем без 1С++ или даже со старыми версиями 1С++, где уже было ускорение.

    И т.д. и т.п.

    Reply
  81. Paully

    понятно, спасибо, что учите меня, коллеги!

    Reply
  82. Paully

    Привет. Простите за офф-топ. Почему одни журналы (к примеру) в 1С 7.7 «захлопываются» клавишей Esc, а другие нет. (в режиме Предприятие, естесственно).

    Reply
  83. vip

    (83) Например?

    Reply
  84. Noy

    (83) По Esc закрываются только отчеты, обработки, документы, формы элементов справочника. Журналы и формы списка справочников закрываются по Esc только если они открыты в режиме выбора/подбора.

    Reply
  85. vip

    (85) Все правильно рассказал.

    Reply
  86. Paully

    Общий журнал документов в ТиС’е закрывается, остальные журналы — нет.

    Reply
  87. Abadonna

    (87) У тебя там формекс случаем не висит на журнале? Или в глобальнике на

    ПриНажатииКнопкиКлавиатуры()? Не могёт он стандартно закрываться по Esc

    Reply
  88. Paully

    на журнале — no formex.dll detected;

    в глобальном — ничего подобного нет;

    ————————————-

    в чем же дело?

    Reply
  89. dumal

    Поставил в одной организации и забыл. Работают уже год, наверное. Это — самая лучшая рекомендация

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *