Контроль над количеством одновременных подключений пользователей в 1С:Предприятие — критически важная задача для администраторов систем. Без ограничений один сотрудник может случайно или намеренно заблокировать все доступные лицензии, парализовав работу остальных коллег. Особенно актуальна проблема в компаниях с клиент-серверной архитектурой, где количество сеансов напрямую влияет на производительность сервера и стоимость лицензирования.

В этой статье разберём пять проверенных методов ограничения сеансов, включая настройки через конфигуратор, использование RLS (Row-Level Security), регламентные задания и даже программные решения на встроенном языке. Каждый способ подходит для разных версий платформы (8.3, 8.3.20+) и типов баз — от файлового варианта до распределённой инфраструктуры с кластером серверов. Вы узнаете не только как технически реализовать ограничения, но и как это влияет на безопасность данных и оптимизацию затрат на лицензии.

Почему важно ограничивать количество сеансов в 1С

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

  • 💰 Перерасход лицензий. Каждый сеанс занимает одну лицензию (в клиент-серверном варианте). Если пользователь открыл 10 окон, но работает только в одном — остальные 9 лицензий простаивают, блокируя доступ другим.
  • Нагрузка на сервер. Каждый сеанс потребляет оперативную память и процессорное время. При большом количестве "зависших" подключений производительность системы падает в разы.
  • 🔒 Риски безопасности. Забытые открытые сеансы (например, после ухода сотрудника с рабочего места) могут быть использованы злоумышленниками для несанкционированного доступа.
  • 📊 Искажение отчётности. В некоторых конфигурациях (например, 1С:ЗУП) открытые сеансы блокируют редактирование документов, что приводит к ошибкам в расчётах.

По статистике, в компаниях с более чем 50 пользователями до 30% лицензий расходуется впустую из-за неконтролируемых сеансов. Ограничение их количества позволяет сэкономить на покупке дополнительных лицензий и повысить стабильность работы системы.

📊 Как вы сейчас контролируете сеансы в 1С?
Не контролируем
Через конфигуратор
Скриптами на встроенном языке
Используем сторонние решения
Другое

Способ 1: Ограничение через настройки конфигуратора (для файлового и клиент-серверного вариантов)

Самый простой метод — использовать встроенные возможности конфигуратора. Он подходит для всех версий платформы 1С:Предприятие 8.3 и не требует программирования. Инструкция:

  1. Откройте конфигуратор в режиме Администратор (права должны позволять редактировать параметры информационной базы).
  2. Перейдите в меню Администрирование → Поддержка и обслуживание → Настройка сеансов.
  3. В разделе Ограничение количества сеансов установите флажок Ограничивать количество сеансов пользователя.
  4. Укажите максимальное число сеансов (рекомендуемое значение — 2-3 для обычных пользователей и 5 для администраторов).
  5. Сохраните настройки и перезапустите сервер 1С:Предприятия (для клиент-серверного варианта).

Этот метод работает на уровне платформы и блокирует создание новых сеансов, если лимит превышен. Однако у него есть ограничения:

  • 🔄 Не учитывает "зависшие" сеансы (например, при аварийном закрытии программы).
  • 📛 Не позволяет гибко настраивать правила для разных групп пользователей.
💡

Если после настройки ограничения пользователи жалуются на ошибку "Превышено максимальное количество сеансов", проверьте, не остались ли открытыми старые подключения. Их можно принудительно закрыть через Администрирование → Активные пользователи

Способ 2: Использование RLS (Row-Level Security) для гибкого контроля

RLS (Управление доступом на уровне строк) — мощный инструмент, который позволяет не только ограничивать данные, но и контролировать сеансы. Этот метод требует знания встроенного языка, но даёт максимальную гибкость. Например, можно установить разные лимиты для бухгалтеров и менеджеров.

Алгоритм реализации:

  1. Создайте новый объект конфигурации Регламентное задание с периодичностью выполнения 1 минута.
  2. В модуле задания добавьте код, который будет проверять количество сеансов текущего пользователя:
    Процедура Выполнить() Экспорт
    

    Запрос = Новый Запрос;

    Запрос.Текст =

    "ВЫБРАТЬ

    | СеансыРаботыСистемы.Пользователь КАК Пользователь,

    | КОЛИЧЕСТВО(*) КАК КоличествоСеансов

    |ИЗ

    | РегистрСведений.СеансыРаботыСистемы КАК СеансыРаботыСистемы

    |ГДЕ

    | СеансыРаботыСистемы.Активен = ИСТИНА

    |СГРУППИРОВАТЬ ПО

    | СеансыРаботыСистемы.Пользователь";

    Результат = Запрос.Выполнить();

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

    Если Выборка.КоличествоСеансов > 3 Тогда

    Сообщение = Новый СообщениеПользователю;

    Сообщение.Текст = "Превышено количество сеансов (" + Выборка.КоличествоСеансов + "). Закройте лишние окна.";

    Сообщение.Пользователь = Выборка.Пользователь;

    Сообщение.Сообщить();

    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры

  3. Настройте права доступа к регистру СеансыРаботыСистемы для регламентного задания.

