Сброс пароля 1С: забыли пароль администратора

Дата: 07.10.2026 22:03:16
сброс пароля
пароль администратора
пользователи ИБ
права доступа
SQL
PostgreSQL
восстановление доступа
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Любые

Ситуация знакомая: база работает годами, а пароль единственного администратора потерян — уволился сотрудник, сменился подрядчик или просто «1С не помню пароль». Хорошая новость: чтобы сбросить пароль 1С, переустанавливать ничего не нужно — доступ почти всегда восстанавливается штатными средствами. Разберём по порядку, от безопасных способов к крайним мерам, с готовым кодом и честным разбором рисков. Все примеры — на условной базе (сервер srv01, база trade).

Сразу договоримся: всё описанное применимо только к своей базе, доступ к которой вы восстанавливаете на законных основаниях. И прежде чем править служебные таблицы напрямую — сделайте резервную копию.

Сначала проверьте штатные способы

Если забыли пароль администратора 1С, не спешите лезть в SQL. Сначала три штатных пути — они не трогают структуру базы и занимают пару минут.

Войти под другим администратором

Самый простой случай: в базе есть ещё один пользователь с ролью «Полные права». Зайдите под ним и смените пароль нужному пользователю. В типовых на БСП это раздел НСИ и администрирование → Настройки пользователей и прав → Пользователи (в УТ 11.4), карточка пользователя, команда «Установить пароль». В Конфигураторе — меню Администрирование → Пользователи, двойной щелчок по строке, вкладка «Основные», поле пароля. Понять, остался ли в базе хоть один админ, помогает функция ЕстьАдминистратор из листинга ниже.

Вход по аутентификации ОС

Если пользователю заранее включили аутентификацию операционной системы и привязали вашу учётную запись Windows, 1С пустит в базу без ввода пароля — достаточно запустить её под этой учёткой. Имя учётной записи ОС хранится в формате \\Домен\Пользователь. Увидеть, у кого так настроен вход, поможет функция ТаблицаПользователейИБ (колонки «АутентификацияОС» и «ПользовательОС»). Минус один: задним числом ОС-аутентификацию не включить, не войдя в базу, — значит способ выручает, только если её настроили раньше.

Снять пароль из кода

Когда у вас уже есть сеанс с правами (вошли под другим администратором или через внешнее соединение), пароль пользователю проще снять программно. Тот же код пригодится и после аварийного входа — к нему вернёмся ниже.

Как сбросить пароль пользователя 1С программно

Работаем с объектом ПользователиИнформационнойБазы. Он доступен только на сервере (или в толстом клиенте и внешнем соединении) — на тонком клиенте обращения к пользователям ИБ нет. Поэтому процедуры размещайте в серверном общем модуле или в серверной процедуре формы (&НаСервере), а для записи чужого пользователя нужны административные права. Пустой пароль здесь означает «пароль удалён»: пользователь войдёт без пароля, и его сразу стоит сменить.

// Снимает пароль у пользователя ИБ по имени (ставит пустой пароль)
// и включает стандартную аутентификацию. Выполнять на сервере.
Процедура СброситьПарольПользователя(Знач ИмяПользователя) Экспорт

    ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
    Если ПользовательИБ = Неопределено Тогда
        ВызватьИсключение "Пользователь ИБ не найден: " + ИмяПользователя;
    КонецЕсли;

    ПользовательИБ.Пароль = "";                        // пустой пароль = пароль удалён
    ПользовательИБ.АутентификацияСтандартная = Истина;  // вход по логину и паролю 1С
    ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
    ПользовательИБ.Записать();

КонецПроцедуры

Ключевые строки: НайтиПоИмени возвращает Неопределено, если пользователя ИБ с таким именем нет, — это обязательно проверяем. Присваивание Пароль = "" задаёт пустой пароль (именно так «удаляют пароль» в 1С), а АутентификацияСтандартная = Истина гарантирует, что вход по логину и паролю вообще разрешён.

Если администратора в базе не осталось совсем, его нужно создать. Роли ищем через Метаданные.Роли.Найти — тогда код не упадёт, даже если в конкретной конфигурации роли с таким именем нет.

