Программа (Сервис) закрытия 1С в терминальных сессиях

Опубликовал Вячеслав (slavapil) в раздел Администрирование - Сервисные утилиты

Закрытие 1с в терминальных сессиях при разрыве связи или по таймауту завершения сессии, вызывает простое уничтожение процесса 1с. В связи с этим не сохраняются открытые на редактирование документы и программа завершается аварийно, что требует потом определенных мер по устранению таких сбоев, например переиндексация базы. Для закрытия 1с штатным образом используйте эту программу.

Работа в качестве сервиса:

Сервис каждые 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\tscc.msc /s»)  

 Настройка служб терминалов

В своиствах RDP-Tcp на закладке «Сеансы» поставить галочку «Заменить параметры пользователя», выбрать «Завершение отключенного сеанса» 1 мин. или больше, поставить галочку «Заменить параметры пользователя При превышении ограничений или разрыве подключения», выбрать  «Отключить сеанс».

 Свойства RDP

 

 Обновление:
+ добавлены настройки 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 Settings\User\Close1s.ini».

 

Обновление от 22.05.2013:

+ изменен алгоритм по кнопкам, теперь учитываются диалоговые окна:  «Да/Нет», « Ок/Отмена», «Ок» и т.д.

 

Скачать файлы

Наименование Файл Версия Размер
Close1S.zip
.zip 323,16Kb
22.05.13
226
.zip 323,16Kb 226 Скачать

См. также

Комментарии
1. Юрий Осипов (yuraos) 866 07.05.13 20:14 Сейчас в теме
ЭХ!
ЛЮБЛЮ Я ЗАПИСЫВАТЬ ПЕРВЫЕ ПОСТЫ К СТАТЬЯМ!!!

А ПОЧЕМУ ???
----------------------------------------------------
А ПОТОМУ, ЧТО:
1) Можно смайлов в пост без извратов навставлять.
2) По спаму рассылаемому сайтом по мэйлу можно подумать - что Я АВТОР ПУБЛИКАЦИИ.

----------------------------------------------------
а на будущее - изменять первый пост со смайлами не советую,
красота проподает - смайлики не отображаются.

:D :idea: :?: :!: ;) :evil: :oops: :{} 8-) :o :( :) :|
2. Сергей Викторович (Loader_1C) 07.05.13 20:17 Сейчас в теме
Автору, спасибо! нужная вещь.
3. Юрий Осипов (yuraos) 866 07.05.13 20:18 Сейчас в теме
Интересная фишка, спрошу своих админов - актульно или нет...
А трудно еще добавить в службу выгонялку уюзеров из конкретной базы
с выводом оповещений?
Штатная выгонялка в типовых 1С не всегда хорошо работает и интерфейс у нее довольно поганенький.
4. Сергей (Che) Коцюра (CheBurator) 3372 07.05.13 20:40 Сейчас в теме
1. хочется иметь более гибко настраиваемый режим поведения
- указание интервала неактивности сессии. например: 20 мин - если отключено менее указанного времени - ничего не делаем.
- указание неактивности сессии как-то по разному для разных сессий/сеансов/пользователей 1С
5. Александр Капустин (kapustinag) 07.05.13 20:52 Сейчас в теме
Действительно, нужная вещь.
Но отвечать на все вопросы утвердительно "Да" - это неправильно. Потому что при этом автоматически сохранятся изменения, которые, может быть, пользователь недоделал. Или совсем не хотел сохранять. Часто ведь пользователь открывает форму документа, затем, например, дважды кликает по номенклатуре в табличной части и открывает форму элемента номенклатуры. В родительской форме - форме документа - при этом ставится признак, что имеются несохраненные изменения. Если при закрытии такой формы программа автоматически ответит "Да", а документ проведен, то он будет перепроводиться.
Думаю, нужно отвечать "Нет" на все вопросы о сохранении изменений. А "Да" - только на вопрос о закрытии главного окна 1С.
6. Shrek Shrek (Shrek2015) 07.05.13 22:26 Сейчас в теме
прикольная штука. хотя пользуюсь на сервере диспетчером терминала и убиваю сессии
7. Александр Зубцов (iov) 359 08.05.13 01:08 Сейчас в теме
(1) некрасиво... Что за ребячество?
(5) согласен что отвечать да на все- просто опасно.

