gifts2017

Программа (Сервис) закрытия 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
224
.zip 323,16Kb 224 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

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

:D :idea: :?: :!: ;) :evil: :oops: :{} 8-) :o :( :) :|
2. Сергей Викторович (Loader_1C) 07.05.13 20:17
Автору, спасибо! нужная вещь.
3. Юрий Осипов (yuraos) 07.05.13 20:18
Интересная фишка, спрошу своих админов - актульно или нет...
А трудно еще добавить в службу выгонялку уюзеров из конкретной базы
с выводом оповещений?
Штатная выгонялка в типовых 1С не всегда хорошо работает и интерфейс у нее довольно поганенький.
4. Сергей (Che) Коцюра (CheBurator) 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) 08.05.13 01:08
(1) некрасиво... Что за ребячество?
(5) согласен что отвечать да на все- просто опасно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

вообще вещь хорошая, если сработает неубивание на определенную группу пользователей, то вообще шик!
Программисты по ночам бывает запускают всякие обработки нужные, на терминальнике висит длинный idle, но убивать нельзя
39. Виктор Клевцов (taiba) 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) 22.05.13 09:06
(40) Loader_1C, Считаю что для конкретно этого проекта, версионность не особо актуальна.
42. Вячеслав (slavapil) 22.05.13 09:12
(39) taiba,
Кстати, если выскочит окно с Ок/Отмена а не Да/Нет что будет?

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

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

в окнах типовых вроде нет, а вот в самописных может быть какой-нибудь "диалог закрытия программы".
44. Вячеслав (slavapil) 22.05.13 11:09
Обновление от 22.05.2013:
+ изменен алгоритм по кнопкам, теперь учитываются диалоговые окна: «Да/Нет», «Ок/Отмена», «Ок» и т.д.
45. Анвар (han) 22.05.13 15:14
А у меня на сервере 2008 SP2 R2 (64бит) почему-то не работает
46. Вячеслав (slavapil) 22.05.13 15:30
(45) han, тестировал на своем "стареньком" 2003, как получится потестирую на 2008
47. Maximilian Alekseevich (1cmax) 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) 31.05.13 12:14
Вещь нужная, особенно в пятницу, для забывчивых. Всех с праздником, с пятницей и первым днем лета. Мои операторы на семерке закрывают просто терминальный режим и все, предварительно закрыв один эску. Пока разрывов связи нет, поэтому обхожусь так. Зато в проблемных сетях без такой программки не обойтись.
51. andrey dyak (dyak84) 31.05.13 18:27
Автор я так понимаю ето не прграмка а просто бортовая функция сервера терминалов, которая была еще в 2000 сервере. Как многие администраторы которые настраивают сервера про нее не знают ето большая загадка. Но за труд все одно спасибо Так дерджать.
52. Вячеслав (slavapil) 03.06.13 08:49
(51) dyak84, не совсем так понимаете, функция отключения сеансов была, и администраторы о ней знают.
Но при таком отключении программы закрываются как при выключении компьютера с не закрытыми программами. 1с8 при таком поведении практически не страдает, а вот 1с7.7 страдала, так как при таком выключении считала, что завершилась крахом и требует монопольного входа для переиндексации. Этот сервис опирается на работу сервера терминалов, ловит момент отключения сессии и закрывает 1С, эмулируя работу пользователя (например, как будто пользователь мышкой нажал в 1с по крестику и кнопкам да или нет).
53. сибирь Коровин (сибирь) 21.06.13 08:11
Добрый день. У нас виста. Скачал программу , запустил - в процессах Windows висит процесс close1c - и всё -
в инструкции написано : Сервис установится с именем «Закрытие 1С при отключении сессии».

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


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

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

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