Ситуация, когда при запуске 1С:Предприятие внезапно исчезает окно выбора пользователя и программа заходит в информационную базу без пароля, является критической. Это не только угроза безопасности, но и серьезная техническая проблема, ведущая к потере связи документов с их авторами. В данной статье мы подробно разберем, почему это происходит в «1С:Бухгалтерия предприятия 3.0», как диагностировать причину и что предпринять для восстановления работы.
Прежде всего, нам необходимо понять, что в платформе 1С 8.3 информация о пользователях дублируется. Рассмотрим подробнее, как это устроено:
Пользователи: Это объект метаданных внутри самой конфигурации. Именно элементы этого справочника подставляются в поле Ответственный в документах.Если в вашей базе «пропали пользователи», важно выяснить: исчез только доступ или очистился и справочник тоже? Если в документах вместо имен ответственных отображаются «битые ссылки» (объект не найден), значит, данные были удалены физически из таблиц базы данных.
Проанализируем технические ошибки, зафиксированные разработчиками 1С. Существует известная ошибка под номером 10211660. Хотя в официальном описании чаще фигурирует клиент-серверный вариант, на практике с аналогичными симптомами сталкиваются и пользователи файловых баз.
Суть ошибки заключается в следующем: если изменение списка пользователей выполняется в длительной транзакции (например, при массовом обновлении прав или синхронизации), и в этот момент происходит принудительное завершение сеанса администратором или сбой сети, список пользователей может быть очищен платформой. Это происходит из-за некорректного завершения записи в системные таблицы v8users.
Если ваша база данных является файловой (файл 1Cv8.1CD) и расположена в сетевой папке, мы сталкиваемся с высокими рисками повреждения структуры файла. Разберем, как протоколы Windows могут повлиять на целостность данных:
В современных версиях Windows (начиная с Windows 7 и Windows Server 2008) используется механизм Opportunistic Locking (Oplocks). Этот механизм кэширует части файла на клиентской машине для ускорения работы. Если происходит кратковременный разрыв сетевого соединения в момент, когда 1С записывает данные в таблицы пользователей, заголовок таблицы может обнулиться. В результате платформа «считает», что пользователей в базе нет, хотя сами данные могут физически оставаться в файле в виде «мусора».
Для предотвращения этого системным администраторам рекомендуется отключать кэширование SMB на сервере, где лежит база, или переводить базу в клиент-серверный режим.
Рассмотрим ситуацию, когда документы на месте, но справочник Пользователи пуст. Одной из неочевидных причин является создание «Начального образа» подчиненного узла РИБ.
При создании начального образа из основной базы платформа создает копию файла .1CD, но по умолчанию не переносит в нее список пользователей информационной базы (чтобы администратор нового узла создал своих пользователей). Если кто-то из сотрудников случайно запустил процесс создания начального образа или системный администратор перепутал файлы при восстановлении из бэкапа, вы получите именно ту картину, которую описывает автор темы: база та же, документы те же, а пользователей нет.
Выясним причину возможного человеческого фактора. Существуют сторонние инструменты, такие как Tool_1CD или специальные скрипты на языке Python/C++, позволяющие редактировать файл базы данных напрямую.
Часто их используют для «взлома» базы, когда пароль администратора утерян. Эти инструменты позволяют очистить таблицу v8users. Если кто-то из ИТ-специалистов пытался восстановить доступ таким радикальным способом, список пользователей исчезнет полностью. Однако помните: прямое редактирование файла базы данных — это всегда риск безвозвратной потери данных.
Если пользователи уже пропали и справочник Пользователи пуст, восстановить связи в старых документах автоматически крайне сложно. Разберем по шагам алгоритм действий:
Пользователи, соответствующие реальным сотрудникам.Ответственный теперь содержит надпись вида <Объект не найден> (84:bf00...). Чтобы исправить это без перепроведения документов (чтобы не нарушить закрытые периоды), можно воспользоваться обработкой «Групповое изменение реквизитов» или написать простой скрипт.Посмотрим на пример кода, который поможет программно заменить «битые ссылки» на нового пользователя без изменения даты документа и его движений:
// Пример обработки для восстановления ответственного
Процедура ВосстановитьОтветственного(СтараяСсылкаУИД, НовыйПользователь)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ответственный.Ссылка ЕСТЬ NULL"; // Поиск битых ссылок
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбъектДок = Результат.Ссылка.ПолучитьОбъект();
ОбъектДок.ОбменДанными.Загрузка = Истина; // Чтобы не срабатывали проверки и не менялись движения
ОбъектДок.Ответственный = НовыйПользователь;
ОбъектДок.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла;
КонецПроцедуры
Чтобы в будущем не столкнуться с внезапным исчезновением пользователей, проанализируйте следующие рекомендации:
chdbfl.exe (лежит в папке bin платформы). Она проверяет физическую целостность таблиц, в том числе и таблицы пользователей.Важный момент: Если вы обнаружили пропажу пользователей сразу после обновления конфигурации, обязательно проверьте журнал регистрации на наличие ошибок входа или завершения фоновых заданий. Возможно, обновление завершилось некорректно и база требует восстановления из копии, сделанной перед обновлением.