Научить выгонять проще и эффективней через административный ресурс или через ввод длинной непонятной капчи после некорректного выхода. + отключалка крестика на терминальной сессии.

Но автор старался- и заслужил печенешку одобрение.
8. soba (soba) 08.05.13 03:12 Сейчас в теме
(7) iov, Административный ресурс, это хорошо, конечно. Только вот не всегда и не везде работает

А вот тайминги действительно бы настраиваемые, поскольку критерии у всех разные. Да и 10 секунд на завершение сессии не всегда хватает.
9. dka80 ~ (dka80) 15 08.05.13 06:15 Сейчас в теме
Плюс за работу, но считаю, что однозначного может решить только пользователь выбирать ДА или НЕТ, поэтому считаю, что нужно просто прибивать такие сеансы. Есть, конечно, в 7.7 с этим проблемы (в частности, с индексами), а в восьмерке какие?
10. Вячеслав (slavapil) 126 08.05.13 08:49 Сейчас в теме
(5) kapustinag, можно добавить INI файл с настройкой, как отвечать на вопросы "Да" или "Нет".
11. Вячеслав (slavapil) 126 08.05.13 09:02 Сейчас в теме
(4) CheBurator,
- указание интервала неактивности сессии. например: 20 мин - если отключено менее указанного времени - ничего не делаем.

тоже можно в INI прикрутить.

- указание неактивности сессии как-то по разному для разных сессий/сеансов/пользователей 1С

для реализации этой идеи надо както вытащить настройки пользователей сессий терминалки, попробую разобраться с ними.
12. Вячеслав (slavapil) 126 08.05.13 09:05 Сейчас в теме
(6) Shrek2015, он как раз и прибивает 1С, чего хотелось бы избежать ;)
13. Shrek Shrek (Shrek2015) 08.05.13 09:39 Сейчас в теме
если 1с в SQL то пусть прибивает. не так страшно :)
14. Ruslan (rus128) 2 08.05.13 12:00 Сейчас в теме
(1) yuraos, не "проподает", а "пропАдает"...
15. Сергей (Che) Коцюра (CheBurator) 3372 08.05.13 12:35 Сейчас в теме
(11) да, было бы хорошо.
желательно развить в части большей гибкости управления...
хотелок у меня много... ;-)
16. Вячеслав (slavapil) 126 08.05.13 14:08 Сейчас в теме
(13) Shrek2015, да только вот пользователи не очень радуются потерянным данным :)
17. Вячеслав (slavapil) 126 08.05.13 14:23 Сейчас в теме
(5) kapustinag,
Если при закрытии такой формы программа автоматически ответит "Да", а документ проведен, то он будет перепроводиться.

Лучше пусть проведется документ, чем операторы склада потеряют не записанный документ на несколько сот строк тч. (сколько не учи пользователей записывать почаще изменения, никак не учатся, даже после потерь)

Но опцию эту добавлю :)
18. Юрий Осипов (yuraos) 866 08.05.13 14:44 Сейчас в теме
(14) rus128,
у меня по рускому с литиратурой - тройка в атестате
19. Юрий Осипов (yuraos) 866 08.05.13 18:01 Сейчас в теме

(1) некрасиво... Что за ребячество?

