Просто красивая блокировка сеанса
Можно просто добавить на панель инструментов или
заменить стандартную блокировку с помощью //infostart.ru/projects/602/
Автоматизация бухгалтерского учета
Разработки для оптимизации управления и новейшие отчеты и обработки программ
это конечно прикольная штука- но ввожу пароль, а он не впускает обратно 🙁
(1) Странно, я тестировал на 20 пользователях — вроде все ОК.
к стати у меня терминал — щас покапаюсь
Красиво.
Молодец.
(1,3) Как вариант — обработку можно запустить со «своим» паролем — передать в Форма.Параметр строку. (Например ОткрытьФормуМодально(«Отчет»,»777″,»C:… .fn_lock.ert») — пароль будет «777» ).
Симпатишно
Красиво!
А я красоты не увидела.
{C:2009IK2009FN_LOCK.ERT(57)}: Неудачная попытка создания объекта (Окна)
🙂
..а у мадемуазель формекс стоит?
(9) Скачайтеhttp://www.dorex.ru/files/?formex_t.zip Затем из архива достаньте файлик FormEx.dll и положите его в каталог с обработкой…
Здравствуйте!! Я начинающий 1с программсит! не подскжете как это добавиьт????
(12) Зайти в конфигуратор — Открыть Конфигурацию — Интерфейсы — нужный интерфес — панели инструментов — там добавляешь пункт «Отчеты — Отчеты.ВнешнийОткрыть» на вкладке дополнительно указываешь путь к файлу (лучше положить его в ExtForms), назначеашь иконку/комбинацию клавиш
(13)
Окна=СоздатьОбъект(«Окна»);
{D:NSS-OFFICEEXTFORMSFN_LOCK.ERT(57)}: Неудачная попытка создания объекта (Окна)
(14) Читай (9) + (11)
Добавил архив вместе с компонентой Альфа и обработкой.
Для тех, у кого еще нет єтой прекрасной компоненты
(14) и (9) Это для вас…
Вау 🙂 Какая красивая задумка.
все равно такая же ошибка!!!
Красиво
(19) Возьми обработку из архива (!!!) и длл-ку и все положи в ExtForms
dahanago попробуй капслок нажать и большими символами набери пароль.
(21) Выражаю признательность за донесение искусства 1С до всяких, не особо умелых пользователей. Мерси.
Вхожу в 1С без пароля, заставку каким паролем убрать?
(24) Отправь SMS на короткий номер ХХХХ со словом пароль и в ответ пришлют смс с паролем снятия блокировки. :))
(25) 🙂 🙂 🙂
(24) по-логике пустым…
но там немного мутно все с пользователями, у которых пароль «неопределён»…
я думал что поборол проблемку, оказывается не совсем.
(22) Помогло 🙂
У меня ошибка такая.. У меня не прописан католог пользователя..
FN_LOCK.ERT(76)}: Поле агрегатного объекта не обнаружено (ПолучитьХэшПароляПользователя)
ХешПравильногоПароля=Сервис.ПолучитьХэшПароляПользователя(ИмяПользователя(), КаталогИБ());
2(28) Наверное, надо обновить FormEx.
Кстати, насчет пароля — может взять пароль в ВРЕГ() в самой проверке пароля?
(30) А есть проблемы с паролем? У меня все пароли цифровые — там проблем нет.
Если есть ошибка — пишите — я поправлю.
(31) Да, такая проблема есть — ввод большими буквами ее решает. У себя в обработке поднял регистр — проблемы нет.
(32) Исправил, обновил.
В ExtForms базы — создать папку FormEx.grp вложить оба файла (ert и dll) все работает на ура.
(34) А без этого не работает? ;))
Красота какая! даже не хочется включать обратно ))
Красиво. Только размеры нужно подправить. Красота должна быть красивой до конца. :))
Идея — супер! Автору — уважуха и респект!
Провел несколько экспериментов и сделал для себя открытие. Оказывается, пароль в 1С 7.7 регистронезависимый! :((((
Столько лет я верил что регистр имеет значение …
Исходя из этого, при проверке можно оставить только переменные: <ХешПравильногоПароля> и <ХешПароля2>. И условие упростить:
Если ХешПравильногоПароля=ХешПароля2 Тогда
… снять блокировку …
КонецЕсли;
(37) Размеры как раз и подбирал что бы покрасивше (но это уже дело вкуса).
по поводу регистронезависимого пароля — для меня тоже открытие (sarius подсказал), но так как я лично тестов не проводил, то просто добавил еще одну проверку.
Список контролируемых клавиш — хороший ход.
Но не понятно, зачем он здесь?
Разве не достаточно перехватывать только клавишу <Esc>?
(39) Нет, нужно перехватывать еще и хоткеи…
http://infostart.ru/projects/3800/ — так если вызывать с помощью хоткея какой-нибудь журнал — то он открывается под «экраном блокировки», что есть не очень-то красиво…
У меня используется обработка
то же самое относиться к хоткеям на кнопках и пунктах меню…
Красиво, но идейно не вполне верно — отсутствующий сотрудник может оставить на экране важные сведения, каковые всё равно видно, а это уязвимость. Лучше, если занавеска будет совсем сплошная, чтоб изображение рабочего окна 1С стало нечитабельным.
(41) там легко поправить в коде ищи строки:
Для х=1 по 220 Цикл
х=х+14;
Форм.Прозрачность=х;
КонецЦикла;
Меняй на
Для х=1 по 250 Цикл
х=х+14;
Форм.Прозрачность=х;
КонецЦикла;
Форм.Прозрачность=255;
P.S. у нас в компании важные данные вообще запрещено оставлять на экране даже при блокировке, в остальных случаях — наоборот присутствует определенная открытость — сотрудник временно отошел, но он работает и даже видно над чем.
(40) я комбинации горячих клавиш сам нигде не назначал, кроме тех, что по умолчанию заложены в конигурацию. Поэтому, у меня ни один хоткей под блокировкой не срабатывает.
Но уж сильно большой список нужных клавиш у тебя получился.
Я бы пошел по принципу «чего меньше». Меньше перечислений нужных или НЕ нужных. Проследил бы закономерность всех хоткеев, например, они все используют сочетание Контр+Шифт, или везде используются функциональные (F?) и т.д.
Но не подумай что я тебя учу? Тем более, что обработка уже написана и работает!
Хочу отметить — написана хорошо даже для не опытных или начинающих — только скачай и запускай! Это признак профессионализма!
(42) — поддерживаю полностью!
А я изменил прозрачность до 190.
(43) мерси за коплимант! (с) За двома Зайцами
🙂
А по сути я и пошел по принципу «чего меньше» — просто у меня уже есть несколько обработок, которые содержат в себе списки «отфильтрованных» клавиш и я банально сделал копи-паст 😉
Предлагаю при включении блокировки в цикл вставить задержку на 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;
КонецПопытки;
КонецФункции // ВыполнитьЗадержку
(46) Хорошая идея, только сильно зависит от скорости компа. Например у меня и так плавно затухает…
(46) что-то в цикле задержка не срабатывает … 🙁
Надо еще покопаться.
(48) Попробуй «обычную» задержку:
ТекВремя=ТекущееВремя(); Пока ТекВремя=ТекущееВремя() Цикл Состояние («Пауза»);КонецЦикла;
ЗАЧЕТ !!!! плюс !
(46) функция не рабочая, прошу никого не копировать. Объект WScript с 1С-ом не подружен. Подружу, перевыложу.
(49) — задержка на 1 секунду. Это слишком много, миллисекунд 100 — с головой.
Красата!
(51)http://infostart.ru/blogs/911/
а у меня сделано так
-==Глобальный модуль==-
//ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ
Перем ЕстьАктивность; //нужна для определения активности пользователя
//глобальная процедура внешней компоненты FormEx
//__________________________________________________________ ___________________
Процедура ПриНажатииКнопкиКлавиатуры(Конт, КодКл, кнАльт, кнШифт, кнКонтрол, Символ)
ЕстьАктивность = 1;
КонецПроцедуры
//__________________________________________________________ ___________________
Процедура ЗаблокироватьПрограмму()
//проверка активности пользователя
//в конце каждой минуты флаг активности выставляем в ноль
//если за минуту активность была то время неактивности обнуляем
//иначе время неактивности накапливаем
//как только время неактивности достигает значения переменной
//КолвоМинутДоБлокировки — блокируем программу.
Если ПустоеЗначение(глПользователь.КолвоМинутДоБлокировки) = 1 Тогда
Возврат;
КонецЕсли;
Если ЕстьАктивность = 0 Тогда
ВремяНеактивностиПользователя = 1 + ВремяНеактивностиПользователя;
Иначе
ВремяНеактивностиПользователя = 1;
КонецЕсли;
Если ВремяНеактивностиПользователя = глПользователь.КолвоМинутДоБлокировки Тогда //КолвоМинутДоБлокировки Тогда
Если глПрограммаЗаблокирована = 0 Тогда
глПрограммаЗаблокирована = 1;
ОткрытьФормуМодально(«Обработка.ПроверкаПароля», «Блокировка»);
КонецЕсли;
КонецЕсли;
ЕстьАктивность = 0;
КонецПроцедуры // ЗаблокироватьПрограмму
//__________________________________________________________ ___________________
Процедура парамОбработкаОжидания()
ЗаблокироватьПрограмму();
КонецПроцедуры // парамОбработкаОжидания
//__________________________________________________________ ___________________
Процедура ПриНачалеРаботыСистемы()
Если ЗагрузитьВнешниеКомпоненты() = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если глПриНачалеРаботыСистемы() <> 1 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
//вызов процедуры парамОбработкаОжидания каждые 60 секунд (60000мС)
глСервис.ОбработкаОжидания(«парамОбработкаОжидания», 60000);
КонецПроцедуры // ПриНачалеРаботыСистемы
(54) Завидую…
а вот у меня есть несколько пользователей, работающих исключительно с мышей…
А каждый чих мышки ловить — накладно выходит.
(55)
повесь на обработку нажатия кнопки мыши. В формексе есть на правую и левую, сингл и дабл клик
(54,55) Может вам 1С++ поможет:
http://www.1cpp.ru/docum/icpp/html/Informer.html#getidletimeofsystem
?
(54) Ага, решение из (57) я делал как раз для подобных задач
(46) и (51) — туфта все это!
Есть метод Sleep у объекта «Система» внешней компоненты 1С++.
При мощном ПК затухание смотрится красиво только при задержке 12 миллисекунд, не больше.
(57) — мы с тобой в обоих форумах одновременно! :)))
54.>ЗаблокироватьПрограмму();
при нективности. Посмешил. У меня стоит ЗавершитьРаботуСистемыНах() ибо не фиг там неактивному торчать. И бокировать у менеджера только 1С не вижу смысла.
Боликровать надо комп, решается скрин-сейвером с паролем. А тех манагеров, у которых он не стоит, у нас на первый раз предупреждают, на второй — выгоняют
и такое есть:
у каждого пользователя в настройках есть реквизит — колво минут до блокировки,но это значение не может превышать значение константы, достигнув которого система пользователя выкидывает
собстно там просто надо в процедуре ЗаблокироватьПрограмму() убрать первое условие вначале и добавить добавить условие на проверку времени неактивности со значением константы
//__________________________________________________________ ___________________
Процедура ЗаблокироватьПрограмму()
//проверка активности пользователя
//в конце каждой минуты флаг активности выставляем в ноль
//если за минуту активность была то время неактивности обнуляем
//иначе время неактивности накапливаем
//как только время неактивности достигает значения переменной
//КолвоМинутДоБлокировки — блокируем программу.
Если ЕстьАктивность = 0 Тогда
ВремяНеактивностиПользователя = 1 + ВремяНеактивностиПользователя;
Иначе
ВремяНеактивностиПользователя = 1;
КонецЕсли;
Если ВремяНеактивностиПользователя = глПользователь.КолвоМинутДоБлокировки Тогда
Если глПрограммаЗаблокирована = 0 Тогда
глПрограммаЗаблокирована = 1;
ОткрытьФормуМодально(«Обработка.ПроверкаПароля», «Блокировка»);
КонецЕсли;
КонецЕсли;
Если ВремяНеактивностиПользователя > Константа.КолвоМинутДоВыходаПриНеактивности Тогда
ЗавершитьРаботуСистемы(0);
КонецЕсли;
ЕстьАктивность = 0;
КонецПроцедуры // ЗаблокироватьПрограмму
Меня так и не пускает обратно:
ХешПравильногоПароля=Сервис.ПолучитьХэшПароляПользователя(ИмяПользователя(), КаталогИБ());
{C:DOCUMENTS AND SETTINGSNEVASILEVSKIYМОИ ДОКУМЕНТЫ1С БАЗЫBASE КУРГАНBASEEXTFORMSFORMEX.GRPFN_LOCK.ERT(106)}: Поле агрегатного объекта не обнаружено (Полу
И чего не так? Скачал отдельно длл-ку, с офф.сайта — ни к черту. Все описанные рекомендации — делал.
(64) У тебя загружается старая версия длл. Найди по поиску formex.dll на всех локальных дисках и все длл замени на новую версию.
не помогло… че делать — как быть?
в 1С — Помощь — О программе — Закладка Formex — там есть путь к внешней компоненте…
в твоем случае должен быть
C:DOCUMENTS AND SETTINGSNEVASILEVSKIYМОИ ДОКУМЕНТЫ1С БАЗЫBASE КУРГАНBASEEXTFORMSFORMEX.GRPFORMEX.DLL
а путь покороче
да, все так и есть — по поиску же ВСЕХ локальных дисков — все нашел и позаменял…
но ничего не изменяется…
(67)
Не нахожу таковой закладки. 1C++ — есть. На этом — все.
(71) Значит формекс не обновлен. Запусти на «чистой» машине!
(72)
Ничего не понимаю — что значит, что я не нахожу вкладки с ФормЕкс? И, я все скачивал с твоего топика. Зачем еще что-то обновлять?
(73) разберись со своими внешними компонентами. У тебя либо старый формекс подгружается, либо старый 1С++ (тот который содержит в себе формекс)
Все нормально — обновил 1cpp.dll на 2.5.0.7-версию. Спасибо!
(75) Тут принято оценивать обработку: «+» или «-«…
а то куча усилий по запуску и ноль реакции — непонятно.
(75) Обнови лучше на 3.0.1.22
(77) Где взять?
(78)http://www.1cpp.ru/images/3/32/Icpp-latest.rar
Опасаться не надо. Нормальная, стабильная сборка.
И возможностей гораздо больше, чем в 2.5
2.5 больше развиваться не будет.
(79) Спасибо за информацию!
(80) Добавлю к (79)
Не просто стабильная сборка, но в результате простого запуска 1С++ вся система 1С начнет работать быстрее 🙂
Например, СоздатьОбъект() будет работать намного быстрее, чем без 1С++ или даже со старыми версиями 1С++, где уже было ускорение.
И т.д. и т.п.
понятно, спасибо, что учите меня, коллеги!
Привет. Простите за офф-топ. Почему одни журналы (к примеру) в 1С 7.7 «захлопываются» клавишей Esc, а другие нет. (в режиме Предприятие, естесственно).
(83) Например?
(83) По Esc закрываются только отчеты, обработки, документы, формы элементов справочника. Журналы и формы списка справочников закрываются по Esc только если они открыты в режиме выбора/подбора.
(85) Все правильно рассказал.
Общий журнал документов в ТиС’е закрывается, остальные журналы — нет.
(87) У тебя там формекс случаем не висит на журнале? Или в глобальнике на
ПриНажатииКнопкиКлавиатуры()? Не могёт он стандартно закрываться по Esc
на журнале — no formex.dll detected;
в глобальном — ничего подобного нет;
————————————-
в чем же дело?
Поставил в одной организации и забыл. Работают уже год, наверное. Это — самая лучшая рекомендация