Что делать, если в 1С:ЗУП пропали все пользователи информационной базы и программа зависает при их создании?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

В практике администрирования 1С:Предприятие встречается крайне неприятная ситуация: при запуске базы в списке выбора пользователей остается всего один человек (обычно администратор) или список вовсе пуст. При этом, если зайти в режим «Предприятие», мы видим, что в справочнике Пользователи все записи на месте, но в их карточках указано: «Нет пользователя информационной базы». Любая попытка создать пользователя заново или перезаписать существующего приводит к «мертвому» зависанию системы.

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

Выясняем причину: почему исчезают пользователи ИБ

Для начала проанализируем архитектуру хранения данных. В системе 1С информация о пользователях разделена на два независимых слоя:

  1. Прикладной уровень: справочник Пользователи. Это обычная таблица в базе данных, где хранятся ФИО, подразделения и настройки прав.
  2. Системный уровень: таблица пользователей информационной базы (ИБ). В SQL-варианте это системная таблица v8users. Именно здесь хранятся логины, пароли и уникальные идентификаторы (UUID).

Связь между ними осуществляется по UUID. Если системная таблица v8users повреждается, очищается или блокируется, 1С «теряет» связь. Справочник видит записи, но не находит для них соответствующих учетных записей в системной части. Зависание же при попытке записи нового пользователя часто свидетельствует о наличии deadlock (мертвой блокировки) на уровне SQL-сервера или повреждении индексов в системных таблицах Params или Config.

Шаг 1: Диагностика режима работы базы

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

Рассмотрим порядок действий для проверки:

  1. Выполним выгрузку информационной базы в файл .dt.
  2. Создадим пустую файловую базу и загрузим туда полученный файл.
  3. Если в файловой базе пользователи появились и успешно записываются — проблема в серверных кэшах или блокировках SQL.

Шаг 2: Очистка серверных кэшей и временных данных

Часто причиной «зависания» при записи пользователя является некорректное состояние сеансов или кэша конфигурации на сервере. Разберем, как произвести «жесткую» очистку:

  1. Остановим службу «Агент сервера 1С:Предприятия».
  2. Перейдем в каталог srvinfo (путь по умолчанию: C:\Program Files\1cv8\srvinfo).
  3. Найдем папку с GUID вашей проблемной базы. Внутри нее нас интересует папка snccntx — это кэш сеансовых данных. Полностью удалим содержимое этой папки.
  4. Запустим службу агента.

Эта процедура принудительно сбросит все зависшие транзакции и системные блокировки, которые могли препятствовать обращению к таблице v8users.

Шаг 3: Программная проверка списка пользователей

Чтобы понять, видит ли платформа пользователей на системном уровне, попробуем выполнить простую диагностику с помощью внешней обработки. Рассмотрим пример кода, который позволит нам вывести реальный список пользователей ИБ, минуя интерфейсные блокировки:


ВыборкаИБ = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ТекПользователь Из ВыборкаИБ Цикл
    Сообщить("Логин: " + ТекПользователь.Имя + " | UUID: " + ТекПользователь.УникальныйИдентификатор);
КонецЦикла;

Если при выполнении этого кода система также «зависает», это подтверждает повреждение структуры таблицы v8users на стороне SQL-сервера.

Шаг 4: Восстановление через SQL-сервер

Рассмотрим ситуацию, когда стандартные средства (ТИИ, выгрузка/загрузка) не помогают. Опытные администраторы могут заглянуть «под капот» базы данных. Выясним, как проверить наличие данных в системной таблице. Используем SQL-запрос:

SELECT * FROM v8users

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

Важный момент: Если вы решили вручную очистить таблицу v8users через команду TRUNCATE TABLE, помните, что после этого Конфигуратор позволит войти в базу без пароля, но вам придется вручную сопоставлять каждого созданного пользователя с элементами справочника Пользователи.

Шаг 5: Корректный переезд на новую платформу

Проанализируем опыт коллег: иногда «пропажа» пользователей происходит в первый час работы после обновления версии платформы 1С. Чтобы избежать подобных коллизий, рекомендуется следующий алгоритм «чистого» обновления:

  1. На старой платформе сделайте полную выгрузку в .dt.
  2. Удалите базу из списка кластера серверов 1С.
  3. Установите новую платформу.
  4. Создайте новую пустую базу на SQL-сервере через консоль администрирования 1С.
  5. Загрузите .dt в эту новую базу.

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

Резюме

Если в вашей 1С:Зарплата и Управление Персоналом пропали пользователи, не спешите паниковать. В первую очередь проверьте работу в файловом режиме и очистите серверный кэш snccntx. Если это не помогло, используйте метод пересоздания базы через выгрузку/загрузку .dt в новую SQL-структуру — в 90% случаев это полностью решает проблему зависаний и восстанавливает видимость учетных записей.

← На главную