Как исправить ошибку параметров аутентификации операционной системы при добавлении пользователя в 1С?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

В чем причина рассинхронизации данных?

Для понимания корня проблемы проанализируем внутреннее устройство подсистемы управления доступом в платформе «1С:Предприятие»:

  1. Разделение уровней хранения пользователей. В платформе 1С существует два независимых уровня учетных записей. Первый — это системная коллекция ПользователиИнформационнойБазы (хранится в системных таблицах базы данных). Именно на этом уровне настраиваются пароли, права (роли) и параметры аутентификации операционной системы (Windows-аутентификация). Второй уровень — прикладной справочник Пользователи (или ВнешниеПользователи), созданный разработчиками конфигурации для связи учетной записи с бизнес-логикой, подразделениями, контактной информацией и настройками интерфейса.
  2. Откат или прерывание транзакций. Если при создании пользователя создание системной учетной записи прошло успешно, а при последующей записи элемента справочника произошел сбой, ошибка в коде или прерывание сеанса, транзакция записи справочника откатывается. Однако системный пользователь базы данных может остаться сохраненным как «пользователь-сирота».
  3. Удаление только из справочника. Если ранее элемент справочника Пользователи был помечен на удаление и физически удален обработкой удаления помеченных объектов без сопутствующей программной очистки системных пользователей, системная учетная запись в платформе сохраняется.
  4. Контроль уникальности платформы. Платформа 1С строго контролирует уникальность свойства ОСПользователь среди всех системных учетных записей, у которых включен флаг АутентификацияОС = Истина. При попытке привязать этот же доменный логин к новому элементу справочника возникает блокирующая ошибка.

Способ 1. Очистка или удаление пользователя через Конфигуратор

Самый простой интерактивный способ устранить коллизию — проверить системный список пользователей в Конфигураторе:

  1. Откроем информационную базу в режиме Конфигуратор с административными правами.
  2. Перейдем в главное меню: Администрирование → Пользователи.
  3. Найдем учетную запись, у которой в параметрах прописан конфликтующий пользователь Windows (в формате DOMAIN\UserName или UserName@domain.local).
  4. Откроем свойства пользователя и выберем один из вариантов:
    • Полное удаление: если системная учетная запись является «осиротевшей» и больше не нужна, удалим ее из списка (клавиша Delete или контекстное меню).
    • Отключение аутентификации ОС: если системного пользователя нужно сохранить, снимем флаг Аутентификация операционной системы и очистим поле Пользователь Windows.
  5. Сохраним изменения.

Важный нюанс: изменение списка системных пользователей через меню «Администрирование → Пользователи» не является изменением структуры метаданных конфигурации. Для этой операции не требуется монопольный захват базы — ее можно выполнять без отключения остальных пользователей от информационной базы.

Способ 2. Программный поиск «зависшего» системного пользователя

Если пользователей в информационной базе сотни или тысячи, ручной поиск в Конфигураторе занимает много времени. Системная таблица пользователей недоступна для языка запросов 1С через конструкцию ВЫБРАТЬ ..., однако мы можем использовать объектную коллекцию ПользователиИнформационнойБазы.

Создадим внешнюю обработку и выполним поиск системной записи по доменному логину:


// Укажем доменный логин, на который ругается платформа
ИскомыйПользовательОС = "DOMAIN\UserName"; 

СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Найден = Ложь;

Для Каждого ТекПользователь Из СписокПользователей Цикл
    Если ТекПользователь.АутентификацияОС И ВРег(ТекПользователь.ОСПользователь) = ВРег(ИскомыйПользовательОС) Тогда
        Сообщить("Обнаружен конфликтный пользователь ИБ: " + ТекПользователь.Имя 
            + " (Полное имя: " + ТекПользователь.ПолноеИмя + ", UUID: " + Строка(ТекПользователь.УникальныйИдентификатор) + ")");
        Найден = Истина;
    КонецЕсли;
КонецЦикла;

Если Не Найден Тогда
    Сообщить("Пользователь с параметрами ОС " + ИскомыйПользовательОС + " в списке пользователей ИБ не обнаружен.");
КонецЕсли;

Способ 3. Программное удаление или сброс параметров аутентификации ОС

Когда имя системного пользователя известно, мы можем программно удалить его или очистить свойства операционной системы под учетной записью с полными административными правами:


ИмяКонфликтногоПользователя = "ИмяЗависшегоПользователя";

ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяКонфликтногоПользователя);

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

После удаления дублирующей системной записи или очистки реквизита ОСПользователь возвращаемся в режим «1С:Предприятие» и повторно записываем элемент справочника Пользователи. Запись пройдет без ошибок.

Рекомендации по предотвращению ошибок

  1. Заведение пользователей через режим предприятия: в типовых конфигурациях создание и настройку пользователей рекомендуется выполнять исключительно через прикладной справочник Пользователи, чтобы типовые механизмы корректно связывали системного пользователя и элемент справочника по уникальному идентификатору (UUID).
  2. Проверка внешних пользователей: если в конфигурации включена функциональность внешних пользователей, обязательно проверим справочник Внешние пользователи — системная коллекция для них и обычных пользователей общая.
  3. Недопустимость прямого изменения таблиц СУБД: ни в коем случае не пытайтесь удалять или менять записи в системной таблице пользователей (например, v8users) через SQL-запросы. Это приводит к повреждению целостности базы данных и полной блокировке авторизации. Все операции должны производиться строго через Конфигуратор или объектную модель ПользователиИнформационнойБазы.
← На главную