// Создаёт нового пользователя ИБ с полными правами и пустым паролем.
// Возвращает уникальный идентификатор созданного пользователя.
// Применять, когда в базе не осталось ни одного администратора.
Функция СоздатьАдминистратора(Знач Имя, Знач ПолноеИмя = "") Экспорт

    Если ПользователиИнформационнойБазы.НайтиПоИмени(Имя) <> Неопределено Тогда
        ВызватьИсключение "Пользователь с таким именем уже есть: " + Имя;
    КонецЕсли;

    ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
    ПользовательИБ.Имя = Имя;
    ПользовательИБ.ПолноеИмя = ?(ПустаяСтрока(ПолноеИмя), Имя, ПолноеИмя);
    ПользовательИБ.АутентификацияСтандартная = Истина;
    ПользовательИБ.Пароль = "";

    // Роли ищем по имени, чтобы код не падал, если роли в базе нет
    РольПолныеПрава = Метаданные.Роли.Найти("ПолныеПрава");
    Если РольПолныеПрава <> Неопределено Тогда
        ПользовательИБ.Роли.Добавить(РольПолныеПрава);
    КонецЕсли;
    РольАдминистратор = Метаданные.Роли.Найти("АдминистраторСистемы");
    Если РольАдминистратор <> Неопределено Тогда
        ПользовательИБ.Роли.Добавить(РольАдминистратор);
    КонецЕсли;

    ПользовательИБ.Записать();
    Возврат ПользовательИБ.УникальныйИдентификатор;

КонецФункции

Перед сбросом полезно убедиться, что вы не останетесь без единственного админа, и заодно увидеть, кто и как входит в базу. Две служебные функции:

// Истина, если в базе есть хотя бы один пользователь с полными правами.
// Удобно вызвать перед сбросом, чтобы не остаться совсем без администратора.
Функция ЕстьАдминистратор() Экспорт

    РольПолныеПрава = Метаданные.Роли.Найти("ПолныеПрава");
    Если РольПолныеПрава = Неопределено Тогда
        Возврат Ложь;
    КонецЕсли;

    Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
        Если ПользовательИБ.Роли.Содержит(РольПолныеПрава) Тогда
            Возврат Истина;
        КонецЕсли;
    КонецЦикла;

    Возврат Ложь;

КонецФункции
// Собирает список пользователей ИБ с их способом входа.
// Помогает найти, под кем можно зайти без пароля (аутентификация ОС).
Функция ТаблицаПользователейИБ() Экспорт

    Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Имя");
    Таблица.Колонки.Добавить("ПолноеИмя");
    Таблица.Колонки.Добавить("СтандартнаяАутентификация");
    Таблица.Колонки.Добавить("АутентификацияОС");
    Таблица.Колонки.Добавить("ПользовательОС");

    Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
        СтрокаТаблицы = Таблица.Добавить();
        СтрокаТаблицы.Имя = ПользовательИБ.Имя;
        СтрокаТаблицы.ПолноеИмя = ПользовательИБ.ПолноеИмя;
        СтрокаТаблицы.СтандартнаяАутентификация = ПользовательИБ.АутентификацияСтандартная;
        СтрокаТаблицы.АутентификацияОС = ПользовательИБ.АутентификацияОС;
        СтрокаТаблицы.ПользовательОС = ПользовательИБ.ПользовательОС;
    КонецЦикла;

    Возврат Таблица;

КонецФункции

В типовых на БСП (УТ, КА, ERP, БП, УНФ, Розница) пароль лучше менять не напрямую, а через общий модуль Пользователи: собрать структуру с ключом «Пароль» и вызвать Пользователи.УстановитьСвойстваПользователяИБ(ИмяИлиИдентификатор, ОбновляемыеСвойства), а нового администратора создать вызовом Пользователи.СоздатьАдминистратора(). Эти методы сами поддерживают связь пользователя ИБ со справочником «Пользователи», поэтому база не рассыпается — о том, почему это важно, чуть ниже. Подробнее о правах и ролях — в статьях о настройке прав доступа и о ролях.

Если в базу вообще не войти: сброс пароля 1С через SQL

Это крайняя мера для клиент-серверной базы, когда штатные способы отпали: администраторов нет, ОС-аутентификация не настроена. Идея приёма (из практики): временно убрать список пользователей ИБ, чтобы 1С пустила в конфигуратор без пароля, затем, не закрывая конфигуратор, вернуть список на место и задать администратору новый пароль. Пользователи, их роли и связь со справочником «Пользователи» при этом сохраняются. Список пользователей и их пароли в клиент-серверной базе лежат в служебных таблицах v8users и Params (запись с именем users.usr).

