Работа в качестве сервиса:
Сервис каждые 30 сек. проверяет состояние терминальных сессий, и в случае когда состояние равно «Отключена» запускает в отключенной сессии «Close1s.exe» с ключом –close.
Close1s.exe с ключом –close имитирует работу пользователя по закрытию 1С, ищет процесс с именем 1cv7* или 1cv8* находит его окно, посылается команда закрытия окна 1С, если всплывают диалоги закрытия или о сохранении изменений в 1С, то на вопросы отвечается утвердительно «Да» , 1С завершает работу штатным методом. Если в течении 10 сек. так и не удалось завершить 1С (в случаях когда 1С зависла и не отвечает на действия пользователя) процесс 1С уничтожается.
Примеры использования программы «Close1s.exe»:
Для инсталляции сервиса можно скопировать «Close1s.exe» в папку C:WINDOWS, затем выполнить команду инсталляции сервиса «Пуск» — «Выполнить»- «C:WINDOWS Close1s.exe -install». Сервис установится с именем «Закрытие 1С при отключении сессии».
Для удаления сервиса выполните команду «Пуск» — «Выполнить»- «C:WINDOWS Close1s.exe -uninstall».
Есть возможность использовать «Close1s.exe» не в качестве сервиса, а как программу (например для использования в своих скриптах или батниках, с ключом «-close»), для этого выполните команду «Пуск» — «Выполнить»- «C:WINDOWS Close1s.exe -close».
Дополнение, о настройках терминального сервера:
В настройке службы терминалов («Пуск» — «Все программы»-«Администрирование»-«Настройка служб терминалов» или «Пуск» — «Выполнить»- «%SystemRoot%system32 scc.msc /s»)
В своиствах RDP-Tcp на закладке «Сеансы» поставить галочку «Заменить параметры пользователя», выбрать «Завершение отключенного сеанса» 1 мин. или больше, поставить галочку «Заменить параметры пользователя При превышении ограничений или разрыве подключения», выбрать «Отключить сеанс».
Обновление:
+ добавлены настройки ini файл:
[options]
to_answer_the_question=1
interval_of_session_inactivity=0
wait_before_killing=10
описание параметров:
to_answer_the_question — отвечать на вопросы 1=Да, 0=Нет .
interval_of_session_inactivity — интервала неактивности отключонной сессии в минутах, если 0=сразу
wait_before_killing — ожидание в секундах перед уничтожением процеса 1С (если не смогли выключить).
+ Настройки ini файла лежащий рядом с exe действует на всех пользователей,
для индивидуальной настроки пользователей разместите ini файл в каталоге пользователя
например пользователю User: « C:Documents and SettingsUserClose1s.ini».
Обновление от 22.05.2013:
+ изменен алгоритм по кнопкам, теперь учитываются диалоговые окна: «Да/Нет», « Ок/Отмена», «Ок» и т.д.
ЭХ!
ЛЮБЛЮ Я ЗАПИСЫВАТЬ ПЕРВЫЕ ПОСТЫ К СТАТЬЯМ!!!
А ПОЧЕМУ ???
—————————————————-
А ПОТОМУ, ЧТО:
1) Можно смайлов в пост без извратов навставлять.
2) По спаму рассылаемому сайтом по мэйлу можно подумать — что Я АВТОР ПУБЛИКАЦИИ.
—————————————————-
а на будущее — изменять первый пост со смайлами не советую,
красота проподает — смайлики не отображаются.
😀 💡 ❓ ❗ 😉 👿 😳 :{} 😎 😮 🙁 🙂 😐
Автору, спасибо! нужная вещь.
Интересная фишка, спрошу своих админов — актульно или нет…
А трудно еще добавить в службу выгонялку уюзеров из конкретной базы
с выводом оповещений?
Штатная выгонялка в типовых 1С не всегда хорошо работает и интерфейс у нее довольно поганенький.
1. хочется иметь более гибко настраиваемый режим поведения
— указание интервала неактивности сессии. например: 20 мин — если отключено менее указанного времени — ничего не делаем.
— указание неактивности сессии как-то по разному для разных сессий/сеансов/пользователей 1С
Действительно, нужная вещь.
Но отвечать на все вопросы утвердительно «Да» — это неправильно. Потому что при этом автоматически сохранятся изменения, которые, может быть, пользователь недоделал. Или совсем не хотел сохранять. Часто ведь пользователь открывает форму документа, затем, например, дважды кликает по номенклатуре в табличной части и открывает форму элемента номенклатуры. В родительской форме — форме документа — при этом ставится признак, что имеются несохраненные изменения. Если при закрытии такой формы программа автоматически ответит «Да», а документ проведен, то он будет перепроводиться.
Думаю, нужно отвечать «Нет» на все вопросы о сохранении изменений. А «Да» — только на вопрос о закрытии главного окна 1С.
прикольная штука. хотя пользуюсь на сервере диспетчером терминала и убиваю сессии
(1) некрасиво… Что за ребячество?
(5) согласен что отвечать да на все- просто опасно.
Научить выгонять проще и эффективней через административный ресурс или через ввод длинной непонятной капчи после некорректного выхода. + отключалка крестика на терминальной сессии.
Но автор старался- и заслужил
печенешкуодобрение.(7) iov, Административный ресурс, это хорошо, конечно. Только вот не всегда и не везде работает
А вот тайминги действительно бы настраиваемые, поскольку критерии у всех разные. Да и 10 секунд на завершение сессии не всегда хватает.
Плюс за работу, но считаю, что однозначного может решить только пользователь выбирать ДА или НЕТ, поэтому считаю, что нужно просто прибивать такие сеансы. Есть, конечно, в 7.7 с этим проблемы (в частности, с индексами), а в восьмерке какие?
(5) kapustinag, можно добавить INI файл с настройкой, как отвечать на вопросы «Да» или «Нет».
(4) CheBurator,
тоже можно в INI прикрутить.
для реализации этой идеи надо както вытащить настройки пользователей сессий терминалки, попробую разобраться с ними.
(6) Shrek2015, он как раз и прибивает 1С, чего хотелось бы избежать 😉
если 1с в SQL то пусть прибивает. не так страшно 🙂
(1) не «проподает», а «пропАдает»…
(11) да, было бы хорошо.
желательно развить в части большей гибкости управления…
хотелок у меня много… 😉
(13) Shrek2015, да только вот пользователи не очень радуются потерянным данным 🙂
(5) kapustinag,
Лучше пусть проведется документ, чем операторы склада потеряют не записанный документ на несколько сот строк тч. (сколько не учи пользователей записывать почаще изменения, никак не учатся, даже после потерь)
Но опцию эту добавлю 🙂
(14) rus128,
у меня по рускому с литиратурой — тройка в атестате
(1) некрасиво… Что за ребячество?
(7) iov, согласен, что со стороны так может и показаться…
но
это была проверка одного довольно серьезного бага в функционале сайта
(я бы даже сказал, что НАСТОЯЩЕЙ ДЫРЫ)
Нужная вещь, для меня актуально =|
(17) slavapil, а есть идеи как реализовать подобное не из сервиса? из десктопа работать с окнами в определенной сессии, то что я пока нагуглил это nativApi.
2003 сервер, 1с77, результат работы этой проги:
Visual Studio Just-In-Time Debugger
An unhandled win32 exception occurred in Close1c.exe [14380].
Possible debuggers: New instance of Visual Studio 2005
Do you want to debug using the selected debugger?
То есть терминальная сессия зависает, что делать?
пс: Всех с праздниками! 🙂
(5) kapustinag,
Тогда проще сразу процесс грохнуть, равносильно всем «нет»
(24) Abadonna, Конечно, проще грохнуть процесс. Но при этом могут не сохраниться, например, настройки пользователя. Поэтому нормально завершаем процесс, все пользовательское пусть автоматически сохраняется как положено, а все недоделанные изменения в документах и т.п. — в топку.
Отвечать «ДА» можно для тех пользователей, которые ведут свой обособленный кусок учета. Для кладовщика, например.
А для экономиста или бухгалтера — только «Нет».
Отвечать «ДА» можно для тех пользователей, которые ведут свой обособленный кусок учета. Для кладовщика, например.
А для экономиста или бухгалтера — только «Нет».
идея конечно хорошая
…
но как это поймет прога, которая знает про 1С только то,
что у нее иконка желтая (бывает квадратная и еще бывает круглая) ???
(26)
Понять она сможет, если сопоставить имя терминал-пользователя (оно есть в инфе о сессии) с тем, кому надо «Да», а кому «Нет». Но, имхо, считаю это лишним. Надо просто мочить процессы, у меня вот этаАвтозакрытие висящих терминальных сессий безотказно работала, без всяких «побочных эффектов»
(21) Жолтокнижниг,
Не совсем понял вопрос, управление окнами и так происходит не из сервиса, а из программы под десктопом сессии.
(28) slavapil, реализовать туже схему, из десктопа: запустил я программу, а она «правильно» закрывает окна в других сессиях. начальная точка не сервис, а десктоп.
(29) Жолтокнижниг, без сервиса реализовать такой функционал сложно, вроде не хватит прав доступа.
я знаю что сложно и стремится к невозможному, но… хочется
Обновление:
+ добавлены настройки ini файл:
[options]
to_answer_the_question=1
interval_of_session_inactivity=0
wait_before_killing=10
описание параметров:
to_answer_the_question — отвечать на вопросы 1=Да, 0=Нет .
interval_of_session_inactivity — интервала неактивности отключонной сессии в минутах, если 0=сразу
wait_before_killing — ожидание в секундах перед уничтожением процеса 1С (если не смогли выключить).
+ Настройки ini файла лежащий рядом с exe действует на всех пользователей,
для индивидуальной настроки пользователей разместите ini файл в каталоге пользователя
например пользователю User: « C:Documents and SettingsUserClose1s.ini».
(27) Abadonna,
Если парсить query session, то у меня в активной сессии нормально отображает, а в отключенной вместо активности и времени выдает «диск отключен». Возможно у некоторых пользователей и не работало «Автозакрытие».
(33) slavapil, я ее писал под 2003-й сервер, 2008-го, кажись, тогда и в помине не было. А 2003-й точно не выдавал «диск отключен»
(34) Abadonna, у меня выдает такое Windows Server 2003 R2 Standard Edition sp2.
(35) slavapil, ну, фиг его знает… я такого не видел, хотя можно и добавить условие на «диск отключен».
Там дел-то… Мне сейчас это неактуально, основные клиенты сидят на крутой выгонялке
Спасибо мне как раз нужно
(34) Abadonna, под 2008 переписать не планируете? Актуально
вообще вещь хорошая, если сработает неубивание на определенную группу пользователей, то вообще шик!
Программисты по ночам бывает запускают всякие обработки нужные, на терминальнике висит длинный idle, но убивать нельзя
(32) slavapil, интересная идея!
Есть замечания по переводу:
«to_answer_the_question» — это «гениталий на гусенечном ходу», так не пишут, могу предложить вариант — say_yes_on_queryboxes. Кстати, если выскочит окно с Ок/Отмена а не Да/Нет что будет? А было бы неплохо… 😉
«interval_of_session_inactivity» — лучше «session_inactivity_interval»
(32) slavapil, спасибо! Еще бы, было бы не плохо, на первой странице версионировать описание, или как там правильнее, описывать изменения от такого-то. Просто предложение.
(40) Loader_1C, Считаю что для конкретно этого проекта, версионность не особо актуальна.
(39) taiba,
Хороший вопрос. Напомните, в каких случаях выскакивают такие вопросы Ок/Отмена.
Поразмышлял и пришел к выводу что «не хороший» пользователь может получить предупреждение даже с кнопкой ОК, и забросить программу 😉
Значит, исправим и такого пользователя 🙂 в ближайшем обновлении.
(42) slavapil,
в окнах типовых вроде нет, а вот в самописных может быть какой-нибудь «диалог закрытия программы».
Обновление от 22.05.2013:
+ изменен алгоритм по кнопкам, теперь учитываются диалоговые окна: «Да/Нет», «Ок/Отмена», «Ок» и т.д.
А у меня на сервере 2008 SP2 R2 (64бит) почему-то не работает
(45) han, тестировал на своем «стареньком» 2003, как получится потестирую на 2008
(7) iov, Длинная капча.. ммм хорошая идея 🙂 есть реализации ? ссылк?
Спасибо, интересно проверю на своем серваках..Win2k8 32 и Win2k8 64бит
(13) Прибивает, это конечно хорошо! Но допустим есть внешние COM соединения с другой базой и после нескольких таких прибиваний при повторном входе пользователя в базу они просто не устанавливаются по новой (зависаю)! А перезапускать сервер как-то не сильно хочется! Поэтому автору + за наводку!!!
Вещь нужная, особенно в пятницу, для забывчивых. Всех с праздником, с пятницей и первым днем лета. Мои операторы на семерке закрывают просто терминальный режим и все, предварительно закрыв один эску. Пока разрывов связи нет, поэтому обхожусь так. Зато в проблемных сетях без такой программки не обойтись.
Автор я так понимаю ето не прграмка а просто бортовая функция сервера терминалов, которая была еще в 2000 сервере. Как многие администраторы которые настраивают сервера про нее не знают ето большая загадка. Но за труд все одно спасибо Так дерджать.
(51) dyak84, не совсем так понимаете, функция отключения сеансов была, и администраторы о ней знают.
Но при таком отключении программы закрываются как при выключении компьютера с не закрытыми программами. 1с8 при таком поведении практически не страдает, а вот 1с7.7 страдала, так как при таком выключении считала, что завершилась крахом и требует монопольного входа для переиндексации. Этот сервис опирается на работу сервера терминалов, ловит момент отключения сессии и закрывает 1С, эмулируя работу пользователя (например, как будто пользователь мышкой нажал в 1с по крестику и кнопкам да или нет).
Добрый день. У нас виста. Скачал программу , запустил — в процессах Windows висит процесс close1c — и всё —
в инструкции написано : Сервис установится с именем «Закрытие 1С при отключении сессии».
где мы должны увидеть этот сервис : в пуске нет, в 1с -тоже нет???
(53) сибирь,
В сервисах операционной системы, Пуск->Панель управления->Администрирование->Службы
или Пуск->Панель управления->Администрирование->Службы->Управление компьютером->Службы и приложения->Службы
Да, спасибо, вижу. Но вопрос у нас такой. К самому серверу доступа нет, но многие бухгалтера выходят из терминального режима , забыв выйте из 1С, мы полагали, что если эту программу установить на какую-либо рабочую станцию — это позволит автоматом закрывать 1С запущенную на сервере. это наверно ни так?
(55) сибирь,
Этот сервис написан для сервера терминалов, для закрытия 1с в сессиях пользователей терминального сервера. Не для компьютеров пользователей, (устанавливать его нужно только на сервере).
не так
обратитесь к тому, у кого есть доступ к серверу
подскажите, будет ли сервис работать на windows server 2008 x64?
Нормальная штука, но почему рубит процессы, которые запускаются по заданиям, и не имеют сеанса сервера. Может чего не так делаю? А вообще работает на 2008 R2 нормально без проблем.