К статье
Практический материал

Администрирование · 11 мин

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

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

Программное создание пользователя в 1С требуется при массовом заведении сотрудников, интеграции с кадровыми системами, автоматическом развёртывании баз и настройке прав через регламентные задания. В отличие от ручного заведения через «Администрирование → Пользователи», код позволяет задать имя входа, пароль, роли и привязку к сотруднику одной транзакцией и повторить это для сотен записей без ошибок оператора.

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

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

Где хранятся пользователи: справочник против пользователей ИБ

Пользователь информационной базы — это объект, который платформа хранит в собственном внутреннем списке. У него есть имя входа, пароль (хэш), роли, язык, настройки аутентификации ОС и OpenID. Менеджер ПользователиИнформационнойБазы позволяет получать, создавать и удалять такие записи программно.

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

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

Создание пользователя через БСП (типовые конфигурации)

В конфигурациях «Управление торговлей», «ERP», «Зарплата и управление персоналом», «Бухгалтерия предприятия» и других на БСП используйте программный интерфейс модуля Пользователи. Минимальный сценарий — создать элемент справочника и записать свойства пользователя ИБ.

НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();

НовыйПользователь.Наименование = "Иванов Иван Иванович";

ОписаниеПользователяИБ = Пользователи.НовоеОписаниеПользователяИБ();

ОписаниеПользователяИБ.Имя = "IvanovII";

ОписаниеПользователяИБ.ПолноеИмя = "Иванов Иван Иванович";

ОписаниеПользователяИБ.Пароль = "Temp#2026pass";

ОписаниеПользователяИБ.ПоказыватьВСпискеВыбора = Истина;

ОписаниеПользователяИБ.Роли = Новый Массив;

ОписаниеПользователяИБ.Роли.Добавить("БазовыеПраваБСП");

ОписаниеПользователяИБ.Роли.Добавить("ДобавлениеИзменениеНоменклатуры");

НовыйПользователь.ДополнительныеСвойства.Вставить(

"ОписаниеПользователяИБ", ОписаниеПользователяИБ);

НовыйПользователь.Записать();

При записи подписка БСП автоматически создаст пользователя ИБ и пропишет идентификатор в элемент справочника. Если пользователь ИБ с таким именем уже существует, запись завершится ошибкой — поэтому перед созданием выполняйте проверку уникальности.

Для обновления существующего элемента (смена пароля, добавление роли) используйте процедуру Пользователи.УстановитьСвойстваПользователяИБ, передав идентификатор пользователя ИБ и структуру с новыми значениями. Это безопаснее, чем прямое обращение к объекту ИБ, потому что БСП синхронизирует кэш и служебные реквизиты.

Создание пользователя ИБ напрямую (без БСП)

В самописных конфигурациях и во внешних обработках для простых баз достаточно работы с менеджером пользователей. Код компактнее, но вся ответственность за корректность — на разработчике.

ИмяВхода = "PetrovAP";

// Проверка уникальности

Если ПользователиИнформационнойБазы.НайтиПоИмени(ИмяВхода) <> Неопределено Тогда

