Скрипт для отключения пользователей из файловых баз 1с-Предприятия

22.04.10

База данных - Инструменты администратора БД

Скрипт для отключения пользователей из файловых баз 1с-Предприятия. Убивает процессы на локальной машине и сетевые подключения к заданному каталогу. Неважно, какая платформа, 77 или 8Х, да и для других программ тоже можно применять.

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

Наименование Файл Версия Размер
Zakryt1c.zip
.zip 3,09Kb
693
.zip 3,09Kb 693 Скачать

Для чего нужно? Если вы на ночь запланировали кучу обработок, а какая-то с$#а периодически оставляет базу открытой, можно, конечно, понадеяться на ОбработкаОжидания() и ЗавершитьРаботуСистемы().

Вот только если в нужный момент 1с-Предприятие будет обрабатывать длинный отчет, или просто зависнет, или приложение закроется, а процесс останется, то будет облом. Тут нужно рубить шашкой! А шашка - вот она.

Разработка не моя, вот ссылка на первоисточник (c)Александр Кочуров http://v7backup.narod.ru/

Я только выцарапал нужные скрипты из большого и в остальном не нужного мне проекта.

Автор разрешил мне публиковать этот кусок со ссылкой на первоисточник.

Работает с версиями системы  Win2000 prof и старше.

Здесь искал, не нашел разработок для файлового варианта, только для sql. Может, плохо искал? :)

 

Замеченные мною (bulpi) баги:

Процессы, запущенные в терминальном режиме, закрываются, если только

1)пользователь, запускающий скрипт - Администратор

или

2)пользователь, запускающий скрипт, и пользователи терминалов входили под одним логином

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2981    13    1    

34

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3545    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177760    1073    0    

849

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27383    79    146    

59

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61320    88    59    

73

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11746    5    9    

7

Брандмауэр для сервера 1С Предприятие 8 - внешнее управление сеансами

Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    31111    31    18    

47

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    10986    5    8    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Abadonna 3958 23.04.10 06:58 Сейчас в теме
(0)
Здесь искал, не нашел разработок для файлового варианта, только для sql.

Это что за шутки? Убивается процесс , при чем тут какой вариант базы?
Может, плохо искал?

Именно, вот только моих (а и другие наверняка есть)
http://infostart.ru/public/66153/
http://infostart.ru/public/16662/
http://infostart.ru/public/14758/
http://infostart.ru/public/14569/
http://infostart.ru/public/59436/
да и вообще есть taskkill родной виндососовский
2. bulpi 215 23.04.10 08:12 Сейчас в теме
(1)
Спасибо. А все эти замечательные разработки отключают подключение к каталогу базы ПО СЕТИ (что абсолютно необходимо при использовании файл-сервера) ?
3. bulpi 215 23.04.10 13:35 Сейчас в теме
(1)
Ну так как? Или дальше - тишина (с) Шекспир ? :)
Оно конечно, можно поплеваться ссылками и забыть. Добрее надо быть к людям. Не все ж такие умные, как Вы. :D
9. Abadonna 3958 24.04.10 20:11 Сейчас в теме
А теперь могу и разжевать:
http://infostart.ru/public/14758/ и
http://infostart.ru/public/16662/
- отрубят всех при работе в терминальном режиме
http://infostart.ru/public/19242/ - закроет все сетевые файлы, когда движок у каждого юзверя, а база - на файловом сервере (т.е как раз и отрубит их по сети)
А, кроме того, в (1) я писал про taskkill, так что смотри и (8)
P.S. И не раздражай модератора :D Шучу
4. jmw 60 24.04.10 07:55 Сейчас в теме
У меня почему-то на 147 строчку ругается:
Const ForReading = 1, ForWriting = 2, ForAppending = 8 ' константа для объекта Scripting.FileSystemObject

Да и зачем изобретать такой сложный велосипед, если достаточно одной команды:
TASKKILL /F /IM 1c* /T
5. bulpi 215 24.04.10 16:23 Сейчас в теме
(4)
Насчет taskkill , пожалуй, согласен. Но та часть, которая реализует отключение по сети , с помощью taskkill никак не сделается. А насчет ошибки - ???? без комментариев. Никогда не было. Какая система?
6. Abadonna 3958 24.04.10 16:37 Сейчас в теме
(4)
Ну так как? Или дальше - тишина (с) Шекспир ?

