Зависшие подключения через 1С:Линк: как выйти самому и отключить других
Содержание
Чтобы завершить сеанс в 1С:Линк, выйдите из программы через главное меню: значок меню слева вверху → Файл → Выход. Если просто закрыть вкладку браузера или окно тонкого клиента
, сеанс на стороне базы может остаться жить и держать лицензию, пока его не закроет таймаут или администратор.
Отсюда и типичная боль: утром сотрудник не может войти, потому что «его» вчерашнее подключение ещё висит, а свободных лицензий нет. Решается это тремя вещами: правильным выходом, ручным отключением чужих подключений и таймаутами, которые закрывают брошенные сеансы без участия администратора.
Как штатно завершить сеанс 1С:Линк из интерфейса
1С:Линк — это канал удалённого доступа к базе, которая стоит на компьютере или сервере в офисе. Сама база работает обычной платформой 1С:Предприятие 8.3. Поэтому и выход из неё — обычный, платформенный. Разница только в том, через что вы подключены.
Тонкий клиент
- Сохраните и закройте открытые документы.
- Нажмите значок главного меню (три полоски) в левом верхнем углу.
- Выберите
Файл → Выход. - Если программа спросит о несохранённых данных, ответьте на вопрос — не прерывайте диалог.
Тонкий клиент сообщит серверу о завершении, и сеанс исчезнет из списка активных пользователей за несколько секунд.
Веб-клиент в браузере
В браузере порядок тот же: главное меню → Файл → Выход. После этого вкладка покажет страницу с предложением войти снова — значит, сеанс закрыт.
Крестик на вкладке и закрытие браузера — не выход. Браузер не всегда успевает отправить серверу сигнал о завершении, особенно при нестабильном интернете. Такой сеанс становится «брошенным».
Сравнение способов выхода
| Действие пользователя | Что происходит с сеансом | Лицензия освобождается |
|---|---|---|
Файл → Выход | Закрывается сразу | Сразу |
| Закрыл вкладку браузера | Может остаться висеть | После таймаута |
| Пропал интернет, ноутбук ушёл в сон | Остаётся висеть | После таймаута или вручную |
| Завершён процесс клиента через диспетчер задач | Остаётся висеть | После таймаута или вручную |
💡 Если сотрудники постоянно работают из браузера, договоритесь о простом правиле: конец дня — Файл → Выход, а не крестик. Это снимает большую часть проблем с лицензиями.
Как администратору отключить сеанс другого пользователя
Сначала посмотрите, кто сейчас в базе. Сделать это можно тремя путями.
Список активных пользователей
- 👤 В режиме 1С:Предприятие:
Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет в меню, включите его: главное меню →Сервис → Параметры→ флажок «Отображать команду “Все функции”». - 🛠 В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) тот же список открывается из раздела
Администрирование → Обслуживание. - 🔧 В Конфигураторе:
Администрирование → Активные пользователи.
В списке видно пользователя, компьютер, приложение (тонкий клиент, веб-клиент, фоновое задание), время начала сеанса. Сеансы через 1С:Линк обычно отображаются как веб-клиент или тонкий клиент, подключённый через веб-сервер.
Файловая база: блокировка вместо «убийства»
В файловом варианте платформа не даёт отключить отдельный сеанс кнопкой. Штатный способ — установить блокировку работы пользователей:
- Откройте
Администрирование → Обслуживание. - Найдите команду «Блокировка работы пользователей».
- Укажите время начала, сообщение для пользователей и код разрешения.
- Нажмите «Установить блокировку».
Пользователи увидят предупреждение, а по наступлении времени блокировки программа сама завершит их сеансы. Новые входы будут запрещены. Администратор может войти, указав в параметрах запуска /UC<код разрешения>.
Перед блокировкой предупредите сотрудников: несохранённые документы пропадут.
Клиент-серверная база: консоль кластера
Если за 1С:Линк стоит сервер 1С:Предприятия, отдельный сеанс можно удалить:
- Запустите «Администрирование серверов 1С:Предприятия».
- Раскройте: центральный сервер →
Кластеры→ кластер →Информационные базы→ нужная база →Сеансы. - Найдите сеанс по имени пользователя и времени начала.
- Правой кнопкой →
Удалить.
То же самое из командной строки через утилиту rac (на сервере должна работать служба ras):
rac cluster list
rac session list --cluster=<uuid кластера>
rac session terminate --cluster=<uuid кластера> --session=<uuid сеанса>
Если на кластере заданы администраторы, добавьте к командам --cluster-user и --cluster-pwd. Полный список параметров выводит rac help session.
Удалённый сеанс обрывается мгновенно. Всё, что пользователь не записал, будет потеряно. Перед удалением позвоните ему или напишите.
Программное завершение сеанса из кода 1С
Когда нужно закрывать сеансы автоматически — например, по кнопке в своей обработке или перед ночным обменом, — пригодятся методы встроенного языка.
Выход текущего пользователя
На клиенте сеанс завершает метод ЗавершитьРаботуСистемы(). Параметр Ложь отключает вопрос «Завершить работу?», но обработчики «Перед завершением работы» всё равно выполнятся:
&НаКлиенте
Процедура ВыйтиИзБазы(Команда)
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры
Есть и жёсткий вариант — ПрекратитьРаботуСистемы(). Он закрывает программу без обработчиков завершения. Применяйте его только там, где продолжать работу нельзя.
Список сеансов базы
Чтобы показать, кто подключён, на сервере используют ПолучитьСеансыИнформационнойБазы():
&НаСервереБезКонтекста
Функция СписокСеансов()
Результат = Новый Массив;
ТекущийНомер = НомерСеансаИнформационнойБазы();
Для Каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
ИмяПользователя = ?(Сеанс.Пользователь = Неопределено, "<нет>", Сеанс.Пользователь.Имя);
Строка = СтрШаблон("№%1 | %2 | %3 | %4 | с %5%6",
Формат(Сеанс.НомерСеанса, "ЧГ=0"),
ИмяПользователя,
Сеанс.ИмяКомпьютера,
ПредставлениеПриложения(Сеанс.ИмяПриложения),
Формат(Сеанс.НачалоСеанса, "ДФ='dd.MM.yyyy HH:mm'"),
?(Сеанс.НомерСеанса = ТекущийНомер, " (это вы)", ""));
Результат.Добавить(Строка);
КонецЦикла;
Возврат Результат;
КонецФункции
Для чтения сеансов нужны административные права.
Запрет новых входов программно
Объект БлокировкаСеансов делает то же, что команда «Блокировка работы пользователей», но из кода:
&НаСервере
Процедура ЗапретитьВходНаВремя(Минут)
Блокировка = Новый БлокировкаСеансов;
Блокировка.Начало = ТекущаяДатаСеанса();
Блокировка.Конец = ТекущаяДатаСеанса() + Минут * 60;
Блокировка.Сообщение = "Регламентные работы. Вход временно закрыт.";
Блокировка.КодРазрешения = "Служебный";
Блокировка.Установлена = Истина;
УстановитьБлокировкуСеансов(Блокировка);
КонецПроцедуры
💡 Сама блокировка закрывает дверь только для новых входов. Уже открытые сеансы продолжают работать. В типовых конфигурациях их завершает механизм БСП, который периодически проверяет блокировку на стороне клиента. В самописной конфигурации это придётся сделать самому, например обработчиком ожидания, который вызывает ЗавершитьРаботуСистемы(Ложь).
Отключить чужой сеанс в клиент-серверной базе из кода можно через COM-соединение с агентом сервера или через rac. В файловой базе такого механизма нет — только блокировка.
Таймауты: когда брошенный сеанс закроется сам
Брошенный сеанс не живёт вечно. Платформа переводит его в спящее состояние, а затем завершает. Вопрос лишь в том, сколько ждать.
Клиент-серверная база
В свойствах информационной базы в консоли кластера есть два параметра, оба в секундах:
- ⏸ «Засыпание пассивного сеанса» — через сколько секунд без связи с клиентом сеанс засыпает и отпускает лицензию.
- ⏹ «Завершение спящего сеанса» — через сколько секунд спящий сеанс удаляется окончательно.
Пример настройки для офиса, где люди работают через 1С:Линк из дома:
| Параметр | Значение | Что получится |
|---|---|---|
| Засыпание пассивного сеанса | 1200 | Через 20 минут без связи лицензия свободна |
| Завершение спящего сеанса | 28800 | Через 8 часов сеанс удалён |
Слишком маленькое засыпание вредно: при коротком обрыве интернета пользователь потеряет сеанс и будет входить заново. Десяти–двадцати минут обычно хватает.
Файловая база
У файловой базы нет консоли кластера, и тонкой настройки таймаутов из интерфейса нет. Брошенный сеанс через веб-сервер завершается, когда веб-сервер перестаёт получать запросы от клиента. На практике это может занять заметное время. Если брошенные сеансы мешают работе ежедневно, есть два пути:
- Дисциплина выхода через
Файл → Выход. - Перевод базы на клиент-серверный вариант, где таймауты настраиваются явно.
Что делать, если сеанс 1С:Линк завис
Зависание выглядит по-разному. Подберите свой симптом:
Параметр /ClearCache добавляют к строке запуска тонкого клиента: в окне запуска выберите базу → Изменить → дойдите до последней страницы мастера → в поле «Дополнительные параметры запуска» впишите /ClearCache. После успешного входа параметр лучше убрать, иначе кэш будет очищаться при каждом запуске и вход замедлится.
Принудительная очистка: перезапуск служб и файлы блокировки
Если отдельные сеансы снять не удаётся, остаётся радикальный путь — перезапуск на стороне компьютера, где стоит база.
Любой из шагов ниже обрывает работу ВСЕХ пользователей базы. Делайте это вне рабочего времени или после того, как все вышли и сохранили документы.
Порядок действий — от мягкого к жёсткому:
- Перезапуск программы 1С:Линк на компьютере с базой. Удалённые подключения оборвутся, вместе с ними закроются сеансы веб-клиента.
- Перезапуск веб-сервера, если база опубликована через отдельный IIS или Apache. Для IIS —
iisresetв командной строке от администратора. Для Apache — перезапуск его службы в оснасткеservices.msc. - Перезапуск службы сервера 1С:Предприятия для клиент-серверной базы. Служба называется «Агент сервера 1С:Предприятия 8.3» и находится там же, в
services.msc. - Перезагрузка компьютера — когда процессы не завершаются ни одним способом.
Файл блокировки файловой базы
В каталоге файловой базы рядом с 1Cv8.1CD лежит служебный файл 1Cv8.1CL. Платформа ведёт в нём список подключений. Иногда после аварийного отключения он остаётся и мешает: база считает, что в ней кто-то есть.
Удалять 1Cv8.1CL можно только когда точно нет ни одного процесса, работающего с базой:
- 🖥 закрыты все клиенты 1С на этом компьютере;
- 🌐 остановлен 1С:Линк и веб-сервер, через который опубликована база;
- 🔍 в диспетчере задач нет процессов
1cv8.exe,1cv8c.exe,httpd.exeилиw3wp.exe, связанных с базой.
Удаление файла при работающих сеансах может повредить базу. Сначала сделайте копию каталога базы — это займёт пару минут, а спасёт данные.
Чего делать не нужно: удалять сам файл 1Cv8.1CD, переносить базу в новый каталог «чтобы отцепить сеансы», переустанавливать платформу. Сеанс так не закроете, а проблем добавите.
Журнал регистрации: кто и как завершал сеансы
Если зависания повторяются, ищите закономерность в журнале регистрации. В типовых конфигурациях он открывается из Администрирование → Обслуживание, в любой конфигурации — через Все функции → Стандартные → Журнал регистрации.
Как настроить отбор :
- Откройте журнал и нажмите «Установить отбор».
- В событиях оставьте
Сеанс. Начало,Сеанс. ЗавершениеиСеанс. Аутентификация. - Укажите пользователя и период, когда были проблемы.
Что смотреть в результате:
- 🔁 есть «Начало», но нет «Завершения» — сеанс был брошен, а не закрыт выходом;
- ⏰ много сеансов одного пользователя за день — у него рвётся связь, стоит проверить домашний интернет или Wi-Fi;
- 🌙 сеансы «висят» ночью — кто-то оставляет вкладку открытой или компьютер не выключается;
- 🧑💻 входы под одним логином с разных компьютеров одновременно — учётку делят несколько человек, и лицензий не хватает именно поэтому.
Для клиент-серверной базы глубже копает технологический журнал. Его включают файлом logcfg.xml в каталоге conf платформы. Это инструмент для администратора: журнал быстро растёт, поэтому включайте его на время диагностики и затем отключайте.