Часто в организациях возникает потребность использовать одну учетную запись 1С для нескольких сотрудников (например, для кладовщиков или операторов), работающих посменно или параллельно с разных рабочих мест. Однако стандартные или программные механизмы защиты могут препятствовать этому: при входе второго пользователя система выдает ошибку «Сеанс завершен администратором» и выбрасывает первого. Рассмотрим подробно, почему это происходит и как настроить стабильную параллельную работу в конфигурации 1С:УПП.
Прежде чем приступать к анализу программного кода, проанализируем базовые настройки безопасности в самой информационной базе. В платформе 1С:Предприятие предусмотрен штатный механизм ограничения количества сеансов. Проверим его состояние:
Администрирование — Пользователи.Прочие.Если галочка снята, но проблема сохраняется, значит, ограничение реализовано на уровне программного кода или настроек серверного кластера.
Выясним причину вылета сеанса в коде. В типовых конфигурациях, таких как УПП 1.3, часто встречаются доработки, ограничивающие работу под одним логином для экономии лицензий или исключения коллизий данных. Проанализируем ситуацию с помощью глобального поиска (клавиши Ctrl + Shift + F).
Нам необходимо найти места, где система анализирует текущие подключения. Введем в строку поиска следующий текст: ПолучитьСеансыИнформационнойБазы. Искать следует во всей конфигурации, но особое внимание уделим следующим модулям:
Рассмотрим пример типичного кода, который может принудительно завершать «старые» сеансы при входе «нового» пользователя под тем же именем:
Процедура ПриНачалеРаботыСистемы()
ТекущиеСеансы = ПолучитьСеансыИнформационнойБазы();
Для Каждого Сеанс Из ТекущиеСеансы Цикл
Если Сеанс.ИмяПользователя = ИмяПользователя()
И Сеанс.НомерСеанса <> НомерСеансаИнформационнойБазы() Тогда
// Здесь может быть вызов функции завершения сеанса
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Если вы нашли подобный блок в процедурах ПередНачаломРаботыСистемы или ПриНачалеРаботыСистемы, его необходимо закомментировать или добавить условие-исключение для конкретного пользователя.
Разберем по шагам ситуацию, когда пользователи заходят через терминальный сервер (RDP). Несмотря на то что учетные записи Windows у сотрудников разные, внутри 1С они используют один логин. Проанализируем параметры идентификации компьютера.
Иногда система защиты ориентируется на имя компьютера. Если оба пользователя работают на одном терминальном сервере, функция ИмяКомпьютера() вернет одинаковое значение для обоих. Если код доработки проверяет связку «Пользователь + Имя компьютера», и при этом пользователи работают с разных физических ПК через RDP, возможны конфликты кэша.
Для устранения технических сбоев на уровне файловой системы выполним очистку кэша для пользователя 1С на терминальном сервере. Удалим содержимое папок:
%AppData%\1C\1Cv8\%LocalAppData%\1C\1Cv8\Проанализируем параметры информационной базы в консоли администрирования кластера серверов 1С. В редких случаях проблема может быть вызвана настройками сеансов на уровне кластера:
Администрирование серверов 1С Предприятия.Свойства нашей базы.Сеансы. Если при входе второго пользователя первый сеанс помечается как «Спящий» или сразу исчезает с ошибкой «Сеанс завершен администратором», это подтверждает наличие команды ЗавершитьРаботуСистемы() или Terminate() в коде.Выясним, не используются ли в вашей базе отраслевые решения (например, от «Рарус» или «ИТРП»), которые интегрированы в УПП. Такие модули часто защищены Системой Лицензирования и Конфигурирования (СЛК).
Даже если в самой 1С разрешено несколько сеансов, сервер СЛК может иметь жесткое ограничение: «одна лицензия на одно имя пользователя». В этом случае при попытке занять вторую лицензию под тем же логином, сервер защиты может аннулировать первый ключ, что приведет к аварийному завершению работы 1С у первого сотрудника. Для решения проверьте настройки в консоли сервера СЛК и убедитесь, что количество доступных программных ключей соответствует количеству работающих сотрудников.
Подводя итог, можно сказать, что в 90% случаев в УПП 1.3 данная проблема является следствием кастомного кода, написанного для контроля лицензий. Рекомендуем использовать Глобальный поиск по ключевым словам НомерСеанса, ПолучитьСеансы и ЗавершитьРаботу. Это позволит быстро локализовать участок кода, который «выбивает» коллег из базы, и адаптировать его под ваши задачи.