Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Поиск вводом по строке и подстановка в поле нужного значения.

Поиск вводом по строке и подстановка в поле нужного значения.
Я
   Reraru
 
03.03.20 - 10:32
Ошибка в том что подставляется значения из реквизита Наименование справочника Пользователи.
У Иванова И.И. пока та же почта mujic@mail.ru
Как можно решить эту проблему и по возможности упростить код ?


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

[CODE]

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

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


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

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

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

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

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

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

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


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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.