(7) iov, согласен, что со стороны так может и показаться...
но
это была проверка одного довольно серьезного бага в функционале сайта
(я бы даже сказал, что НАСТОЯЩЕЙ ДЫРЫ)
20. Сергей Курышов (sudmorsh) 51 08.05.13 19:31 Сейчас в теме
Нужная вещь, для меня актуально =|
21. Алексей Ко (Жолтокнижниг) 233 09.05.13 01:54 Сейчас в теме
(17) slavapil, а есть идеи как реализовать подобное не из сервиса? из десктопа работать с окнами в определенной сессии, то что я пока нагуглил это nativApi.
22. Сергей Космачев (ksnik) 225 09.05.13 07:22 Сейчас в теме
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?
То есть терминальная сессия зависает, что делать?
Прикрепленные файлы:
23. Сергей Космачев (ksnik) 225 09.05.13 07:28 Сейчас в теме
пс: Всех с праздниками! :-)
24. Аркадий Кучер (Abadonna) 3661 11.05.13 08:52 Сейчас в теме
(5) kapustinag,
Думаю, нужно отвечать "Нет" на все вопрос

Тогда проще сразу процесс грохнуть, равносильно всем "нет"
25. Александр Капустин (kapustinag) 12.05.13 19:57 Сейчас в теме
(24) Abadonna, Конечно, проще грохнуть процесс. Но при этом могут не сохраниться, например, настройки пользователя. Поэтому нормально завершаем процесс, все пользовательское пусть автоматически сохраняется как положено, а все недоделанные изменения в документах и т.п. - в топку.
Отвечать "ДА" можно для тех пользователей, которые ведут свой обособленный кусок учета. Для кладовщика, например.
А для экономиста или бухгалтера - только "Нет".
26. Юрий Осипов (yuraos) 866 12.05.13 20:40 Сейчас в теме

Отвечать "ДА" можно для тех пользователей, которые ведут свой обособленный кусок учета. Для кладовщика, например.
А для экономиста или бухгалтера - только "Нет".

идея конечно хорошая
...
но как это поймет прога, которая знает про 1С только то,
что у нее иконка желтая (бывает квадратная и еще бывает круглая) ???
27. Аркадий Кучер (Abadonna) 3661 13.05.13 10:31 Сейчас в теме
(26) yuraos,
но как это поймет прога

Понять она сможет, если сопоставить имя терминал-пользователя (оно есть в инфе о сессии) с тем, кому надо "Да", а кому "Нет". Но, имхо, считаю это лишним. Надо просто мочить процессы, у меня вот эта Автозакрытие висящих терминальных сессий безотказно работала, без всяких "побочных эффектов"
28. Вячеслав (slavapil) 126 13.05.13 12:00 Сейчас в теме
(21) Жолтокнижниг,
а есть идеи как реализовать подобное не из сервиса? из десктопа работать с окнами в определенной сессии, то что я пока нагуглил это nativApi.

Не совсем понял вопрос, управление окнами и так происходит не из сервиса, а из программы под десктопом сессии.
29. Алексей Ко (Жолтокнижниг) 233 13.05.13 18:25 Сейчас в теме
(28) slavapil, реализовать туже схему, из десктопа: запустил я программу, а она "правильно" закрывает окна в других сессиях. начальная точка не сервис, а десктоп.
30. Вячеслав (slavapil) 126 14.05.13 08:46 Сейчас в теме
(29) Жолтокнижниг, без сервиса реализовать такой функционал сложно, вроде не хватит прав доступа.
31. Алексей Ко (Жолтокнижниг) 233 14.05.13 09:02 Сейчас в теме
я знаю что сложно и стремится к невозможному, но... хочется
32. Вячеслав (slavapil) 126 14.05.13 11:58 Сейчас в теме
Обновление:
+ добавлены настройки 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 Settings\User\Close1s.ini».
33. Вячеслав (slavapil) 126 14.05.13 12:07 Сейчас в теме
(27) Abadonna,
Автозакрытие висящих терминальных сессий

