Не понимаю, почему мой код выдаёт ошибку
Не понимаю, почему мой код выдаёт ошибку, я студент, так что ошибка может быть очень тупой, но я уже не знаю что делать
Кучу времени уже потратил на различные форумы и видео по 1С, но так и не понял, как решить мою проблему с кодом. Вот сам код.
Код в текстовом формате.
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Пользователь.Логин КАК Логин,
| Пользователь.УникальныйИдентификатор КАК УникальныйИдентификатор
|ИЗ
| Справочник.Пользователь КАК Пользователь
|ГДЕ
| Пользователь.Логин = &Логин";
Запрос.УстановитьПараметр("Логин", Объект.Логин);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() тогда
Если Результат.Количество() = 0 ИЛИ ТекущийОбъект.УникальныйИдентификатор = Результат.УникальнйыйИдентификатор тогда
ПользовательСсылка = ПользовательИнформационнойБазы.НайтиПоУникальномуИдентификатору(Текущий.УникальныйИдентификатор);
Если ПользовательСсылка = Неопределено тогда
НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя();
НовыйПользователь.Имя = Объект.Логин;
НовыйПользователь.Пароль = Объект.Пароль;
НовыйПользователь.ПолноеИмя = Объект.Наименование;
Если Объект.Роль = Перечисления.Роли.Администратор тогда
НовыйПользователь.Роль.Добавить(Метаданные.Роли.Администратор);
ИначеЕсли Объект.Роль = Перечисления.Роли.Менеджер тогда
НовыйПользователь.Роли.Добавить(Метаданные.Роли.Менеджер);
ИначеЕсли Объект.Роль = Перечисления.Роли.Директор тогда
НовыйПользователь.Роли.Добавить(Метаданные.Роли.Директор);
ИначеЕсли Объект.Роль = Перечисления.Роли.Замерщик тогда
НовыйПользователь.Роли.Добавить(Метаданные.Роли.Замерщик);
ИначеЕсли Объект.Роль = Перечисления.Роли.Мастер тогда
НовыйПользователь.Роли.Добавить (Метаданные.Роли.Мастер);
КонецЕсли;
НовыйПользователь.ПоказыватьВСпискеВыбора = Ложь;
НовыйПользователь.Записать();
ТекущийОбъект.УникльныйИдентификатор = НовыйПользователь.УникальныйИдентификатор;
Иначе
ПользовательСсылка.Пароль = Объект.Пароль;
ПользовательСсылка.ПолноеИмя = Объект.Наименование;
ПользовательСсылка.Роли.очистить();
Если Объект.Роль = Перечисления.Роли.Администратор тогда
ПользовательСсылка.Роли.Добавить(Метаданные.Роли.Администратор);
ИначеЕсли Объект.Роль = Перечисления.Роли.Менеджер тогда
ПользовательСсылка.Роли.Добавить (Метаданные.Роли.Менеджер);
ИначеЕсли Объект.Роль = перечисления.Роли.Мастер тогда
НовыйПользователь.Роли.Добавить(Метаданные.Роли.Мастер);
ИначеЕсли Объект.Роль = Перечисления.Роли.Мастер тогда
НовыйПользователь.Роли.Добавить(Метаданные.Роли.Мастер);
КонецЕсли;
Иначе
Сообщ = Новый СообщениеПользователю;
Сообщ.Текст = "Пользователь с таким именем уже существует";
Сообщ.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Иначе
НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя();
НовыйПользователь.Имя = Объект.Логин;
НовыйПользователь.Пароль = Объект.Пароль;
НовыйПользователь.ПолноеИмя = Объект.Наименование;
Если Объект.Роль = Перечисления.Роли.Администратор тогда
НовыйПользователь.Роли.Добавить(Метаданные.Роли.Администратор);
ИначеЕсли Объект.Роль = Перечисления.Роли.Менеджер тогда
ПользовательСсылка.Роли.Добавить (Метаданные.Роли.Менеджер);
ИначеЕсли Объект.Роль = перечисления.Роли.Мастер тогда
НовыйПользователь.Роли.Добавить(Метаданные.Роли.Мастер);
ИначеЕсли Объект.Роль = Перечисления.Роли.Мастер тогда
НовыйПользователь.Роли.Добавить(Метаданные.Роли.Мастер);
КонецЕсли;
НовыйПользователь.ПоказыватьВСпискеВыбора = Ложь;
НовыйПользователь.Записать();
ТекущийОбъект.УникальныйИдентификатор = НовыйПользователь.УникальныйИдентификатор;
КонецЕсли;
Ответы (2 шт):
Для работы с пользователями используйте ПользователиИнформационнойБазы вместо ПользовательИнформационнойБазы
Описание в документации:
ПользователиИнформационнойБазы (InfoBaseUsers)
Использование:
Только чтение.
Описание:
Тип: МенеджерПользователейИнформационнойБазы.
Используется для управления списком пользователей информационной базы.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
А вот результатом работы поиска будет объект ПользовательИнформационнойБазы
Пример:
Пользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Идентификатор);
У вас синтаксические ошибки.
нет ключевого слов Процедура и КонецПроцедуры;
элементы справочника создаются при помощи метода СоздатьЭлемент() Должно быть вот так примерно:
Процедура ЛюбоеИмяПроцедуры() Запрос = новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Пользователь.Логин КАК Логин, | Пользователь.УникальныйИдентификатор КАК УникальныйИдентификатор |ИЗ | Справочник.Пользователь КАК Пользователь |ГДЕ | Пользователь.Логин = &Логин"; Запрос.УстановитьПараметр("Логин", Объект.Логин); Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() тогда Если Результат.Количество() = 0 ИЛИ ТекущийОбъект.УникальныйИдентификатор = Результат.УникальнйыйИдентификатор тогда ПользовательСсылка = Справочники.ПользовательИнформационнойБазы.НайтиПоУникальномуИдентификатору(Текущий.УникальныйИдентификатор); Если ПользовательСсылка = Неопределено тогда НовыйПользователь = Справочники.ПользователиИнформационнойБазы.СоздатьЭлемент(); НовыйПользователь.Имя = Объект.Логин; НовыйПользователь.Пароль = Объект.Пароль; НовыйПользователь.ПолноеИмя = Объект.Наименование; Если Объект.Роль = Перечисления.Роли.Администратор тогда НовыйПользователь.Роль.Добавить(Метаданные.Роли.Администратор); ИначеЕсли Объект.Роль = Перечисления.Роли.Менеджер тогда НовыйПользователь.Роли.Добавить(Метаданные.Роли.Менеджер); ИначеЕсли Объект.Роль = Перечисления.Роли.Директор тогда НовыйПользователь.Роли.Добавить(Метаданные.Роли.Директор); ИначеЕсли Объект.Роль = Перечисления.Роли.Замерщик тогда НовыйПользователь.Роли.Добавить(Метаданные.Роли.Замерщик); ИначеЕсли Объект.Роль = Перечисления.Роли.Мастер тогда НовыйПользователь.Роли.Добавить (Метаданные.Роли.Мастер); КонецЕсли; НовыйПользователь.ПоказыватьВСпискеВыбора = Ложь; НовыйПользователь.Записать(); ТекущийОбъект.УникльныйИдентификатор = НовыйПользователь.УникальныйИдентификатор; Иначе ПользовательСсылка.Пароль = Объект.Пароль; ПользовательСсылка.ПолноеИмя = Объект.Наименование; ПользовательСсылка.Роли.очистить(); Если Объект.Роль = Перечисления.Роли.Администратор тогда ПользовательСсылка.Роли.Добавить(Метаданные.Роли.Администратор); ИначеЕсли Объект.Роль = Перечисления.Роли.Менеджер тогда ПользовательСсылка.Роли.Добавить (Метаданные.Роли.Менеджер); ИначеЕсли Объект.Роль = перечисления.Роли.Мастер тогда НовыйПользователь.Роли.Добавить(Метаданные.Роли.Мастер); ИначеЕсли Объект.Роль = Перечисления.Роли.Мастер тогда НовыйПользователь.Роли.Добавить(Метаданные.Роли.Мастер); КонецЕсли; Иначе Сообщ = Новый СообщениеПользователю; Сообщ.Текст = "Пользователь с таким именем уже существует"; Сообщ.Сообщить(); Отказ = Истина; КонецЕсли; КонецЕсли; Иначе НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя(); НовыйПользователь.Имя = Объект.Логин; НовыйПользователь.Пароль = Объект.Пароль; НовыйПользователь.ПолноеИмя = Объект.Наименование; Если Объект.Роль = Перечисления.Роли.Администратор тогда НовыйПользователь.Роли.Добавить(Метаданные.Роли.Администратор); ИначеЕсли Объект.Роль = Перечисления.Роли.Менеджер тогда ПользовательСсылка.Роли.Добавить (Метаданные.Роли.Менеджер); ИначеЕсли Объект.Роль = перечисления.Роли.Мастер тогда НовыйПользователь.Роли.Добавить(Метаданные.Роли.Мастер); ИначеЕсли Объект.Роль = Перечисления.Роли.Мастер тогда НовыйПользователь.Роли.Добавить(Метаданные.Роли.Мастер); КонецЕсли; НовыйПользователь.ПоказыватьВСпискеВыбора = Ложь; НовыйПользователь.Записать(); ТекущийОбъект.УникальныйИдентификатор = НовыйПользователь.УникальныйИдентификатор; КонецЕсли; КонецПроцедуры
