Администрирование · 11 мин
Как создать пользователя 1С программно
Программное создание пользователя 1С через Справочник.Пользователи и ПользователиИнформационнойБазы: код, права, пароль, проверка результата и типичные ошибки.
Программное создание пользователя в 1С требуется при массовом заведении сотрудников, интеграции с кадровыми системами, автоматическом развёртывании баз и настройке прав через регламентные задания. В отличие от ручного заведения через «Администрирование → Пользователи», код позволяет задать имя входа, пароль, роли и привязку к сотруднику одной транзакцией и повторить это для сотен записей без ошибок оператора.
В типовых конфигурациях на БСП (Библиотека стандартных подсистем) пользователь существует одновременно в двух местах: в справочнике «Пользователи» и в хранилище пользователей информационной базы. Создать только элемент справочника недостаточно — без записи в ИБ человек не сможет войти. Правильный подход — использовать API БСП или создавать обе сущности последовательно.
Ниже разобраны оба способа: через типовые процедуры БСП и напрямую через менеджер ПользователиИнформационнойБазы. Примеры работают на управляемых формах, в файловых и клиент-серверных базах; отличия и ограничения указаны отдельно.
Где хранятся пользователи: справочник против пользователей ИБ
Пользователь информационной базы — это объект, который платформа хранит в собственном внутреннем списке. У него есть имя входа, пароль (хэш), роли, язык, настройки аутентификации ОС и OpenID. Менеджер ПользователиИнформационнойБазы позволяет получать, создавать и удалять такие записи программно.
Справочник «Пользователи» — прикладной объект БСП. В нём хранятся дополнительные сведения: подразделение, физическое лицо, фото, комментарий, недействительность. Именно элемент справочника связывается с документами, ответственными и настройками. Связь двух сущностей идёт через реквизит «ИдентификаторПользователяИБ» (UUID записи в ИБ).
Из этого следует главное правило: если конфигурация построена на БСП, создавайте пользователя через API подсистемы «Пользователи», а не вручную двумя записями. Ручное дублирование почти гарантированно приведёт к рассинхронизации: элемент справочника есть, а входа нет, или наоборот.
Создание пользователя через БСП (типовые конфигурации)
В конфигурациях «Управление торговлей», «ERP», «Зарплата и управление персоналом», «Бухгалтерия предприятия» и других на БСП используйте программный интерфейс модуля Пользователи. Минимальный сценарий — создать элемент справочника и записать свойства пользователя ИБ.
НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();
НовыйПользователь.Наименование = "Иванов Иван Иванович";
ОписаниеПользователяИБ = Пользователи.НовоеОписаниеПользователяИБ();
ОписаниеПользователяИБ.Имя = "IvanovII";
ОписаниеПользователяИБ.ПолноеИмя = "Иванов Иван Иванович";
ОписаниеПользователяИБ.Пароль = "Temp#2026pass";
ОписаниеПользователяИБ.ПоказыватьВСпискеВыбора = Истина;
ОписаниеПользователяИБ.Роли = Новый Массив;
ОписаниеПользователяИБ.Роли.Добавить("БазовыеПраваБСП");
ОписаниеПользователяИБ.Роли.Добавить("ДобавлениеИзменениеНоменклатуры");
НовыйПользователь.ДополнительныеСвойства.Вставить(
"ОписаниеПользователяИБ", ОписаниеПользователяИБ);
НовыйПользователь.Записать();
При записи подписка БСП автоматически создаст пользователя ИБ и пропишет идентификатор в элемент справочника. Если пользователь ИБ с таким именем уже существует, запись завершится ошибкой — поэтому перед созданием выполняйте проверку уникальности.
Для обновления существующего элемента (смена пароля, добавление роли) используйте процедуру Пользователи.УстановитьСвойстваПользователяИБ, передав идентификатор пользователя ИБ и структуру с новыми значениями. Это безопаснее, чем прямое обращение к объекту ИБ, потому что БСП синхронизирует кэш и служебные реквизиты.
Создание пользователя ИБ напрямую (без БСП)
В самописных конфигурациях и во внешних обработках для простых баз достаточно работы с менеджером пользователей. Код компактнее, но вся ответственность за корректность — на разработчике.
ИмяВхода = "PetrovAP";
// Проверка уникальности
Если ПользователиИнформационнойБазы.НайтиПоИмени(ИмяВхода) <> Неопределено Тогда
ВызватьИсключение "Пользователь с именем """ + ИмяВхода + """ уже существует";
КонецЕсли;
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ПользовательИБ.Имя = ИмяВхода;
ПользовательИБ.ПолноеИмя = "Петров Алексей Петрович";
ПользовательИБ.Пароль = "Strong#Pass123";
ПользовательИБ.АутентификацияСтандартная = Истина;
ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
ПользовательИБ.Язык = Метаданные.Языки.Русский;
ПользовательИБ.Роли.Добавить(Метаданные.Роли.БазовыеПрава);
ПользовательИБ.Записать();
Ключевые свойства: АутентификацияСтандартная включает вход по паролю, АутентификацияОС — вход по учётной записи Windows (тогда пароль можно не задавать), ЗапрещеноИзменятьПароль блокирует смену пароля самим пользователем. Роли добавляются ссылками на объекты метаданных, а не строками.
Метод Записать() требует права «Администрирование» у текущего сеанса. Если код выполняется под ограниченной учётной записью, получите ошибку нарушения прав доступа. Для регламентных заданий и фоновых процессов запускайте код в привилегированном режиме или под служебной учётной записью администратора.
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ПользовательИБ.Имя = "SidorovSA";
ПользовательИБ.ПолноеИмя = "Сидоров Сергей";
ПользовательИБ.Пароль = "Temp#Pass";
ПользовательИБ.Роли.Добавить(Метаданные.Роли.БазовыеПрава);
ПользовательИБ.Записать();Массовое создание пользователей из файла или таблицы
Типовая задача при внедрении — завести десятки учётных записей по списку сотрудников. Алгоритм: прочитать данные (табличный документ, CSV, запрос к справочнику физических лиц), для каждой строки сформировать имя входа по единому правилу, проверить дубликаты и создать записи в транзакции или с протоколированием ошибок по каждой строке.
Правила формирования имени входа зафиксируйте заранее: транслитерация фамилии и инициалов, без пробелов и кириллицы. Имя входа в 1С не может содержать некоторые спецсимволы, а в клиент-серверном варианте с аутентификацией ОС имя должно соответствовать доменной учётной записи.
Обязательно ведите журнал: какие записи созданы, какие пропущены и почему. При массовой обработке не прерывайте весь цикл из-за одной ошибки — фиксируйте проблемную строку и продолжайте. Пароли для первого входа генерируйте случайные и передавайте сотрудникам по защищённому каналу, а не общим списком.
- 1Подготовьте список сотрудников с ФИО и ролями
- 2Сформируйте уникальные имена входа по единому правилу
- 3Проверьте отсутствие дубликатов через НайтиПоИмени
- 4Создайте пользователей в цикле с обработкой исключений
- 5Запишите результат по каждой строке в журнал
- 6Проверьте вход под двумя-тремя созданными учётными записями
Права, роли и ограничения безопасности
Программное создание пользователей — административная операция. В клиент-серверном варианте она выполняется на сервере, поэтому код следует размещать в серверных процедурах общих модулей или выполнять через внешнюю обработку с серверным вызовом. Выполнение на клиенте завершится ошибкой недоступности контекста.
Никогда не назначайте роль «ПолныеПрава» или «АдминистраторСистемы» массово и «на всякий случай». Минимально необходимый набор обычно включает базовую роль БСП и одну-две прикладные роли. Избыточные права — главная причина инцидентов с изменением и удалением данных.
Хранение паролей в коде обработки — грубое нарушение. Пароль в примерах выше указан для наглядности; в реальной работе генерируйте его функцией случайной строки или принимайте параметром. Не сохраняйте пароли в открытом виде в журналах, файлах обмена и сообщениях.
Проверка результата и частые ошибки
После создания убедитесь, что учётная запись реально работает: откройте список пользователей в конфигураторе или разделе «Администрирование», проверьте наличие записи, ролей и признака аутентификации. Лучшая проверка — интерактивный вход под новой учётной записью в тонком клиенте.
Программно проверить связь справочника и ИБ можно так: получить пользователя ИБ по идентификатору из элемента справочника через ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору. Если возвращено Неопределено — связь не установилась, вход невозможен.
Ещё одна неочевидная проблема — кэш прав в тонком клиенте. Если пользователь уже был в сеансе, изменение ролей может подействовать не сразу; попросите перезапустить сеанс. В клиент-серверном варианте проверьте также, не блокирует ли кластер создание пользователей при активных соединениях в момент обновления конфигурации.
Как проверить результат
Пользователь виден в конфигураторе, роли установлены
Записи нет или роли пусты
НайтиПоУникальномуИдентификатору возвращает объект
Возвращается Неопределено
Успешная аутентификация под новой учётной записью
Ошибка идентификации пользователя
FAQ
Можно ли создать пользователя 1С без пароля?
Да, если включена аутентификация операционной системы или OpenID — тогда пароль не требуется. Для стандартной аутентификации пароль можно оставить пустым только если политика безопасности это разрешает, но такой подход небезопасен и не рекомендуется.
Как задать пользователю роль, которой нет в конфигурации?
Никак: роль должна существовать в метаданных конфигурации. Сначала добавьте роль в конфигураторе и обновите базу, затем назначайте её программно. В БСП также можно использовать группы доступа и профили вместо прямого назначения ролей.
Почему пользователь создан, но не виден в списке выбора при входе?
Проверьте свойство «ПоказыватьВСпискеВыбора» — если оно отключено, имя нужно вводить вручную. Также убедитесь, что запись пользователя ИБ реально существует, а не только элемент справочника «Пользователи».
Как программно сбросить пароль существующему пользователю?
Получите объект через ПользователиИнформационнойБазы.НайтиПоИмени, присвойте новое значение свойству Пароль и вызовите Записать(). В БСП используйте Пользователи.УстановитьСвойстваПользователяИБ — она корректно обновит служебные данные.
Работает ли создание пользователей во внешней обработке?
Да, если код выполняется в серверной процедуре и сеанс обладает правом «Администрирование». В файловой базе достаточно полных прав; в клиент-серверной проверьте, что обработка не запускается в безопасном режиме, который блокирует доступ к пользователям ИБ.
Как удалить программно созданного пользователя?
Для пользователя ИБ: найдите объект и вызовите Удалить(). В конфигурациях на БСП корректнее пометить элемент справочника как недействительный — это сохранит историю связей с документами и не нарушит ссылочную целостность.
Что важно запомнить
В типовых конфигурациях создавайте пользователя через API БСП, в самописных — через ПользователиИнформационнойБазы.СоздатьПользователя(). Проверяйте уникальность имени, назначайте минимально необходимые роли, не храните пароли в коде и тестируйте массовые операции на копии базы. Финальная проверка — реальный вход под созданной учётной записью.