В практике администрирования 1С:Предприятие встречается крайне неприятная ситуация: при запуске базы в списке выбора пользователей остается всего один человек (обычно администратор) или список вовсе пуст. При этом, если зайти в режим «Предприятие», мы видим, что в справочнике Пользователи все записи на месте, но в их карточках указано: «Нет пользователя информационной базы». Любая попытка создать пользователя заново или перезаписать существующего приводит к «мертвому» зависанию системы.
Разберем детально, почему это происходит и как восстановить работоспособность базы, основываясь на техническом анализе системных таблиц и опыте решения подобных инцидентов.
Для начала проанализируем архитектуру хранения данных. В системе 1С информация о пользователях разделена на два независимых слоя:
Пользователи. Это обычная таблица в базе данных, где хранятся ФИО, подразделения и настройки прав.v8users. Именно здесь хранятся логины, пароли и уникальные идентификаторы (UUID).Связь между ними осуществляется по UUID. Если системная таблица v8users повреждается, очищается или блокируется, 1С «теряет» связь. Справочник видит записи, но не находит для них соответствующих учетных записей в системной части. Зависание же при попытке записи нового пользователя часто свидетельствует о наличии deadlock (мертвой блокировки) на уровне SQL-сервера или повреждении индексов в системных таблицах Params или Config.
Проанализируем ситуацию, переключив базу в файловый режим. Как показывает практика, если проблема исчезает при выгрузке базы в формат .dt и загрузке в файловый вариант, значит, корень зла кроется не в данных конфигурации, а во взаимодействии сервера приложений 1С и SQL-сервера.
Рассмотрим порядок действий для проверки:
.dt.Часто причиной «зависания» при записи пользователя является некорректное состояние сеансов или кэша конфигурации на сервере. Разберем, как произвести «жесткую» очистку:
srvinfo (путь по умолчанию: C:\Program Files\1cv8\srvinfo).snccntx — это кэш сеансовых данных. Полностью удалим содержимое этой папки.Эта процедура принудительно сбросит все зависшие транзакции и системные блокировки, которые могли препятствовать обращению к таблице v8users.
Чтобы понять, видит ли платформа пользователей на системном уровне, попробуем выполнить простую диагностику с помощью внешней обработки. Рассмотрим пример кода, который позволит нам вывести реальный список пользователей ИБ, минуя интерфейсные блокировки:
ВыборкаИБ = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ТекПользователь Из ВыборкаИБ Цикл
Сообщить("Логин: " + ТекПользователь.Имя + " | UUID: " + ТекПользователь.УникальныйИдентификатор);
КонецЦикла;
Если при выполнении этого кода система также «зависает», это подтверждает повреждение структуры таблицы v8users на стороне SQL-сервера.
Рассмотрим ситуацию, когда стандартные средства (ТИИ, выгрузка/загрузка) не помогают. Опытные администраторы могут заглянуть «под капот» базы данных. Выясним, как проверить наличие данных в системной таблице. Используем SQL-запрос:
SELECT * FROM v8users
Если таблица пуста или содержит только одного пользователя, а вы уверены, что их должно быть много, значит, произошло аварийное очищение таблицы (например, при некорректном обновлении платформы с версии 8.3.12 на 8.3.14). В этом случае помогает восстановление таблицы из бэкапа или полная пересоздание связей.
Важный момент: Если вы решили вручную очистить таблицу v8users через команду TRUNCATE TABLE, помните, что после этого Конфигуратор позволит войти в базу без пароля, но вам придется вручную сопоставлять каждого созданного пользователя с элементами справочника Пользователи.
Проанализируем опыт коллег: иногда «пропажа» пользователей происходит в первый час работы после обновления версии платформы 1С. Чтобы избежать подобных коллизий, рекомендуется следующий алгоритм «чистого» обновления:
.dt..dt в эту новую базу.Этот метод гарантирует, что системные таблицы SQL будут пересозданы платформой с нуля в актуальном формате, что исключает ошибки несовместимости индексов.
Если в вашей 1С:Зарплата и Управление Персоналом пропали пользователи, не спешите паниковать. В первую очередь проверьте работу в файловом режиме и очистите серверный кэш snccntx. Если это не помогло, используйте метод пересоздания базы через выгрузку/загрузку .dt в новую SQL-структуру — в 90% случаев это полностью решает проблему зависаний и восстанавливает видимость учетных записей.