Порядок строгий. Сначала — полный бэкап и остановка активных сеансов (на время работ лучше ограничить подключения к базе). Все действия выполняются на своей базе, и идеально сначала потренироваться на её копии.

-- 0. Обязательный бэкап перед любыми правками
BACKUP DATABASE [trade] TO DISK = N'D:\backup\trade_before_reset.bak' WITH INIT;
GO

-- 1. Копируем служебные записи на случай отката
USE [trade];
SELECT * INTO v8users_copy FROM v8users;
SELECT * INTO params_copy  FROM Params WHERE FileName = 'users.usr';
GO

-- 2. Сверяем число строк: копия должна совпасть с источником
SELECT COUNT(*) AS users_src FROM v8users;
SELECT COUNT(*) AS users_cp  FROM v8users_copy;
GO

-- 3. Очищаем список пользователей ИБ
DELETE FROM v8users;
DELETE FROM Params WHERE FileName = 'users.usr';
GO

После удаления этих записей 1С при запуске не найдёт ни одного пользователя и пустит в конфигуратор без аутентификации. Запустите конфигуратор и не закрывайте его до конца процедуры. Сейчас в базе нет ни одной учётной записи, поэтому следующий шаг обязателен: пока конфигуратор открыт, верните пользователей из копий.

-- 4. Конфигуратор открыт: возвращаем пользователей из копий.
-- Таблицы не пересоздаём (SELECT INTO теряет индексы), а заливаем данные в существующие.
USE [trade];
INSERT INTO v8users SELECT * FROM v8users_copy;
INSERT INTO Params  SELECT * FROM params_copy;
GO

-- 5. Число пользователей должно совпасть с шагом 2
SELECT COUNT(*) AS users_now FROM v8users;
GO

-- 6. После входа с новым паролем копии больше не нужны
-- DROP TABLE v8users_copy;
-- DROP TABLE params_copy;

Теперь в открытом конфигураторе откройте «Администрирование → Пользователи»: список снова на месте. Откройте администратора, задайте новый пароль и сохраните. Закройте конфигуратор, войдите под администратором с новым паролем — и только после этого удалите копии (шаг 6). Остальные сотрудники входят со своими прежними паролями.

В исходном варианте приёма таблицы возвращали через DROP TABLE и SELECT ... INTO. Так тоже работает, но SELECT INTO создаёт таблицу заново, без исходных индексов и ключей, поэтому надёжнее залить данные в существующую таблицу, как выше. Если что-то пошло не так, разверните бэкап из шага 0, а не правьте служебные таблицы дальше.

Для PostgreSQL логика та же, меняется синтаксис и регистр имён — служебные таблицы 1С создаёт в нижнем регистре. Бэкап снимаем через pg_dump:

# Бэкап базы PostgreSQL в командной строке (до правок)
pg_dump -h 192.168.1.10 -U postgres -F c -f D:\backup\trade.dump trade
-- PostgreSQL: имена служебных таблиц 1С — в нижнем регистре
-- Шаги 1–3: копии и очистка
BEGIN;
CREATE TABLE v8users_copy AS TABLE v8users;
CREATE TABLE params_copy  AS SELECT * FROM params WHERE filename = 'users.usr';
DELETE FROM v8users;
DELETE FROM params WHERE filename = 'users.usr';
COMMIT;

-- Шаг 4: конфигуратор запущен и открыт — возвращаем пользователей
BEGIN;
INSERT INTO v8users SELECT * FROM v8users_copy;
INSERT INTO params  SELECT * FROM params_copy;
COMMIT;
SELECT count(*) AS users_now FROM v8users;

Точные имена таблиц и колонок в хранилище 1С не документированы и зависят от версии платформы и СУБД — обязательно сверяйте их на копии базы. Как устроены базы на разных СУБД — в заметках про MS SQL для 1С и базу на PostgreSQL.

Файловая база и почему HEX-правка 1Cv8.1CD — плохая идея

В файловой базе всё хранится в одном контейнере 1Cv8.1CD, и SQL туда не применить. В сети советуют «поправить пароль HEX-редактором прямо в файле». На практике это худший из вариантов: формат контейнера не документирован и меняется между версиями платформы, правка идёт без транзакций, и одна ошибка в смещении превращает рабочую базу в набор байтов без возможности отката. Чинить потом дороже, чем восстановить доступ нормально.

