Имя для входа уже занято 1с
Материал из ISPWiki
Данная ошибка возникает, если вы указываете имя пользователя, которое ранее уже было использовано для регистрации другого клиента.
В биллинге могут использоваться только уникальные имена пользователей для входа в систему.
Для устранения ошибки необходимо указать другое имя пользователя и повторить регистрацию.
— Вася, с сегодняшнего дня пользователей заводишь ты!
— Но я программист, а не сисадмин?!
— Сисадмины не знают 1С, поэтому пользователей заводить будешь ты!
— Ааааа.
В принципе некоторые программисты и не против, поскольку это дает им в руки некоторые «привелегии».
Тем не менее список пользователей в 1С мало отличается от списков пользователей в других программах. Поэтому завести нового пользователя или отключить существующего – проще простого.
Итак, в 1С есть свой список пользователей. С помощью него регулируется доступ к базе данных 1С. При входе в базу данных 1С попросит выбрать пользователя из этого списка и ввести пароль.
Существуют варианты, при которых 1С не спрашивает имя пользователя для входа. Однако это совсем ничего не значит . Просто в этом случае пользователь из списка сопоставлен с пользователем Windows/домена и определяется автоматически. Как
Единственный вариант, когда 1С действительно не запрашивает пользователя – при создании новой (пустой) базы данных. В этом случае список пользователей 1С пуст. Пока не будет добавлен первый пользователь – 1С будет входить автоматически. Аналогичная система используется в Windows при наличии одного пользователя без пароля.
Пользователи 1С отличаются друг от друга:
Как такового «суперпользователя» или «группы администраторов» — не существует. Администратором считается тот пользователь, у которого включены все права в конфигурации и права на администрирование. В пустой базе (когда список пользователей еще пуст) – первым должен быть добавлен именно такой пользователь.
Два списка пользователей 1С
На самом деле в 1С два списка пользователей. Один из них (список пользователей 1С) – с точки зрения программиста «настоящий». Он находится в конфигураторе. Именно по нему 1С определяет пользователя.
Это подход старых типовых конфигураций (например, управление торговлей 10, бухгалтерия 1.6 и т.п.) – пользователи редактируются в этом списке, а в справочник пользователей попадают автоматически при первом входе.
Второй (пользователи версии 1С 8.2, «не настоящий») – это справочник пользователи (и справочник внешние пользователи, как в ут 11). Справочник был и раньше, однако подход новых типовых конфигураций состоит в том, что пользователи заводятся именно в нем, а в «настоящий» список попадают автоматически.
Основная бяка этого подхода состоит в том, что тем кому не нравится так работать и хочется по старому – не могут это сделать, так как при заведении заполняются определенные поля, а если завести пользователя ручками в списке, то они уже не подхватятся в справочнике автоматически.
Как добавить пользователя в список пользователей 1С
Итак, список пользователей 1С находится в конфигураторе. Зайдите в конфигуратор 1С и откройте меню Администрирование/Пользователи.
Чтобы добавить пользователя – необходимо нажать кнопку добавления (или Ins с клавиатуры). Если список сейчас пуст, то первый пользователь должен быть с административными правами (см. далее).
На закладке Прочие выбираются права и основные настройки пользователя.
Права пользователя в конфигурациях обычно разбиты на блоки («роли»). В подходе старых конфигураций они разбивались по должностям пользователей (кассир, менеджер и т.п.). Этот подход имеет минус – так как в разных организациях кассир и менеджер могут иметь разные функции.
Поэтому в подходе новых конфигураций они разбиваются по действиям (доступ к зарытию месяца, доступ к кассовым операциям). То есть для каждого пользователя ставится набор операций.
В обоих случаях есть базовые права на доступ ко входу в программу. В старом подходе это:
В новом подходе это:
PS. Для внешних пользователей базовые права не нужны.
Как добавить пользователя 1С — пользователи 1С 8.2
Список пользователей 1С 8.2 в новом варианте находится в 1С (в режиме 1С Предприятие), в справочниках Пользователи и Внешние пользователи (только если поддерживает конфигурация). Различие состоит в том, что пользователей Вы должны заводить не в конфигураторе, а в этом справочнике, а в конфигуратор они попадут автоматически.
Если Вы используете тонкий клиент – то смотрите закладку рабочего стола Администрирование. Иначе – откройте справочник Пользователей, например, через меню Операции.
Нажмите кнопку Добавить (или Ins с клавиатуры). Чтобы Вы могли управлять списком пользователей, у Вас должны быть включены права ПолныеПрава.
Перейти на закладку Права доступа (Группы доступа) и включить пользователя в нужные группы.
В отличии от первого подхода – здесь Вы не указываете пользователю напрямую каждое право (роль), а указываете группы прав (группы пользователей).
В справочнике Группы пользователей указан профиль, который определяет набор прав (ролей). В справочнике Профили групп пользователей можно изменить или добавить такие наборы прав (ролей).
Настройки пользователей 1С
В некоторых конфигурациях (особенно в конфигурациях старого подхода) – мало создать пользователя. Дополнительно необходимо:
Как отключить пользователя 1С
[Временное] отключение пользователя в большинстве конфигураций не предусмотрено. Здесь указаны вариации, с помощью которых можно достичь этого результата.
Конфигурации старого подхода (через конфигуратор):
Конфигурации нового подхода (через предприятие):
Активные пользователи 1С
1С позволяет узнать список пользователей, которые непосредственно сейчас находятся в базе данных.
Для этого в режиме Предприятие выберите меню Сервис/Активные пользователи (толстый клиент, административный интерфейс). В тонком клиенте – закладка Администрирование, слева Активные пользователи (может быть в См. также).
В режиме Конфигуратор выберите меню Администрирование/Активные пользователи.
Отключение пользователей 1С
Как известно, чтобы обновить базу данных (конфигурацию) – необходимо, чтобы все пользователи вышли из 1С (не во всех случаях, но часто требуется).
Пользователи выходить не любят (это факт). А если их попросить по телефону, то они обязательно войдут снова через 30 секунд. Когда пользователей 200 человек, то это становится очень веселым мероприятием.
Поэтому есть три способа отключения пользователей от 1С:
- Открыть обработку Блокировка установки соединений
o Толстый клиент — через меню Операции или меню Сервис
o Тонкий клиент — на закладке Администрирование, в панели Сервис или через меню Все функции
o Обработка позволяет отключить временно пользователей от базы с указанием периода и рассылкой сообщений пользователям
Через консоль сервера 1С
o Ветка Сервер/Информационные базы/ИмяБазы/Соединения
o Выделить нужного/всех пользователей и нажать Del (не удалите себя!)
o Сообщение пользователям не выдается, просто выбрасывает из базы
Через консоль сервера 1С
o Ветка Сервер/Информационные базы/Имя базы, зайти в Свойства базы по правой кнопке мыши
o Установить блокировку соединения
o Пользователи сбрасываются не мгновенно, им выдается сообщение.
Разработчики в управляемых приложениях применили новый механизм настройки прав доступа, о которых и пойдет речь.
Будут перечислены все те грабли, которые собрал автор, чтобы вы о них знали.
Наверняка, уже все знают, что из себя представляет новая система, поэтому предистория вкрадце:
Как было раньше( в обычном приложении):
Есть документ. Есть Роли — ПолныеПрава, ДокументНетДоступа, ДокументТолькоЧтение, ДокументЧтениеИРедактирование. В конфигураторе(аналогичный механизм в реж предприятия) вы выставляете пользователям эти роли и у них появляются соответствующие права доступа на документ. Все просто и скучно и даже зевать хочется.
С введением управляемого приложения разработчики решили усложнить(читается как расширить) настройки прав доступа.
Теперь:
Вводная та же. Чтобы дать пользователю какие-то права на документ — сначала вам необходимо создать элемент справочника Профили групп доступа. Это некий агрегирующий(суммирующий значения) объект, который объединяет роли в группы ролей. Теоритически таких профилей можно создать сколько угодно много с различным набором ролей( N*(n-1), где N — количество ролей), но на практике количество профилей определяется количеством должностных обязанностей пользователей в организации и их гораздо меньше, чем ролей.
Создаем профили Бесправный(с ролью ДокументНетДоступа), Аудитор(с ролью ДокументТолькоЧтение), Бухгалтер(с ролью ДокументЧтениеИРедактирование).
Чтобы «привязать» эти профили к пользователям — нужно создать элементы справочника ГруппыДоступа. В типовых они создаются автоматически, когда вы отмечаете галочками профили для пользователя. Этот справочник соединяет профиль и пользователя(или нескольких пользователей).
При записи этого элемента справочника система автоматически добавляет роли (из профиля) в роли пользователя. Поэтому не стоит напрямую редактировать роли в конфигураторе, как раньше — при редактировании прав в Предприятии все роли в конфигураторе будут обновлены на роли из профилей пользователя. Кроме того, будет наблюдаться явное противоречение между набором профилей с ролями и ролями, установленными в конфигураторе.
Как хранятся роли в Профиле групп доступа, спросите вы. Ведь роли — это объекты МД, это не ссылочные типы. Отвечаю — для этого(и не только) разработчики создали служебный справочник ИдентификаторыОбъектовМетаданных, в котором хранится( в иерархии!) имена, синонимы, значения пустых ссылок всех объектов МД. Если вы хотите создать Профиль программно и добавить в него роль, то код примерно будет таким:
Но если мы добавили новую роль в конфигурации, то как она попадет в справочник? Хороший вопрос. У справочника ИдентификаторыОбъектовМетаданных есть метод, позволяющий обновлять его данные. это:
Процедуру следует запускать каждый раз, когда вы вносите изменения в метаданные, особенно когда изменяете роли, объекты, связанные с новыми ролями.
Отлично. Роль добавили, идентификаторы обновили.
Но обратная связь не работает — вы в режиме предприятия назначили пользователю профиль( с созданием группы доступа), а роль у пользователя в конфигураторе не добавилась! Что делать?
За синхронизацию ролей/профилей отвечает константа ПараметрыРаботыПользователей. Если роли не обновляются в конфигураторе, следует обновить её значение:
Хорошо, скажите вы. А как быть, если я хочу создать группы доступа программно? Да не вопрос. Единственное ограничение — не допускаются дубли связок Профиль-Пользоваль в группах доступа. Примерный код будет таким:
После выполнения этого кода, если все, что нужно обновлено — типовая конфигурация добавит пользователю роли.
Раз уж пошли по программному пути, вот код, который добавляет пользователя в справочник Пользователи и ПользователяИБ в ПользователиИнформационнойБазы:
Если вы добавляете не программно, то добавлять нужно из режима Предприятия — тогда пользовательИБ у вас сам создатся.
И если раньше, в обычном приложении, достаточно будет добавить польз в конфигураторе — и при заходе в Предприятие, этот польз сам создавался в спр Пользователи, то с управляемым приложением такой фокус не прокатит — система не даст зайти под пользователемИБ, которого нет в справочнике Пользователи.
БСП: Как программно перезаписать пользователя?
Всем пятницы! выручайте, более опытные коллеги, ибо туплю малька. Конфа ERP 2.2.1.100, нужно быстро завести 1200 юзеров(считать с таблицы ods), да так, чтобы сразу можно было входить и работать.
Есть один нюанс: есть юзеры, которых пытался программно создать другой 1С-ник, по сему: есть юзеры ИБ без ролей и есть криво записанный Юзер в справочнике(в списке не отображается, галка «вход в программу разрешен» не установлена, но связь с юзером ИБ есть) и есть руками заведенные «Корректные» юзеры.
Как программно завести новых я разобрался:
&НаСервере
Процедура ЗаписатьПользователя(ФИОЮзера, ИмяДляВхода, ПользовательОбъект, ТекСтрока)
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяДляВхода);
ПользовательОбъект.Наименование = ФИОЮзера;
ОбновляемыеСвойства = Пользователи.НовоеОписаниеПользователяИБ();
ОбновляемыеСвойства.Вставить(«Имя», ИмяДляВхода);
ОбновляемыеСвойства.Вставить(«ПолноеИмя», ФИОЮзера);
ОбновляемыеСвойства.Вставить(«ПоказыватьВСпискеВыбора», Истина);
ОбновляемыеСвойства.Вставить(«АутентификацияСтандартная», Истина);
ОбновляемыеСвойства.Вставить(«УникальныйИдентификатор», ПользовательИБ.УникальныйИдентификатор);
ОбновляемыеСвойства.Вставить(«Действие», «Записать»);
ПользовательОбъект.ДополнительныеСвойства.Вставить(«Действие», «Записать»);
ПользовательОбъект.ДополнительныеСвойства.Вставить(«АутентификацияОС», ЛОЖЬ);
ПользовательОбъект.ДополнительныеСвойства.Вставить(«АутентификацияСтандартная», ИСТИНА);
ПользовательОбъект.ДополнительныеСвойства.Вставить(«ОписаниеПользователяИБ», ОбновляемыеСвойства);
ПользовательОбъект.ФизическоеЛицо = ПроверитьФизЛицо(ФИОЮзера, ТекСтрока.Фамилия, ТекСтрока.Имя, ТекСтрока.Отчество);
ЗаполнитьКИ(ПользовательОбъект,ТекСтрока);
ПользовательОбъект.КодАксапта = ТекСтрока.КодАксапта;
Попытка
ПользовательОбъект.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
//ПриЗаписи пользователя создается пользователь ИБ;
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяДляВхода);
ПользовательИБ.Роли.Добавить(Метаданные.Роли.ЗапускВебКлиента);
ПользовательИБ.Роли.Добавить(Метаданные.Роли.ПолныеПрава);
ПользовательИБ.Роли.Добавить(Метаданные.Роли.ЗапускТонкогоКлиента);
ПользовательИБ.Роли.Добавить(Метаданные.Роли.ЗапускТолстогоКлиента);
Попытка
ПользовательИБ.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
//Добавим в указанную группу доступа;
ГруппаДоступа = Объект.ГруппаДоступа.Ссылка.ПолучитьОбъект();
НовЮзерВГруппе = ГруппаДоступа.Пользователи.Добавить();
НовЮзерВГруппе.Пользователь = ПользовательОбъект;
Попытка
ГруппаДоступа.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
А вот как таким же макаром перезаписать существующих без костылей? Чтобы не удалять их и создавать по новому, а как-то связать существующих.
Заранее спасибо.
Пятнично((
Up: если такой процедурой пытаться перезаписывать существующих, получаем ошибку «Такой пользователь ИБ уже зарегистрирован в системе, укажите другое имя для входа».
Если же как в случае создания нового меняем одну строку:
То получаем «Пользователь с таким именем уже зарегистрирован в справочнике «Пользователи»».
Если в справочнике вручную ставишь галку «Вход в программу разрешен», ругается «Имя для входа уже занято».
Велосипедный вариант: удалить юзера ИБ и перезаписать элемент справочника(юзер иб создается в процессе записи элемента справочника).