Если ты считаешь, что мое драгоценной внимание, будет целиком посвящено данной разработке, то ты сильно ошибаешься ;) :D
7. bulpi 215 24.04.10 17:49 Сейчас в теме
(6) Кто сказал "А", должен говорить и "Б". Так как насчет отключения процессов по сети? Времени много не надо, просто ДА или НЕТ.
8. Abadonna 3958 24.04.10 20:03 Сейчас в теме
Кто сказал "А", должен говорить и "Б"

Для начала: Б. Доволен?

taskkill [/s компьютер] [/u домен\пользователь [/p пароль]]] [/fi имя_фильтра] [/pid код_процесса]|[/im имя_образа] [/f][/t]

Параметры
/s компьютер
Указывает имя или IP-адрес удаленного компьютера (не используйте обратную косую черту). По умолчанию используется локальный компьютер.
/u домен\
пользователь
Выполнение команды с разрешениями учетной записи пользователя, который указан как пользователь или домен\пользователь. По умолчанию используются разрешения текущего вошедшего пользователя компьютера, с которого поступила эта команда.
/p пароль
Определяет пароль учетной записи пользователя, заданной параметром /u.
/fi имя_фильтра
Показать

Обычно [/s компьютер] даже очень достаточно, чтобы отрубить процесс по сети
10. bulpi 215 24.04.10 23:21 Сейчас в теме
(8),(9)
Спасибо.
Но я буду нудным. taskkill - замечательная вещь для закрытия процессов на самой машине. Но для закрытия процессов, обращающихся к сетевой папке, он не годится. Ключ /S не поможет, т.к. заранее неизвестно имя или адрес компа, где зарывать. Вот разработка из п.9 (http://infostart.ru/public/19242/)
это вроде бы то, что надо. Но и тут засада! Где режим командной строки ? Задача состоит в том, чтобы ночью, когда нет никого, запустить программку, а потом уже что кому надо, кому бэкап, кому переиндексацию и др. Если нет режима командной строки в замечательной Вашей программке CloseNetFiles, то где возьмется НОЧЬЮ оператор, который нажмет нужные кнопки?
11. bulpi 215 26.04.10 21:44 Сейчас в теме
Мне кажется, пора подвести итоги и закрыть дискуссию :) На сайте много подобных разработок, я действительно плохо искал. Однако разработки, полностью перекрывающей возможности обсуждаемой, пока не нашлось (может , она и есть, сайт большой). Таким образом, имеем слабые элементы новизны :) и позволяем публикации жить. Кому-нибудь, может быть, пригодится.
12. Enya_06 28.04.10 09:05 Сейчас в теме
Разработочка вполне не плохая...очень часто нужна бывает))) вот только когда будет универсальная... :(
Oleg_nsk; +1 Ответить
13. bulpi 215 28.04.10 12:24 Сейчас в теме
(12)Универсальная в каком смысле?
14. Enya_06 28.04.10 20:08 Сейчас в теме
(13)Да у каждой обработки свои баги...но видимо пока идеала никто еще не накодил! Да просто очень полезная вещь, от юзеров которые по каким то либо причинам 1с ку не вырубают в офисах)) Экономит время и нервы)
15. Sykoku 101 29.04.10 11:57 Сейчас в теме
Судя по коду, вся "сложность" данной обработки на Басике - получение списка пользователей и скармливание оного все тому же горячо нелюбимому TaskKill'у.
Это делается проще и быстрее. да еще и штатными средствами.

query session > c:\term.txt
for /F "eol=; tokens=3 skip=3" %i in (c:\term.txt) do tsdiscon %i

При этом хотелось бы напомнить, что оное действие аналогично нажатию кнопки "Reset".

Нормальные люди используют
echo y | logoff rdp-tcp // (или указывают свой протокол.)

Это штатная команда для logoff'а всех сеансов на некотором протоколе, т.е. на TCP/IP (имена соединений перечисляются в Terminal Server Configuration; если есть еще Citrix, то могут быть еще ica-tcp, ica-ipx)