Если парсить query session, то у меня в активной сессии нормально отображает, а в отключенной вместо активности и времени выдает «диск отключен». Возможно у некоторых пользователей и не работало «Автозакрытие».
34. Аркадий Кучер (Abadonna) 3661 14.05.13 12:40 Сейчас в теме
(33) slavapil, я ее писал под 2003-й сервер, 2008-го, кажись, тогда и в помине не было. А 2003-й точно не выдавал "диск отключен"
35. Вячеслав (slavapil) 126 14.05.13 13:17 Сейчас в теме
(34) Abadonna, у меня выдает такое Windows Server 2003 R2 Standard Edition sp2.
36. Аркадий Кучер (Abadonna) 3661 14.05.13 13:27 Сейчас в теме
(35) slavapil, ну, фиг его знает... я такого не видел, хотя можно и добавить условие на "диск отключен".
Там дел-то... Мне сейчас это неактуально, основные клиенты сидят на крутой выгонялке
37. Нурислам Ямбаев (nurislam) 15.05.13 10:49 Сейчас в теме
Спасибо мне как раз нужно
38. olga pt (pt_olga) 58 20.05.13 14:03 Сейчас в теме
(34) Abadonna, под 2008 переписать не планируете? Актуально

вообще вещь хорошая, если сработает неубивание на определенную группу пользователей, то вообще шик!
Программисты по ночам бывает запускают всякие обработки нужные, на терминальнике висит длинный idle, но убивать нельзя
39. Виктор Клевцов (taiba) 72 21.05.13 14:26 Сейчас в теме
(32) slavapil, интересная идея!

Есть замечания по переводу:

"to_answer_the_question" - это "гениталий на гусенечном ходу", так не пишут, могу предложить вариант - say_yes_on_queryboxes. Кстати, если выскочит окно с Ок/Отмена а не Да/Нет что будет? А было бы неплохо... ;)

"interval_of_session_inactivity" - лучше "session_inactivity_interval"
40. Сергей Викторович (Loader_1C) 21.05.13 22:00 Сейчас в теме
(32) slavapil, спасибо! Еще бы, было бы не плохо, на первой странице версионировать описание, или как там правильнее, описывать изменения от такого-то. Просто предложение.
41. Вячеслав (slavapil) 126 22.05.13 09:06 Сейчас в теме
(40) Loader_1C, Считаю что для конкретно этого проекта, версионность не особо актуальна.
42. Вячеслав (slavapil) 126 22.05.13 09:12 Сейчас в теме
(39) taiba,
Кстати, если выскочит окно с Ок/Отмена а не Да/Нет что будет?

Хороший вопрос. Напомните, в каких случаях выскакивают такие вопросы Ок/Отмена.

Поразмышлял и пришел к выводу что «не хороший» пользователь может получить предупреждение даже с кнопкой ОК, и забросить программу ;)
Значит, исправим и такого пользователя :) в ближайшем обновлении.
43. Виктор Клевцов (taiba) 72 22.05.13 10:21 Сейчас в теме
(42) slavapil,
Напомните, в каких случаях выскакивают такие вопросы Ок/Отмена.

