|
0
Reraru
03.03.20
✎
10:32
|
Ошибка в том что подставляется значения из реквизита Наименование справочника Пользователи.
У Иванова И.И. пока та же почта mujic@mail.ru
Как можно решить эту проблему и по возможности упростить код ?
На общей форме Авторизация, есть поле ввода почта (можно и логин).
После регистрации у админа (или сервера) в базе данных (форма списка справочники Пользователи) остаются данные от зарегистрированного пользователя.
Пользователю во время авторизации нужно ввести первые несколько букв (цифр) логина, и тогда ему выведется в поле ввода все совпадения, из которых он выберёт нужное.
Это как аналог функции "запомнить" логин и пароль. Проблемка в том что я недоконца разобрался как сделать задуманное.
[CODE]
&НаКлиенте
Процедура ПочтаАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
Если Ожидание <> 0 И Не ПустаяСтрока(Текст) Тогда
СтандартнаяОбработка = Ложь;
ДанныеВыбора = ПолучитьСписокВыбораЛогинов(Текст);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПочтаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
Если ТипЗнч(Элементы.Почта) = Тип("СправочникСсылка.Пользователи") И ЗначениеЗаполнено(Элементы.Почта) Тогда
ПараметрыФормы.Вставить("ТекущаяСтрока", Элементы.Почта);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
функция ПолучитьСписокВыбораЛогинов(знач СтрокаПоиска)
СписокВыбораЛогинов = Новый СписокЗначений;
ПараметрыВыбора = Новый Структура;
ПараметрыВыбора.Вставить("Отбор", Новый Структура("ПометкаУдаления", Ложь));
ПараметрыВыбора.Вставить("СтрокаПоиска", СтрокаПоиска);
ПараметрыВыбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
ДанныеВыбораЛогина = Справочники.Пользователи.ПолучитьДанныеВыбора(ПараметрыВыбора);
Для Каждого ЭлементСписка Из ДанныеВыбораЛогина Цикл
СписокВыбораЛогинов.Добавить(ЭлементСписка.Значение, Новый ФорматированнаяСтрока (ЭлементСписка.Представление, "(логин)"));
КонецЦикла;
Возврат СписокВыбораЛогинов;
КонецФункции
[/CODE]
|
|
|
2
Reraru
03.03.20
✎
19:06
|
(1) Реквизит же на общей форме авторизация, отвечает за вход.
, и называется почта, но с типом строка. Так как зарегистрированному пользователю не нужно при входе заново задавать почту. Поэтому на общей форме у реквизита почта, не стоит тип ссылка на справочник пользователи.
Вообще реквизит почта используется как аналог логина (пока что так).
Я пробовал настроить ВводПоСтроке, в архиве пояснительные картинки. И хоть теперь поиск происходит правильно, но значение всё равно пока что подставляется автоматически из реквизита Наименование.
Возможно тогда нужна дополнительная обработка (событие) ? Какая?
|
|
|
4
Reraru
03.03.20
✎
23:03
|
Я в тупике вместе со своей ошибкой. Пробую запросом в событии ОбработкаВыбора (поле почта на общей форме), а он не определяется:
СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Пользователи.Почта КАК Почта
|ИЗ
| Справочник.Пользователи КАК Пользователи
|
|СГРУППИРОВАТЬ ПО
| Пользователи.Почта";
|
|