Сброс пароля 1С 8.2/8.3 с базой под SQL Server
Единственным условием успешного выполнения процедуры сброса пароля 1С Предприятия 8.2/8.3 является доступ в консоль Microsoft SQL сервера. Если растеряли вообще все пароли, то ситуация несколько усложняется. В данной статье будет дано описание только как снять пароль 1С с SQL базы.
Перед выполнением процедуры сброса пароля 1С обязательно сделайте резервную копию базы данных.
1С:Предприятие 8.2/8.3 хранит информацию о паролях в двух местах:
- В таблице БД v8users.
- В файле users.usr. Файл бинарно сохранен в таблице Params.
Учтите, что пароли хранятся не в открытом виде, а в виде хэш кодов. Это несимметричный алгоритм шифрования без возможности обратного восстановления. Поэтому зайти и задать где-то в конкретном поле новый пароль не получится.
Не пытайтесь стирать вообще всю инфу из полей с паролями. Они не бывают пустыми.
Как получить админский доступ в 1С без пароля:
Основная идея в том, что, если при загрузке базы 1С:Предприятия не будет обнаружен ни один пользователь, то вошедший получит максимальные права. При этом, формирование списка доступных привилегий 1С выполняет только на входе и больше к ним не обращается.
Кстати: именно по причине проверки привилегий только на входе, при изменении прав доступа пользователей, новые параметры вступают в силу только после повторной авторизации пользователя.
1) Переименовываем таблицу v8users и файл users.usr
Перед входом в базу данных, куда требуется получить доступ, переименуем таблицу v8users в v8users_tmp. Так же переименуем файл users.usr в users.usr_tmp.
Откроем Management Studio.
Создаем новый запрос к БД:
1 2 3 4 5 6 7 8 |
USE [your_database] GO EXEC sp_rename 'v8users', 'v8users_tmp' GO UPDATE [Params] SET [FileName] = 'users.usr_tmp' WHERE [FileName] = 'users.usr' GO |
Идентификатор «your_database» замените на идентификатор своей базы 1С.
И запускаем его: F5 или иконка с восклицательным знаком.
2) Вход в 1С:Предприятие в режиме конфигуратора
Открываем 1С в режиме конфигуратора. При входе ни пользователя ни пароля запрошено не будет. База откроется с полными правами.
Имейте в виду, что отдельные конфигурации 1С имеют ряд особенностей по управлению пользователями. Эти особенности следует учитывать при выполнении процедуры сброса пароля 1С.
3) Восстановление таблицы v8users и файла users.usr
Теперь выполним обратную операцию тому, что было сделано на шаге 1.
Снова создаем новый SQL скрипт в Management Studio, и вписываем туда:
1 2 3 4 5 6 7 8 9 10 |
USE [your_database] GO DROP TABLE [v8users] GO EXEC sp_rename 'v8users_tmp', 'v8users' GO UPDATE [Params] SET FileName = 'users.usr' WHERE FileName = 'users.usr_tmp' GO |
Идентификатор «your_database» замените на идентификатор своей базы 1С.
И запускаем его: F5 или иконка с восклицательным знаком.
4) Изменяем пароль администратора или создаем нового
В Конфигураторе 1С измените пароль существующего администратора или создайте нового пользователя с административными правами.
Сброс пароля 1С лучше делать для существующего пользователя
Имейте в виду, что в таких конфигурациях, как «Управление торговлей» версии 11 создание пользователей следует выполнять в режиме 1С:Преприятия, а не в Конфигураторе. Поэтому лучше изменить пароль существующего администратора, а не создавать через Конфигуратор нового пользователя.
Закройте Конфигуратор и откройте снова. Теперь будет действовать указанный пароль на шаге 4.
Обязательно учитывайте особенности управления пользователями конкретной конфигурации 1С.
Ниже скрипт, нужно применить его к базе и просто зайти в конфигуратор:
1)Открываем SQL Server Management Studio
2)Выбираем нужную БД правой кнопкой мыши Создать запрос (New Query)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
-- Переименовать таблицу v8users EXEC sp_rename 'v8users', 'v8users_tmp' GO -- Переименовать users.usr в users.usr_tmp UPD ATE Params SE T FileName = 'users.usr_tmp' WHERE FileName = 'users.usr' GO -- Создать пустую таблицу v8users cre ate table v8users( ID binary(16) NOT NULL, Name nvarchar(64) NOT NULL, Descr nvarchar(128) NOT NULL, OSName nvarchar(128) NULL, Changed datetime2(0) NOT NULL, RolesID numeric(10,0) NOT NULL, Show binary(1) NOT NULL, Data varbinary(max) NOT NULL, EAuth binary(1) NULL, AdmRole binary(1) NULL, UsSprH numeric(10,0) NULL, PRIMARY KEY (ID) ); |
Начиная с платформы: 8.3.5 решение для SQL такое:
1) Запускаем конфигуратор,
2) открывается окно авторизации,
3) затем переименовываем таблицу v8users в v8users_tmp и также в таблице Params переименовываем запись users.usr в users.usr_tmp,
4) затем в окне авторизации жмем Enter и попадаем в конфигуратор с полными правами,
5) после этого переименовываем таблицу и запись в исходное состояние и можем работать со списком пользователей уже в конфигураторе
Либо более топорный способ:
Удалил в той таблице строчку. Ну и снес всю таблицу( она была чуть ниже parametrs.) и называлась Usersv8. После сиих действий все заработало прекрасно)
Список пользователей базы 1С в SQL:
1)Открываем SQL Server Management Studio
2)Выбираем нужную БД правой кнопкой мыши > Создать запрос (New Query)
3)SELECT * FROM v8users
Сбросить пароль 1С 8, если база на PostgreSQL:
1)Открываем pgAdminIII.
2)выделяем базу PostgreSQL, для которой нужно сбросить пароль 1С Предприятие. Затем Меню > Инструменты > Инструмент запросов выполняем:
1 2 |
ALTER TABLE v8users RENAME TO v8users_old; UPDATE Params SET FileName = ‘users.usr_old’ WHERE FileName = ‘users.usr'; |
Запускаем конфигуратор 1С. (Заходит без запроса пароля)
– если не пускает в конфигуратор можно в само 1С предgрияте – затем сможете создать пользователя через Администрирование – Права доступа.
4)Перед созданием пользователя необходима вернуть текущих, Для этого, не выходя из конфигуратора, выполняем команды.
1 2 3 |
DROP TABLE v8users; ALTER TABLE v8users_old RENAME TO v8users; UPDATE Params SET FileName = ‘users.usr’ WHERE FileName = ‘users.usr_old'; |
5)Создаем нового или меняем пароль текущему.