Честные варианты для файловой базы:

  • если есть другой администратор или настроена ОС-аутентификация — воспользуйтесь ими (см. выше);
  • разверните свежую резервную копию или выгрузку .dt, снятую, когда пароль был известен, — пользователи ИБ хранятся внутри выгрузки и восстановятся вместе с ней;
  • если копий нет, а войти надо — это уже работа для специалиста с проверенным инструментом; наугад править контейнер не стоит.

Что сломается после SQL-сброса и как проверить

Если список вернули из копий до закрытия конфигуратора, ничего не ломается: у пользователей ИБ прежние идентификаторы, роли и настройки, а справочник «Пользователи» БСП по-прежнему находит их по реквизиту ИдентификаторПользователяИБ. Связка рвётся, когда список не вернули или вернули не полностью: элементы справочника указывают на несуществующих пользователей ИБ, и сотрудники теряют вход.

Если так вышло, а бэкапа и копий нет:

  • создайте администратора правильным способом — в типовых через Пользователи.СоздатьАдминистратора(): он сам свяжет пользователя ИБ с элементом справочника;
  • пройдитесь по справочнику «Пользователи» и заново разрешите вход сотрудникам (в карточке — флаг «Вход в программу разрешён»), задав им новые пароли;
  • перепроверьте ограничения доступа на уровне записей (RLS): права часто завязаны на элемент справочника «Пользователи». Как это настроено — в статье о правах доступа, а получить текущего пользователя в коде поможет отдельная заметка.

Контрольная проверка: функция ЕстьАдминистратор возвращает Истина, под администратором с новым паролем открывается список пользователей, а сотрудники входят со своими прежними паролями.

Типичные ошибки

  • Удалили только v8users. 1С всё равно просит пароль — осталась запись Params с именем users.usr. Чистить нужно обе.
  • Правили таблицы на работающей базе. Активные сеансы и фоновые задания в момент правки — прямой путь к блокировкам и повреждению. Остановите сеансы и снимите блокировку подключений заранее.
  • Вернули таблицы через DROP плюс SELECT INTO. Таблица пересоздаётся без индексов, и база начинает сыпать ошибками. Только DELETE и INSERT либо разворот бэкапа.
  • Закрыли конфигуратор до смены пароля. Как только список вернулся, вход снова требует пароль. Повторите очистку и возврат (шаги 3–5) — копии из шага 1 уже есть, создавать их заново не нужно.
  • В типовой меняли пароль «мимо БСП». Прямая запись ПользователиИнформационнойБазы в обход модуля Пользователи рассинхронизирует справочник: пользователь теряет вход. В конфигурациях на БСП пользуйтесь их API.
  • Запустили код пользователей на клиенте. ПользователиИнформационнойБазы на тонком клиенте недоступен — выносите вызов на сервер.

Частые вопросы

Можно ли сбросить пароль 1С без SQL?

Да, если есть второй администратор или настроена аутентификация ОС — тогда достаточно штатной смены пароля или кода. SQL нужен, только когда войти в клиент-серверную базу вообще нечем; для файловой базы вместо SQL разворачивают бэкап.

Сбросится ли пароль при обновлении конфигурации?

Нет. Пользователи ИБ и их пароли хранятся в самой информационной базе, а не в конфигурации. Обновление cf или cfu их не трогает, так что обновление от забытого пароля не спасёт и не навредит.

Можно ли узнать старый пароль?

Нет. 1С хранит не сам пароль, а его хэш (свойство СохраняемоеЗначениеПароля). Восстановить исходный пароль нельзя — только задать новый или очистить.

Пароль переносится при выгрузке и загрузке dt?

Да. Полная выгрузка .dt включает пользователей ИБ вместе с хэшами паролей, при загрузке в новую базу список восстановится. Это же свойство делает .dt удобным бэкапом перед экспериментами с паролями.

Когда проще заказать

Если база клиент-серверная, администраторов не осталось, а бэкапа под рукой нет — цена ошибки в служебных таблицах высокая, и разумнее не рисковать боевой базой. Опишите задачу на 1c-only.ru: восстановление доступа и настройка прав — это профильная работа, оценка бесплатна и приходит в течение рабочего дня. Разместить задачу можно бесплатно.

По теме

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.