Как вернуть пользователя в Конфигуратор, если он остался в справочнике «Пользователи»?

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

Ситуация, когда учетная запись пользователя удалена из списка в Конфигураторе, но при этом элемент в справочнике Пользователи в режиме «Предприятие» остался нетронутым, является классической технической коллизией. В таких случаях нарушается связь между авторизационными данными (логином/паролем) и внутренними настройками программы, такими как права доступа, история документов и персональные настройки интерфейса. Разберем подробно, как восстановить эту связь, основываясь на особенностях платформы 8.3 и конфигураций типа «Управление торговлей 10.3».

Механика связи: почему недостаточно просто создать нового пользователя

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

  1. Список пользователей информационной базы (ИБ): Хранится в системных таблицах, управляется через Конфигуратор. Главный реквизит здесь — уникальный идентификатор UUID (GUID).
  2. Справочник Пользователи: Прикладной объект конфигурации, где хранятся настройки, привязка к физическим лицам, подразделениям и правам внутри логики программы.

Связь между ними осуществляется через реквизит справочника ИдентификаторПользователяИБ. Когда вы удаляете пользователя в Конфигураторе, его уникальный идентификатор исчезает навсегда. Даже если вы создадите нового пользователя с точно таким же именем, платформа присвоит ему новый UUID. В результате старый элемент справочника перестанет «узнавать» этого пользователя.

Способ 1: Использование встроенных инструментов конфигурации

Рассмотрим наиболее простой и корректный способ для конфигураций на обычных формах (УТ 10.3, КА 1.1, УПП 1.3). Если текущий администратор обладает полными правами, открывать Конфигуратор может и не потребоваться.

Выполним следующие шаги:

  1. Зайдем в режиме «Предприятие» в справочник Пользователи.
  2. Найдем того самого пользователя, который был удален в Конфигураторе.
  3. В форме элемента справочника обратим внимание на кнопку «Редактирование настроек пользователя БД» (или аналогичную, отвечающую за параметры авторизации).
  4. Нажмем на неё. Программа обнаружит, что связанный пользователь ИБ отсутствует, и предложит создать его или отредактировать настройки.
  5. Пропишем имя входа, пароль и настройки аутентификации. При сохранении система автоматически создаст запись в Конфигураторе и запишет новый UUID в реквизит справочника.

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

Способ 2: Ручное пересоздание в Конфигураторе по имени

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

Алгоритм действий:

  1. Откроем Конфигуратор, перейдем в меню Администрирование — Пользователи.
  2. Создадим нового пользователя. Важно: скопируйте имя точно так, как оно написано в справочнике Пользователи в режиме «Предприятие».
  3. Установим пароль и необходимые роли.
  4. После этого запустим «Предприятие». Если связь не восстановилась автоматически, воспользуемся консолью запросов или обработкой для сопоставления идентификаторов.

Способ 3: Программное восстановление связи (UUID)

Если автоматическое сопоставление не произошло, нам нужно «подсунуть» справочнику идентификатор нового пользователя ИБ. Выясним, как это сделать программно. Рассмотрим пример кода, который можно запустить во внешней обработке:


// Найдем пользователя информационной базы по имени
ИмяПользователя = "ИвановИИ"; // Укажите нужное имя
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);

Если ПользовательИБ <> Неопределено Тогда
    // Получаем его новый уникальный идентификатор
    НовыйUUID = ПользовательИБ.УникальныйИдентификатор;
    
    // Находим элемент в справочнике
    СсылкаНаПользователя = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя);
    
    Если Не СсылкаНаПользователя.Пустая() Тогда
        ОбъектПользователь = СсылкаНаПользователя.ПолучитьОбъект();
        // Записываем новый идентификатор в технический реквизит
        ОбъектПользователь.ИдентификаторПользователяИБ = НовыйUUID;
        ОбъектПользователь.Записать();
        Сообщить("Связь успешно восстановлена для: " + ИмяПользователя);
    КонецЕсли;
КонецЕсли;

Внимание: Имя реквизита ИдентификаторПользователяИБ может отличаться в зависимости от версии вашей конфигурации. Перед запуском кода рекомендуется проверить структуру справочника в Конфигураторе.

Дополнительный совет: Работа с датами при отладке

В процессе восстановления прав и проверки журналов регистрации вам может потребоваться работа с временными интервалами. Посмотрим на небольшую тонкость при работе с объектом Дата в 1С. Если в коде или в табло вы используете выражение типа Объект.Дата + 1, помните, что в 1С к дате прибавляются секунды. Таким образом, прибавив единицу, вы сдвинете время документа всего на одну секунду вперед.

Для проверки выражений в режиме обычных форм (как в УТ 10.3) удобно использовать Табло:

  1. В режиме «Предприятие» перейдите в меню Сервис — Табло.
  2. Введите выражение, например: '20231231235959' + 1.
  3. Вы увидите результат 01.01.2024 00:00:00.

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

Резюме

Для восстановления удаленного пользователя:

  1. Сначала попробуйте обновить настройки через форму элемента справочника Пользователи в режиме «Предприятие».
  2. Если это не помогает, пересоздайте пользователя в Конфигураторе и программно обновите реквизит UUID в справочнике.
  3. Всегда проверяйте, чтобы имя пользователя в Конфигураторе и наименование в справочнике совпадали до символа, чтобы избежать путаницы в будущем.
← На главную