ВызватьИсключение "Пользователь с именем """ + ИмяВхода + """ уже существует";

КонецЕсли;

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

ПользовательИБ.Имя = ИмяВхода;

ПользовательИБ.ПолноеИмя = "Петров Алексей Петрович";

ПользовательИБ.Пароль = "Strong#Pass123";

ПользовательИБ.АутентификацияСтандартная = Истина;

ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;

ПользовательИБ.Язык = Метаданные.Языки.Русский;

ПользовательИБ.Роли.Добавить(Метаданные.Роли.БазовыеПрава);

ПользовательИБ.Записать();

Ключевые свойства: АутентификацияСтандартная включает вход по паролю, АутентификацияОС — вход по учётной записи Windows (тогда пароль можно не задавать), ЗапрещеноИзменятьПароль блокирует смену пароля самим пользователем. Роли добавляются ссылками на объекты метаданных, а не строками.

Метод Записать() требует права «Администрирование» у текущего сеанса. Если код выполняется под ограниченной учётной записью, получите ошибку нарушения прав доступа. Для регламентных заданий и фоновых процессов запускайте код в привилегированном режиме или под служебной учётной записью администратора.

bsl
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ПользовательИБ.Имя = "SidorovSA";
ПользовательИБ.ПолноеИмя = "Сидоров Сергей";
ПользовательИБ.Пароль = "Temp#Pass";
ПользовательИБ.Роли.Добавить(Метаданные.Роли.БазовыеПрава);
ПользовательИБ.Записать();

Массовое создание пользователей из файла или таблицы

Типовая задача при внедрении — завести десятки учётных записей по списку сотрудников. Алгоритм: прочитать данные (табличный документ, CSV, запрос к справочнику физических лиц), для каждой строки сформировать имя входа по единому правилу, проверить дубликаты и создать записи в транзакции или с протоколированием ошибок по каждой строке.

Правила формирования имени входа зафиксируйте заранее: транслитерация фамилии и инициалов, без пробелов и кириллицы. Имя входа в 1С не может содержать некоторые спецсимволы, а в клиент-серверном варианте с аутентификацией ОС имя должно соответствовать доменной учётной записи.

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

Порядок массового создания
  1. 1
    Подготовьте список сотрудников с ФИО и ролями
  2. 2
    Сформируйте уникальные имена входа по единому правилу
  3. 3
    Проверьте отсутствие дубликатов через НайтиПоИмени
  4. 4
    Создайте пользователей в цикле с обработкой исключений
  5. 5
    Запишите результат по каждой строке в журнал
  6. 6
    Проверьте вход под двумя-тремя созданными учётными записями

Права, роли и ограничения безопасности

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

Никогда не назначайте роль «ПолныеПрава» или «АдминистраторСистемы» массово и «на всякий случай». Минимально необходимый набор обычно включает базовую роль БСП и одну-две прикладные роли. Избыточные права — главная причина инцидентов с изменением и удалением данных.

Хранение паролей в коде обработки — грубое нарушение. Пароль в примерах выше указан для наглядности; в реальной работе генерируйте его функцией случайной строки или принимайте параметром. Не сохраняйте пароли в открытом виде в журналах, файлах обмена и сообщениях.

Проверка результата и частые ошибки

После создания убедитесь, что учётная запись реально работает: откройте список пользователей в конфигураторе или разделе «Администрирование», проверьте наличие записи, ролей и признака аутентификации. Лучшая проверка — интерактивный вход под новой учётной записью в тонком клиенте.

Программно проверить связь справочника и ИБ можно так: получить пользователя ИБ по идентификатору из элемента справочника через ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору. Если возвращено Неопределено — связь не установилась, вход невозможен.

Типичные ошибки
01
Создан только элемент справочника без пользователя ИБ — вход невозможен, запись выглядит нормальной
02
Отсутствует проверка дубликата имени — исключение при записи и обрыв массовой обработки
03
Пароль задан, но не включена АутентификацияСтандартная — пользователь не может войти по паролю
04
Роль указана строкой с опечаткой вместо ссылки на метаданные — ошибка при записи
05
Код выполняется под пользователем без права Администрирование — отказ в доступе на Записать()
06
Пароли из файла загружены и сохранены в открытом виде — утечка учётных данных

Ещё одна неочевидная проблема — кэш прав в тонком клиенте. Если пользователь уже был в сеансе, изменение ролей может подействовать не сразу; попросите перезапустить сеанс. В клиент-серверном варианте проверьте также, не блокирует ли кластер создание пользователей при активных соединениях в момент обновления конфигурации.

Контрольные точки

Как проверить результат

Запись в списке пользователей ИБ
Норма

Пользователь виден в конфигураторе, роли установлены

Тревожный признак

Записи нет или роли пусты

Связь справочника и ИБ
Норма

НайтиПоУникальномуИдентификатору возвращает объект

Тревожный признак

Возвращается Неопределено

Вход в систему
Норма

Успешная аутентификация под новой учётной записью

Тревожный признак

Ошибка идентификации пользователя

FAQ

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

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

Как задать пользователю роль, которой нет в конфигурации?

Никак: роль должна существовать в метаданных конфигурации. Сначала добавьте роль в конфигураторе и обновите базу, затем назначайте её программно. В БСП также можно использовать группы доступа и профили вместо прямого назначения ролей.

Почему пользователь создан, но не виден в списке выбора при входе?

Проверьте свойство «ПоказыватьВСпискеВыбора» — если оно отключено, имя нужно вводить вручную. Также убедитесь, что запись пользователя ИБ реально существует, а не только элемент справочника «Пользователи».

Как программно сбросить пароль существующему пользователю?

Получите объект через ПользователиИнформационнойБазы.НайтиПоИмени, присвойте новое значение свойству Пароль и вызовите Записать(). В БСП используйте Пользователи.УстановитьСвойстваПользователяИБ — она корректно обновит служебные данные.

Работает ли создание пользователей во внешней обработке?

Да, если код выполняется в серверной процедуре и сеанс обладает правом «Администрирование». В файловой базе достаточно полных прав; в клиент-серверной проверьте, что обработка не запускается в безопасном режиме, который блокирует доступ к пользователям ИБ.

Как удалить программно созданного пользователя?

Для пользователя ИБ: найдите объект и вызовите Удалить(). В конфигурациях на БСП корректнее пометить элемент справочника как недействительный — это сохранит историю связей с документами и не нарушит ссылочную целостность.

Итог

Что важно запомнить

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