Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 09:33

Подскажите, пож. как сделать Генерацию поисковых подсказок (или не знаю, как это называется)

Автор Alina24, 23 июн 2024, 12:19

0 Пользователей и 1 гость просматривают эту тему.

Alina24

Без имени.pngПодскажите, пож. как сделать Генерацию поисковых подсказок (или не знаю, как это называется). Суть: есть справочник сотрудников или пациентов (Фамилия, Имя, Отчество). Эти данные - строка.
Вопрос: можно ли в 1С8.3 при занесении нового ИМЕНИ (или Отчества) при наборе 2-3 букв уже выпадали варианты имен? Если не очень понятно объяснила, то образец есть на сайте gigtest.ru при занесении нового пациента.
Попробовали стандартными инструментами типа СписокВыбора - не получилось, очень долго висит документ при Открытии.
Может кто то подскажет? Спасибо.

antoneus

Цитата: Alina24 от 23 июн 2024, 12:19Вопрос: можно ли в 1С8.3 при занесении нового ИМЕНИ (или Отчества) при наборе 2-3 букв уже выпадали варианты имен?

Можно. Для этого надо написать обработчик события поля ввода АвтоПодбор. В нем можно заполнить список выбора уже не всеми именами или отчествами, а отобранными по введенным буквам.

Alina24

antoneus, спасибо большое за ответ. Я сейчас напишу, что мы сделали: создали РегистрСведений с возможными ИМЕНАМИ.  Но большая проблема - при открытии элемента справочника пациента (что бы занести нового человека) очень сильно висит программа и сам документ. Есть какой то выход? Или то, что Вы написали - это другой алгоритм.

antoneus

Выход есть всегда (ну, почти) :) Покажите код, которым сейчас заполняется список выбора.

Alina24

antoneus, вот такой алгоритм:

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


&НаСервереБезКонтекста
Функция СписокИмен(ТекИмя)

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекИмя", Врег(Лев(ТекИмя, 1))+ Нрег(Сред(ТекИмя, 2)) + "%");
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| АмбулаторныеКарты.Имя КАК ИмяПациента
|ИЗ
| Справочник.АмбулаторныеКарты КАК АмбулаторныеКарты
|ГДЕ
| НЕ АмбулаторныеКарты.ПометкаУдаления
| И АмбулаторныеКарты.Имя ПОДОБНО &ТекИмя
|
|УПОРЯДОЧИТЬ ПО
| ИмяПациента";

Мас = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ИмяПациента");
возврат Мас;

КонецФункции

LexaK

Alina24, в запросах без разницы заглавные или нет символы
поэтому это
Запрос.УстановитьПараметр("ТекИмя", Врег(Лев(ТекИмя, 1))+ Нрег(Сред(ТекИмя, 2)) +  "%");

можно следать так
Запрос.УстановитьПараметр("ТекИмя", ТекИмя + "%");
если помогло нажмите: Спасибо!

Похожие темы (5)

Рейтинг@Mail.ru

Поиск