При запуске "logoff rdp-tcp" эта прога спрашивает "If you reset this session, all users using this protocol will be logged off. Continue (y/n)?". "echo y" заставляет ответить этой команде "y"

Для удаления всех соединений, кроме себя (текущего):
код
FOR /F "eol=> skip=1 tokens=1,2,3" %%i IN ('quser') DO RESET SESSION %%k

(можно просто tokens=3 и использовать reset session %%i; в моем варианте с tokens=1,2,3 в %%i будет имя пользователя, которое можно передавать в скрипт, выполняющийся в DO, а в %%k - session id). Символом ">" помечается текущее соединение (%%i включает в себя этот символ), поэтому eol=> эту строку "комментируем" и не учитываем при убивании сеансов.

А вот если задача стоит завершить сеанс корректно, то тогда придется в глобальном модуле вставить

ОбработкаОжидания("ЗавершениеРаботы1С",300);

И вставить процедуру

Процедура ЗавершениеРаботы1С()
ТекВр=ТекущееВремя();
Если (ТекВр>"23:00:00") Тогда
ЗавершитьРаботуСистемы(0);
КонецЕсли;
КонецПроцедуры
19. bulpi 215 29.04.10 17:16 Сейчас в теме
(15)
Хм.. сколько оказывается всего умного придумали разные умные люди! :D Но все таки по сети так не отключиться, ИМХО, только на этом копьютере. Вариант с ОбработкойОжидания() в 1с точно не годится, даже не надо его вспоминать по вышеизложенным причинам.
20. Sykoku 101 29.04.10 19:18 Сейчас в теме
(19)
А кто сначала мешает попытаться сначала "по хорошему" выгнать, а затем - по плохому?
Сложность в проверке условий? - Разнести в Scheduled с интервалом в 5-10 минут. И выполнять от имени Админа.
21. bulpi 215 30.04.10 11:29 Сейчас в теме
(20)
Согласен. Но меня и со скриптом заклевали по поводу отсутствия новизны. А если бы я еще написАл про тривиальную ОбработкаОжидания... Вобще бы линчевали морально ;)
16. Sykoku 101 29.04.10 12:07 Сейчас в теме
Здесь искал, не нашел разработок для файлового варианта, только для sql. Может, плохо искал? :)


Плохо читал свой-же код.
cscript Kill1c.vbs //x //Nologo //t:60 "C:\Program Files\1Cv77sql\BIN\1cv7s.exe" "C:\1C\temp" "C:\temp\log.log"

1Cv77sql - это типа файл-серверный вариант?
18. bulpi 215 29.04.10 17:13 Сейчас в теме
(16)
Нет, sql здесь ни при чем. Просто файл 1cv7s открывает и sql базы, и файловые. У меня были файловые базы, а sql-версию использовал просто для удобства - патч Саурона только для sql.
17. Sykoku 101 29.04.10 12:08 Сейчас в теме
Можно еще правами на сервере поиграться. Например.

Закладка Sessions позволяет установить ограничения сеанса.

Вы можете установить период неактивности, по истечении которого производится автоматическая разрегистрация. Это особенно полезно в модемных соединениях; освободившееся соединение может использовать другой пользователь. Особо умные пользователи могут "обманывать" неактивность, просто периодически перемещая мышь. Вот почему вы можете еще установить максимальное время активности сеанса. Это предотвращает "монополизирование" пользователем соединения. На закладке Sessions также можно указать, что делать при отключении пользователя - принудительно завершить сеанс или оставить его работать. Закрытие сеансов предотвращает сервер от "забивания" работающими приложениями. С другой стороны, если оставить сеанс работающим, то пользователь может позднее снова подключиться к нему и продолжить работу. Я рекомендую завершать сеансы при отключении, но оставлять работать сеансы администраторов и отдельных важных пользователей. Администраторы часто запускают процессы, требующих много времени для свой работы. Если разрешить пользователю отключаться без закрытия саенсов, то пользователь может подключиться, запустить приложение, отключиться, пойти пообедать, потом снова вернуться, подключиться и закончить работу.
:D
22. erudite 22.02.11 12:13 Сейчас в теме
Автору - зачет (в т.ч. за грамотные ответы). Поставил +
Оставьте свое сообщение