в окнах типовых вроде нет, а вот в самописных может быть какой-нибудь "диалог закрытия программы".
44. Вячеслав (slavapil) 126 22.05.13 11:09 Сейчас в теме
Обновление от 22.05.2013:
+ изменен алгоритм по кнопкам, теперь учитываются диалоговые окна: «Да/Нет», «Ок/Отмена», «Ок» и т.д.
45. Анвар (han) 22.05.13 15:14 Сейчас в теме
А у меня на сервере 2008 SP2 R2 (64бит) почему-то не работает
46. Вячеслав (slavapil) 126 22.05.13 15:30 Сейчас в теме
(45) han, тестировал на своем "стареньком" 2003, как получится потестирую на 2008
47. Maximilian Alekseevich (1cmax) 151 23.05.13 01:52 Сейчас в теме
(7) iov, Длинная капча.. ммм хорошая идея :) есть реализации ? ссылк?
48. ProFix (Alex1Cnic) 23.05.13 09:50 Сейчас в теме
Спасибо, интересно проверю на своем серваках..Win2k8 32 и Win2k8 64бит
49. Вячеслав Иванов (Sjawa2004) 29.05.13 21:54 Сейчас в теме
(13) Прибивает, это конечно хорошо! Но допустим есть внешние COM соединения с другой базой и после нескольких таких прибиваний при повторном входе пользователя в базу они просто не устанавливаются по новой (зависаю)! А перезапускать сервер как-то не сильно хочется! Поэтому автору + за наводку!!!
50. Z Lu (validat) 1 31.05.13 12:14 Сейчас в теме
Вещь нужная, особенно в пятницу, для забывчивых. Всех с праздником, с пятницей и первым днем лета. Мои операторы на семерке закрывают просто терминальный режим и все, предварительно закрыв один эску. Пока разрывов связи нет, поэтому обхожусь так. Зато в проблемных сетях без такой программки не обойтись.
51. andrey dyak (dyak84) 31.05.13 18:27 Сейчас в теме
Автор я так понимаю ето не прграмка а просто бортовая функция сервера терминалов, которая была еще в 2000 сервере. Как многие администраторы которые настраивают сервера про нее не знают ето большая загадка. Но за труд все одно спасибо Так дерджать.
52. Вячеслав (slavapil) 126 03.06.13 08:49 Сейчас в теме
(51) dyak84, не совсем так понимаете, функция отключения сеансов была, и администраторы о ней знают.
Но при таком отключении программы закрываются как при выключении компьютера с не закрытыми программами. 1с8 при таком поведении практически не страдает, а вот 1с7.7 страдала, так как при таком выключении считала, что завершилась крахом и требует монопольного входа для переиндексации. Этот сервис опирается на работу сервера терминалов, ловит момент отключения сессии и закрывает 1С, эмулируя работу пользователя (например, как будто пользователь мышкой нажал в 1с по крестику и кнопкам да или нет).
53. сибирь Коровин (сибирь) 8 21.06.13 08:11 Сейчас в теме
Добрый день. У нас виста. Скачал программу , запустил - в процессах Windows висит процесс close1c - и всё -
в инструкции написано : Сервис установится с именем «Закрытие 1С при отключении сессии».

где мы должны увидеть этот сервис : в пуске нет, в 1с -тоже нет???
54. Вячеслав (slavapil) 126 21.06.13 09:16 Сейчас в теме
(53) сибирь,
В сервисах операционной системы, Пуск->Панель управления->Администрирование->Службы
или Пуск->Панель управления->Администрирование->Службы->Управление компьютером->Службы и приложения->Службы
55. сибирь Коровин (сибирь) 8 21.06.13 09:43 Сейчас в теме
Да, спасибо, вижу. Но вопрос у нас такой. К самому серверу доступа нет, но многие бухгалтера выходят из терминального режима , забыв выйте из 1С, мы полагали, что если эту программу установить на какую-либо рабочую станцию - это позволит автоматом закрывать 1С запущенную на сервере. это наверно ни так?
56. Вячеслав (slavapil) 126 21.06.13 10:14 Сейчас в теме
(55) сибирь,
Этот сервис написан для сервера терминалов, для закрытия 1с в сессиях пользователей терминального сервера. Не для компьютеров пользователей, (устанавливать его нужно только на сервере).


мы полагали, что если эту программу установить на какую-либо рабочую станцию - это позволит автоматом закрывать 1С запущенную на сервере. это наверно ни так?

не так
К самому серверу доступа нет

обратитесь к тому, у кого есть доступ к серверу
57. Andrey Garin (andrey.garin) 23.04.14 16:34 Сейчас в теме
подскажите, будет ли сервис работать на windows server 2008 x64?
58. Сергей Генералов (serg1c) 20 08.10.14 11:02 Сейчас в теме
Нормальная штука, но почему рубит процессы, которые запускаются по заданиям, и не имеют сеанса сервера. Может чего не так делаю? А вообще работает на 2008 R2 нормально без проблем.