Выпадающий список и ручной ввод у элемента формы
По теме из базы знаний
- Разработка и сценарное тестирование с Vanessa-ADD. Концепция, теория и сквозной пример создания сценария
- Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки
- Загрузка чеков в 1С из ФНС в документы БП, УНФ, ERP, КА и УТ
- Интеграция 1С с маркетплейсами Ozon и Wildberries для УТ10.3, КА 1.1, УПП 1.3
- Подсистема регулярных заданий
Найденные решения
(10)У меня так сделано. Поле ввода Строка, кнопка выбора Да.
Событие Начало выбора:
Поле ввода можно вводить руками, если оно совпадает со значениями из списка выводится выпадающий список, из которого можно выбрать правильное.
Событие При изменении:
Если введено значение, которого не было в списке, введённое значение добавляется в справочник.
Событие Начало выбора:
&НаКлиенте
Процедура ПодкарантинныйОбъектУточнениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыФормы = Новый Структура("ТекущаяСтрока", ПолучитьТеплоход(СокрЛП(Объект.ПодкарантинныйОбъектУточнение)));
ОткрытьФорму("Справочник.РФО_Теплоходы.Форма.ФормаВыбора", ПараметрыФормы, Элемент);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьТеплоход(Наименование)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РФО_Теплоходы.Ссылка
|ИЗ
| Справочник.РФО_Теплоходы КАК РФО_Теплоходы
|ГДЕ
| РФО_Теплоходы.Наименование = &Наименование
|
|УПОРЯДОЧИТЬ ПО
| РФО_Теплоходы.Наименование";
Запрос.УстановитьПараметр("Наименование", Наименование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Справочники.РФО_Теплоходы.ПустаяСсылка();
Иначе
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецЕсли;
КонецФункции
ПоказатьПоле ввода можно вводить руками, если оно совпадает со значениями из списка выводится выпадающий список, из которого можно выбрать правильное.
Событие При изменении:
&НаКлиенте
Процедура ПодкарантинныйОбъектУточнениеПриИзменении(Элемент)
Если ЗначениеЗаполнено(СокрЛП(Объект.ПодкарантинныйОбъектУточнение)) Тогда
ПодкарантинныйОбъектУточнениеПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПодкарантинныйОбъектУточнениеПриИзмененииНаСервере()
Объект.ПодкарантинныйОбъектУточнение = СокрЛП(Объект.ПодкарантинныйОбъектУточнение);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РФО_Теплоходы.Ссылка
|ИЗ
| Справочник.РФО_Теплоходы КАК РФО_Теплоходы
|ГДЕ
| РФО_Теплоходы.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование", Объект.ПодкарантинныйОбъектУточнение);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
НовыйТеплоход = Справочники.РФО_Теплоходы.СоздатьЭлемент();
НовыйТеплоход.Наименование = Объект.ПодкарантинныйОбъектУточнение;
НовыйТеплоход.Записать();
Иначе
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Объект.ПодкарантинныйОбъектУточнение = Выборка.Ссылка;
КонецЕсли;
КонецПроцедуры
ПоказатьЕсли введено значение, которого не было в списке, введённое значение добавляется в справочник.
(16)
Да, есть НаКлиенте:
А по АвтоПодбору это не все? там наверное есть на клиенте?
Да, есть НаКлиенте:
&НаКлиенте
Процедура ПодкарантинныйОбъектУточнениеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ПодкарантинныйОбъектУточнениеАвтоПодборНаСервере(Текст, ДанныеВыбора);
СтандартнаяОбработка = Ложь
КонецПроцедуры
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(10)У меня так сделано. Поле ввода Строка, кнопка выбора Да.
Событие Начало выбора:
Поле ввода можно вводить руками, если оно совпадает со значениями из списка выводится выпадающий список, из которого можно выбрать правильное.
Событие При изменении:
Если введено значение, которого не было в списке, введённое значение добавляется в справочник.
Событие Начало выбора:
&НаКлиенте
Процедура ПодкарантинныйОбъектУточнениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыФормы = Новый Структура("ТекущаяСтрока", ПолучитьТеплоход(СокрЛП(Объект.ПодкарантинныйОбъектУточнение)));
ОткрытьФорму("Справочник.РФО_Теплоходы.Форма.ФормаВыбора", ПараметрыФормы, Элемент);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьТеплоход(Наименование)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РФО_Теплоходы.Ссылка
|ИЗ
| Справочник.РФО_Теплоходы КАК РФО_Теплоходы
|ГДЕ
| РФО_Теплоходы.Наименование = &Наименование
|
|УПОРЯДОЧИТЬ ПО
| РФО_Теплоходы.Наименование";
Запрос.УстановитьПараметр("Наименование", Наименование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Справочники.РФО_Теплоходы.ПустаяСсылка();
Иначе
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецЕсли;
КонецФункции
ПоказатьПоле ввода можно вводить руками, если оно совпадает со значениями из списка выводится выпадающий список, из которого можно выбрать правильное.
Событие При изменении:
&НаКлиенте
Процедура ПодкарантинныйОбъектУточнениеПриИзменении(Элемент)
Если ЗначениеЗаполнено(СокрЛП(Объект.ПодкарантинныйОбъектУточнение)) Тогда
ПодкарантинныйОбъектУточнениеПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПодкарантинныйОбъектУточнениеПриИзмененииНаСервере()
Объект.ПодкарантинныйОбъектУточнение = СокрЛП(Объект.ПодкарантинныйОбъектУточнение);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РФО_Теплоходы.Ссылка
|ИЗ
| Справочник.РФО_Теплоходы КАК РФО_Теплоходы
|ГДЕ
| РФО_Теплоходы.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование", Объект.ПодкарантинныйОбъектУточнение);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
НовыйТеплоход = Справочники.РФО_Теплоходы.СоздатьЭлемент();
НовыйТеплоход.Наименование = Объект.ПодкарантинныйОбъектУточнение;
НовыйТеплоход.Записать();
Иначе
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Объект.ПодкарантинныйОбъектУточнение = Выборка.Ссылка;
КонецЕсли;
КонецПроцедуры
ПоказатьЕсли введено значение, которого не было в списке, введённое значение добавляется в справочник.
(10)Ещё забыл событие Автоподбор:
&НаСервереБезКонтекста
Процедура ПодкарантинныйОбъектУточнениеАвтоПодборНаСервере(Текст, ДанныеВыбора)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РФО_Теплоходы.Ссылка
|ИЗ
| Справочник.РФО_Теплоходы КАК РФО_Теплоходы
|ГДЕ
| РФО_Теплоходы.Наименование ПОДОБНО &Наименование
| И НЕ РФО_Теплоходы.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| РФО_Теплоходы.Наименование";
Запрос.УстановитьПараметр("Наименование",СокрЛП(Текст)+"%");
ТЗ = Запрос.Выполнить().Выгрузить();
Если ТЗ.Количество()>0 Тогда
СтандартнаяОбработка = Ложь;
Массив = ТЗ.ВыгрузитьКолонку("Ссылка");
СписокЗначений = Новый СписокЗначений;
СписокЗначений.ЗагрузитьЗначения(Массив);
ДанныеВыбора = СписокЗначений;
КонецЕсли;
КонецПроцедуры
Показать
(11)сделала
(15)
А по АвтоПодбору это не все? там наверное есть на клиенте?
(15)
&НаСервереБезКонтекста
Процедура ПодкарантинныйОбъектУточнениеАвтоПодборНаСервере(Текст, ДанныеВыбора)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РФО_Теплоходы.Ссылка
|ИЗ
| Справочник.РФО_Теплоходы КАК РФО_Теплоходы
|ГДЕ
| РФО_Теплоходы.Наименование ПОДОБНО &Наименование
| И НЕ РФО_Теплоходы.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| РФО_Теплоходы.Наименование";
Запрос.УстановитьПараметр("Наименование",СокрЛП(Текст)+"%");
ТЗ = Запрос.Выполнить().Выгрузить();
Если ТЗ.Количество()>0 Тогда
СтандартнаяОбработка = Ложь;
Массив = ТЗ.ВыгрузитьКолонку("Ссылка");
СписокЗначений = Новый СписокЗначений;
СписокЗначений.ЗагрузитьЗначения(Массив);
ДанныеВыбора = СписокЗначений;
КонецЕсли;
КонецПроцедуры
ПоказатьПроцедура ПодкарантинныйОбъектУточнениеАвтоПодборНаСервере(Текст, ДанныеВыбора)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РФО_Теплоходы.Ссылка
|ИЗ
| Справочник.РФО_Теплоходы КАК РФО_Теплоходы
|ГДЕ
| РФО_Теплоходы.Наименование ПОДОБНО &Наименование
| И НЕ РФО_Теплоходы.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| РФО_Теплоходы.Наименование";
Запрос.УстановитьПараметр("Наименование",СокрЛП(Текст)+"%");
ТЗ = Запрос.Выполнить().Выгрузить();
Если ТЗ.Количество()>0 Тогда
СтандартнаяОбработка = Ложь;
Массив = ТЗ.ВыгрузитьКолонку("Ссылка");
СписокЗначений = Новый СписокЗначений;
СписокЗначений.ЗагрузитьЗначения(Массив);
ДанныеВыбора = СписокЗначений;
КонецЕсли;
КонецПроцедуры
А по АвтоПодбору это не все? там наверное есть на клиенте?
(16)
Да, есть НаКлиенте:
А по АвтоПодбору это не все? там наверное есть на клиенте?
Да, есть НаКлиенте:
&НаКлиенте
Процедура ПодкарантинныйОбъектУточнениеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ПодкарантинныйОбъектУточнениеАвтоПодборНаСервере(Текст, ДанныеВыбора);
СтандартнаяОбработка = Ложь
КонецПроцедуры
(18)
&НаКлиенте
Процедура НаградыФизическихЛицНомерПриказаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТЧНаграда =Элементы.НаградыФизическихЛиц.ТекущиеДанные;
ПараметрыФормы = Новый Структура("ТекущаяСтрока", ПолучитьНаграду(ТЧНаграда.Награда));
ОткрытьФорму("Справочник.Награды.Форма.ФормаЭлемента", ПараметрыФормы, Элемент);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьНаграду(Награда)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НаградыНомераИДатыПриказов.НомерПриказа КАК НомерПриказа
|ИЗ
| Справочник.Награды.НомераИДатыПриказов КАК НаградыНомераИДатыПриказов
|ГДЕ
| НаградыНомераИДатыПриказов.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Награда);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
НомерПриказа="";
Возврат НомерПриказа;
Иначе
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.НомерПриказа;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура НаградыФизическихЛицНомерПриказаПриИзменении(Элемент)
ТЧНаграда =Элементы.НаградыФизическихЛиц.ТекущиеДанные;
Если ЗначениеЗаполнено(ТЧНаграда.Награда) Тогда
НаградыФизическихЛицНомерПриказаПриИзмененииНаСервере(ТЧНаграда.Награда,ТЧНаграда.НомерПриказа);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НаградыФизическихЛицНомерПриказаПриИзмененииНаСервере(Награда,НомерПриказа)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НаградыНомераИДатыПриказов.НомерПриказа КАК НомерПриказа
|ИЗ
| Справочник.Награды.НомераИДатыПриказов КАК НаградыНомераИДатыПриказов
|ГДЕ
| НаградыНомераИДатыПриказов.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Награда);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий() ;
НомерПриказа = Выборка.НомерПриказа;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура НаградыФизическихЛицНомерПриказаАвтоПодборНаСервере(Текст, ДанныеВыбора,Награда)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НаградыНомераИДатыПриказов.НомерПриказа КАК НомерПриказа
|ИЗ
| Справочник.Награды.НомераИДатыПриказов КАК НаградыНомераИДатыПриказов
|ГДЕ
| НаградыНомераИДатыПриказов.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Награда);
ТЗ = Запрос.Выполнить().Выгрузить();
Если ТЗ.Количество()>0 Тогда
СтандартнаяОбработка = Ложь;
Массив = ТЗ.ВыгрузитьКолонку("НомерПриказа");
СписокЗначений = Новый СписокЗначений;
СписокЗначений.ЗагрузитьЗначения(Массив);
ДанныеВыбора = СписокЗначений;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаградыФизическихЛицНомерПриказаАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ТЧНаграда = Элементы.НаградыФизическихЛиц.ТекущиеДанные;
НаградыФизическихЛицНомерПриказаАвтоПодборНаСервере(Текст, ДанныеВыбора,ТЧНаграда.Награда);
СтандартнаяОбработка = Ложь
КонецПроцедуры
Показать
(21)У меня при начале ввода подбираются в список выбора подходящие значения. Если выбрать из предложенного списка, а затем нажать кнопку Выбора, то будет активна строка с выбранным значением. Если ввести новое значение, то оно добавится в справочник и при следующем нажатии на кнопку выбора будет активна добавленная строка.
Прикрепленные файлы:
(19)У вас же в запросе:
То есть вы отбираете по ссылке.
А передаёте вы в поле:
Естественно НомерПриказа в Ссылке не найдётся.
Запрос.Текст =
"ВЫБРАТЬ
| НаградыНомераИДатыПриказов.НомерПриказа КАК НомерПриказа
|ИЗ
| Справочник.Награды.НомераИДатыПриказов КАК НаградыНомераИДатыПриказов
|ГДЕ
| НаградыНомераИДатыПриказов.Ссылка = &Ссылка";
То есть вы отбираете по ссылке.
А передаёте вы в поле:
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий() ;
НомерПриказа = Выборка.НомерПриказа;
КонецЕсли;
Естественно НомерПриказа в Ссылке не найдётся.
(0) Чтобы сделать выпадающий список одновременно с ручным вводом у элемента формы нужно:
В свойствах элемента - поля ввода указать:
● КнопкаВыпадающегоСписка = Да
● РежимВыбораИзСписка = Нет
● СписокВыбора - пусто
Указать обработчик события АвтоПодбор:
Это все, можно и редактировать текст, и выбирать его из списка
В свойствах элемента - поля ввода указать:
● КнопкаВыпадающегоСписка = Да
● РежимВыбораИзСписка = Нет
● СписокВыбора - пусто
Указать обработчик события АвтоПодбор:
&НаКлиенте
Процедура НоменклатураАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
Если Ожидание = 0 Тогда
ДанныеВыбора = Новый СписокЗначений;
ДанныеВыбора.Добавить("Яблоки");
ДанныеВыбора.Добавить("Помидоры");
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
ПоказатьЭто все, можно и редактировать текст, и выбирать его из списка
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот