При запуске информационной базы 1С пользователи часто сталкиваются с неприятной ситуацией: вместо привычного диалогового окна со списком сотрудников программа отображает пустую строку ввода. При этом войти в систему под своей учетной записью можно, но для этого приходится вручную вводить полное имя пользователя и пароль. Такая проблема не только замедляет ежедневный запуск системы, но и вызывает панику у сотрудников.
В этой статье мы подробно разберем, почему пропадает список пользователей, как устроены внутренние защитные механизмы Библиотеки стандартных подсистем (БСП), и что делать, если дело дошло до физического повреждения таблиц базы данных.
Это самая распространенная причина на современных конфигурациях 1С (таких как «Управление торговлей», «ERP Управление предприятием» или «Комплексная автоматизация»). Рассмотрим детально логику работы платформы и прикладного решения.
В БСП реализован механизм разграничения доступа для внешних потребителей услуг — клиентов, партнеров или интеграционных сервисов (например, интернет-магазина на платформе «1С-Битрикс»). Если в настройках администрирования активируется опция интеграции или разрешается доступ внешним пользователям, система автоматически переходит в режим повышенной безопасности.
С точки зрения информационной безопасности, внешние пользователи, подключаясь к базе через веб-интерфейс, не должны видеть список реальных сотрудников организации. В противном случае злоумышленник получит готовую базу логинов для подбора паролей (Brute Force). Поэтому при активации константы ИспользоватьВнешнихПользователей система автоматически запускает фоновый процесс, который у всех существующих пользователей информационной базы сбрасывает флаг ПоказыватьВСпискеВыбора в значение Ложь.
Более того, на уровне интерфейса карточки пользователя скрывается сам реквизит, отвечающий за отображение в списке. Проанализируем программный код, определяющий видимость этого элемента на форме:
&НаСервере
Процедура ОбновитьВидимостьРеквизитаПоказыватьВСпискеВыбора()
Элементы.ПользовательИБПоказыватьВСпискеВыбора.Видимость =
Не ОбщегоНазначения.РазделениеВключено
И Не ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей");
КонецПроцедуры
Как мы видим, если включена функциональная опция внешних пользователей, флаг управления отображением скрывается из интерфейса в режиме «1С:Предприятие». Даже если отключить эту опцию обратно, автоматически галочки у пользователей не установятся. Их восстановление потребует вмешательства администратора.
Если интеграция с внешними системами не планируется, выполним следующие шаги для восстановления списка сотрудников:
Если в вашей организации работают сотни сотрудников, ручной обход каждого пользователя в Конфигураторе займет слишком много времени. Проанализируем, как автоматизировать этот процесс. Для этого мы можем запустить внешнюю обработку или воспользоваться встроенной обработкой «Групповое изменение реквизитов», выполнив произвольный алгоритм на сервере:
УстановитьПривилегированныйРежим(Истина);
ПользователиИБ = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ПользовательИБ Из ПользователиИБ Цикл
Если Не ПользовательИБ.ПоказыватьВСпискеВыбора Тогда
ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
ПользовательИБ.Записать();
КонецЕсли;
КонецЦикла;
Этот простой скрипт в привилегированном режиме быстро обойдет список пользователей информационной базы и вернет им признак отображения при запуске программы.
В некоторых случаях список пользователей пропадает из-за аварийного завершения работы программы (например, внезапное отключение электропитания компьютера, сбои в работе сети или жесткого диска). При этом войти под своим именем невозможно даже при ручном вводе логина и пароля — система выдает ошибку авторизации.
Вся информация о пользователях, их хэш-паролях и правах доступа в платформе 1С хранится в специальной системной таблице с именем v8users, а также в двоичном виде внутри таблицы системных настроек Params (файл users.usr).
Рассмотрим порядок действий для диагностики и ремонта файловой версии базы данных:
1Cv8.1CD в безопасное место.C:\Program Files\1cv8\[Номер_Релиза]\bin) найдем и запустим файл checkdbfl.exe. Укажем путь к нашему файлу базы данных, установим флаг «ИСПРАВЛЯТЬ ОБНАРУЖЕННЫЕ ОШИБКИ» и запустим проверку. В большинстве случаев утилита успешно восстанавливает структуру таблицы v8users.v8users и точечно переименовывают его (например, в h8users), а также переименовывают упоминание users.usr. После этого платформа считает базу «чистой», запускается без запроса пароля и позволяет выполнить тестирование и исправление.В клиент-серверном варианте таблицы пользователей также могут пострадать из-за сбоев СУБД или некорректного обновления платформы. Разберем метод восстановления доступа к конфигурации без потери основных данных базы:
EXEC sp_rename 'v8users', 'v8users_old';
UPDATE Params SET FileName = 'users.usr_old' WHERE FileName = 'users.usr';
После этого запустим Конфигуратор 1С. Поскольку системные таблицы переименованы, система пустит нас без пароля. Важно: не закрывайте окно Конфигуратора на следующем шаге!
Теперь вернем таблицы пользователей в исходное состояние с помощью SQL-запроса, чтобы восстановить структуру связей:
DROP TABLE v8users;
EXEC sp_rename 'v8users_old', 'v8users';
UPDATE Params SET FileName = 'users.usr' WHERE FileName = 'users.usr_old';
После выполнения этого запроса вернемся в открытый Конфигуратор и зайдем в список пользователей. Все учетные записи снова отобразятся на экране. Теперь мы можем безопасно перепривязать права, изменить поврежденные пароли или перезаписать учетную запись администратора, чтобы восстановить штатную работу авторизации.
Если список пользователей отображается корректно у всех сотрудников, кроме одного конкретного рабочего места, то проблема кроется в локальных файлах авторизации и кэше платформы.
Платформа 1С сохраняет историю успешных входов и список баз в локальных папках пользователя на компьютере. При повреждении файлов в каталогах %localappdata%\1C\1Cv8 и %appdata%\1C\1Cv8 список выбора может перестать отображаться или зависнуть на устаревших данных.
Для решения этой проблемы очистим локальный кэш:
AppData\Local\1C\1Cv8 и AppData\Roaming\1C\1Cv8 и очистим их содержимое.Также проанализируем карточку проблемного сотрудника в справочнике Пользователи в режиме «1С:Предприятие». В современных конфигурациях присутствует флаг Недействителен (он часто устанавливается автоматически при синхронизации с кадровыми базами вроде ЗУП при увольнении сотрудника). Если данный флаг активен, учетная запись пользователя мгновенно исчезает из всех списков выбора. Для восстановления видимости администратору необходимо открыть справочник, включить отображение недействительных пользователей через меню «Еще», зайти в нужную карточку и снять этот флаг.