Преимущества RLS-метода:

  • 🎯 Гибкая настройка лимитов для разных ролей (например, 5 сеансов для администраторов и 2 для обычных пользователей).
  • 📢 Автоматические уведомления пользователям о превышении лимита.
  • 🔄 Возможность принудительного закрытия лишних сеансов через код.
Как принудительно закрыть сеанс через код?

Используйте метод глобального контекста ЗакрытьСеансыПользователя(). Пример:

Процедура ЗакрытьЛишниеСеансы(Пользователь, МаксКоличество = 3)

Сеансы = ПолучаемСписокСеансовПользователя(Пользователь); // Реализуйте самостоятельно

Если Сеансы.Количество() > МаксКоличество Тогда

Для Каждого Сеанс Из Сеансы Цикл

Если Сеансы.Индекс(Сеанс) >= МаксКоличество Тогда

ЗакрытьСеанс(Сеанс.Идентификатор); // Требует прав администратора

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецПроцедуры

Внимание! Принудительное закрытие может привести к потере несохранённых данных.

Способ 3: Настройка через кластер серверов 1С (для клиент-серверного варианта)

Если вы используете клиент-серверную архитектуру с кластером 1С:Предприятия, ограничить сеансы можно на уровне сервера. Этот метод наиболее надёжен, так как работает до запуска самой базы данных.

Инструкция для Windows-сервера:

  1. Откройте Консоль администрирования кластера серверов 1С (ras.exe).
  2. Подключитесь к центральному серверу кластера.
  3. Выберите нужный рабочий процесс и откройте его свойства.
  4. В разделе Ограничения установите параметр Максимальное количество сеансов на пользователя.
  5. Примените настройки и перезапустите рабочий процесс.

Для Linux-серверов настройка выполняется через файл конфигурации conf.cfg (расположен в каталоге кластера). Добавьте строку:

maxUserSessions = 3

Особенности метода:

Параметр Windows Linux
Требует перезапуска сервера ✅ Да ✅ Да
Поддерживает гибкие правила ❌ Нет (один лимит для всех) ❌ Нет
Работает для файлового варианта ❌ Нет ❌ Нет
Блокирует "зависшие" сеансы ✅ Да ✅ Да
⚠️ Внимание! Настройки кластера применяются ко всем базам данных, подключённым к этому рабочему процессу. Если вам нужны разные лимиты для разных баз — используйте другие методы (например, RLS).

Способ 4: Программное ограничение через обработку "ПроверкаСеансов"

Для компаний с уникальными требованиями (например, разные лимиты для разных отделов) можно разработать кастомную обработку, которая будет запускаться при старте сеанса. Этот метод требует участия программиста , но даёт полный контроль над логикой.

Пример кода для обработки ПриНачалеРаботыСистемы:

Процедура ПриНачалеРаботыСистемы()

ТекущийПользователь = ТекущийПользователь();

ТекущиеСеансы = ПолучаемКоличествоСеансовПользователя(ТекущийПользователь);

// Получаем лимит из справочника "ЛимитыСеансов" по группе пользователя

ГруппаПользователя = ТекущийПользователь.ГруппаДоступа;

Лимит = ПолучаемЛимитСеансовДляГруппы(ГруппаПользователя);

Если ТекущиеСеансы >= Лимит Тогда

Предупреждение("Превышен лимит сеансов (" + Лимит + "). Закройте лишние окна или обратитесь к администратору.");

ЗавершитьРаботуСистемы(Ложь); // Закрываем текущий сеанс

КонецЕсли;

КонецПроцедуры

Для реализации потребуется:

  • 📝 Создать справочник ЛимитыСеансов с полями ГруппаПользователей и МаксКоличество.
  • 🔧 Написать функции ПолучаемКоличествоСеансовПользователя() и ПолучаемЛимитСеансовДляГруппы().
  • 🔒 Настроить права доступа к обработке (чтобы пользователи не могли её обойти).

Создать справочник лимитов|Написать код для обработки ПриНачалеРаботыСистемы|Настроить права доступа|Протестировать на тестовой базе|Обновить рабочую базу-->

Способ 5: Сторонние решения (1C:Fresh, Web-клиент, Cloud)

