Имя: Пароль:
1C
1С v8
Поиск вводом по строке и подстановка в поле нужного значения.
0 Reraru
 
03.03.20
10:32
Ошибка в том что подставляется значения из реквизита Наименование справочника Пользователи.
У Иванова И.И. пока та же почта [email protected]
Как можно решить эту проблему и по возможности упростить код ?


На общей форме Авторизация, есть поле ввода почта (можно и логин).
После регистрации у админа (или сервера) в базе данных (форма списка справочники Пользователи) остаются данные от зарегистрированного пользователя.
Пользователю во время авторизации нужно ввести первые несколько букв (цифр) логина, и тогда ему выведется в поле ввода все совпадения, из которых он выберёт нужное.
Это как аналог функции "запомнить" логин и пароль. Проблемка в том что я недоконца разобрался как сделать задуманное.

[CODE]

&НаКлиенте
Процедура ПочтаАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)

    Если Ожидание <> 0 И Не ПустаяСтрока(Текст) Тогда
        СтандартнаяОбработка = Ложь;
        ДанныеВыбора = ПолучитьСписокВыбораЛогинов(Текст);
    КонецЕсли;
        
КонецПроцедуры


&НаКлиенте
Процедура ПочтаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
        ПараметрыФормы = Новый Структура;
    Если ТипЗнч(Элементы.Почта) = Тип("СправочникСсылка.Пользователи") И ЗначениеЗаполнено(Элементы.Почта) Тогда
        
        ПараметрыФормы.Вставить("ТекущаяСтрока", Элементы.Почта);
    КонецЕсли;

    
КонецПроцедуры

&НаСервереБезКонтекста
функция ПолучитьСписокВыбораЛогинов(знач СтрокаПоиска)
    
СписокВыбораЛогинов = Новый СписокЗначений;

    ПараметрыВыбора = Новый Структура;
    ПараметрыВыбора.Вставить("Отбор", Новый Структура("ПометкаУдаления", Ложь));
    ПараметрыВыбора.Вставить("СтрокаПоиска", СтрокаПоиска);
    ПараметрыВыбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
    
ДанныеВыбораЛогина = Справочники.Пользователи.ПолучитьДанныеВыбора(ПараметрыВыбора);

Для Каждого ЭлементСписка Из ДанныеВыбораЛогина Цикл

    СписокВыбораЛогинов.Добавить(ЭлементСписка.Значение, Новый ФорматированнаяСтрока (ЭлементСписка.Представление, "(логин)"));    
    
КонецЦикла;

Возврат СписокВыбораЛогинов;
    
КонецФункции


[/CODE]
1 catena
 
03.03.20
10:41
(0)Если добавить этот реквизит в ВводПоСтроке, кодировать вообще ничего не придется.
2 Reraru
 
03.03.20
19:06
(1) Реквизит же на общей форме авторизация, отвечает за вход.
, и называется почта, но с типом строка. Так как зарегистрированному пользователю не нужно при входе заново задавать почту. Поэтому на общей форме у реквизита почта, не стоит тип ссылка на справочник пользователи.
Вообще реквизит почта используется как аналог логина (пока что так).
Я пробовал настроить ВводПоСтроке, в архиве пояснительные картинки. И хоть теперь поиск происходит правильно, но значение всё равно пока что подставляется автоматически из реквизита Наименование.
Возможно тогда нужна дополнительная обработка (событие) ? Какая?
https://cloud.mail.ru/public/eXqw/qMuLTGRaj
3 Reraru
 
03.03.20
22:22
люди. хелп!
4 Reraru
 
03.03.20
23:03
Я в тупике вместе со своей ошибкой. Пробую запросом в событии ОбработкаВыбора (поле почта на общей форме), а он не определяется:

    СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;    
Запрос.Текст = "ВЫБРАТЬ
|    Пользователи.Почта КАК Почта
|ИЗ
|    Справочник.Пользователи КАК Пользователи
|
|СГРУППИРОВАТЬ ПО
|    Пользователи.Почта";
2 + 2 = 3.9999999999999999999999999999999...