Если ваша компания использует 1С:Fresh, Web-клиент или облачные решения (например, 1С:ГК в облаке), стандартные методы могут не работать. В этом случае стоит рассмотреть:

  • 🌐 1С:Fresh. Ограничения настраиваются в личном кабинете на сайте 1cfresh.com в разделе Управление пользователями → Лимиты сеансов. Здесь можно установить глобальный лимит для всех пользователей или индивидуальные значения.
  • ☁️ Облачные сервисы (например, 1С:Линк). Обратитесь к провайдеру — многие хостинг-провайдеры предоставляют инструменты для контроля сеансов через панель управления.
  • 🛠️ Сторонние модули. Существуют готовые решения, например:
    • 1С:Администрирование сервера (входит в комплекс 1С:ИТС).
    • Infostart Monitor — инструмент для мониторинга и управления сеансами.
⚠️ Внимание! В облачных решениях настройки могут отличаться от локальных версий. Например, в 1С:Fresh нельзя использовать регламентные задания для контроля сеансов — только встроенные инструменты личного кабинета.

Преимущества сторонних решений:

  • 📊 Визуализация активных сеансов в реальном времени.
  • 🔔 Автоматические оповещения о превышении лимитов (по email или в мессенджеры).
  • 🔧 Возможность принудительного закрытия сеансов без программирования.

Частые ошибки и как их избежать

При настройке ограничений администраторы часто сталкиваются с типичными проблемами. Вот самые распространённые из них и способы их решения:

Ошибка Причина Решение
Ограничение не работает для администраторов В конфигураторе не установлен флажок "Применять к администраторам" В настройках сеансов включите опцию Ограничивать сеансы администраторов
Пользователи жалуются на внезапное закрытие сеансов Слишком агрессивные настройки регламентного задания Увеличьте интервал проверки (например, до 5 минут) и добавьте предупреждения
После обновления платформы ограничения сбросились Настройки хранятся в конфигурации, которая перезаписывается при обновлении Вынесите логику в отдельную обработку или используйте RLS
Не видно активных сеансов в консоли администрирования Недостаточно прав у текущего пользователя Запустите консоль от имени администратора кластера

Ещё одна распространённая проблема — "зависшие" сеансы, которые не закрываются даже после выхода пользователя. Чтобы их удалить:

  1. Откройте Администрирование → Активные пользователи.
  2. Найдите сеансы с статусом Неактивен или Ошибка.
  3. Выделите их и нажмите Завершить сеанс.
💡

Перед массовым закрытием сеансов всегда предупреждайте пользователей — это поможет избежать потери несохранённых данных.

FAQ: Ответы на частые вопросы

Можно ли ограничить сеансы только для определённых пользователей?

Да, для этого подходит метод с RLS или кастомной обработкой. В первом случае настройте регламентное задание так, чтобы оно проверяло только нужных пользователей (по группе доступа или логину). Во втором — добавьте в обработку ПриНачалеРаботыСистемы проверку по списку исключений.

Как узнать, кто превысил лимит сеансов?

Используйте запрос к регистру СеансыРаботыСистемы:

ВЫБРАТЬ

СеансыРаботыСистемы.Пользователь КАК Пользователь,

КОЛИЧЕСТВО(*) КАК Количество

ИЗ

РегистрСведений.СеансыРаботыСистемы КАК СеансыРаботыСистемы

ГДЕ

СеансыРаботыСистемы.Активен = ИСТИНА

СГРУППИРОВАТЬ ПО

СеансыРаботыСистемы.Пользователь

УПОРЯДОЧИТЬ ПО

Количество УБЫВ

Этот запрос вернёт список пользователей, отсортированный по количеству активных сеансов.

Будет ли работать ограничение в файловом варианте 1С?

Да, но с оговорками:

  • Метод через конфигуратор работает и в файловом варианте.
  • RLS и регламентные задания тоже поддерживаются, но требуют запущенного фонового процесса (например, через Агент сервера 1С).
  • Настройки кластера серверов в файловом варианте не применяются.

Для файловой базы оптимально комбинировать настройки конфигуратора и кастомную обработку.

Как ограничить сеансы в мобильном приложении 1С?

Для мобильных клиентов (например, 1С:Мобильная платформа) стандартные методы не работают. Варианты решения:

  • Использовать облачный сервис (например, 1С:Fresh), где лимиты настраиваются в личном кабинете.
  • Разработать собственный бэкенд, который будет контролировать количество подключений к базе.
  • Ограничить доступ на уровне маршрутизатора (например, через MikroTik или Cisco).

В мобильных приложениях также стоит настроить автоматическое закрытие сеансов при бездействии (параметр Timeout в настройках подключения).

Что делать, если после ограничения сеансов пользователи не могут войти в систему?

Вероятные причины и решения:

  • Слишком жёсткий лимит (например, 1 сеанс). Увеличьте значение до 2-3.
  • Ошибка в коде обработки. Проверьте логи сервера на наличие исключений.
  • Конфликт с другими расширениями. Отключите все сторонние модули и проверьте работу системы.
  • Кэш метаданных. Очистите кэш на клиентских машинах (%APPDATA%\1C\1Cv8\).

Если проблема сохраняется, временно отключите ограничения и проверьте настройки пошагово.