Привет всем)Подскажите как установить в УФ ,что поле ввода дб выпадающим списком и должен быть еще ручной ввод?
Программно установила список значений выпадающего списка,а как сделать еще возможность ручного ввода значений не пойму.
---
У меня так сделано. Поле ввода Строка, кнопка выбора Да.
Событие Начало выбора:

```1c
    &НаКлиенте
    Процедура ПодкарантинныйОбъектУточнениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ПараметрыФормы = Новый Структура("ТекущаяСтрока", ПолучитьТеплоход(СокрЛП(Объект.ПодкарантинныйОбъектУточнение)));
    ОткрытьФорму("Справочник.РФО_Теплоходы.Форма.ФормаВыбора", ПараметрыФормы, Элемент);
    КонецПроцедуры

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

Поле ввода можно вводить руками, если оно совпадает со значениями из списка выводится выпадающий список, из которого можно выбрать правильное.

Событие При изменении:

```1c
    &НаКлиенте
    Процедура ПодкарантинныйОбъектУточнениеПриИзменении(Элемент)
    Если ЗначениеЗаполнено(СокрЛП(Объект.ПодкарантинныйОбъектУточнение)) Тогда
    ПодкарантинныйОбъектУточнениеПриИзмененииНаСервере();
    КонецЕсли;
    КонецПроцедуры

    &НаСервере
    Процедура ПодкарантинныйОбъектУточнениеПриИзмененииНаСервере()
    Объект.ПодкарантинныйОбъектУточнение = СокрЛП(Объект.ПодкарантинныйОбъектУточнение);
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | РФО_Теплоходы.Ссылка
    |ИЗ
    | Справочник.РФО_Теплоходы КАК РФО_Теплоходы
    |ГДЕ
    | РФО_Теплоходы.Наименование = &Наименование";
    Запрос.УстановитьПараметр("Наименование", Объект.ПодкарантинныйОбъектУточнение);
    РезультатЗапроса = Запрос.Выполнить();
    Если РезультатЗапроса.Пустой() Тогда
    НовыйТеплоход = Справочники.РФО_Теплоходы.СоздатьЭлемент();
    НовыйТеплоход.Наименование = Объект.ПодкарантинныйОбъектУточнение;
    НовыйТеплоход.Записать();
    Иначе
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующий();
    Объект.ПодкарантинныйОбъектУточнение = Выборка.Ссылка;
    КонецЕсли;
    КонецПроцедуры
```

Если введено значение, которого не было в списке, введённое значение добавляется в справочник.
---
А по АвтоПодбору это не все? там наверное есть на клиенте?
Да, есть НаКлиенте:

```1c
    &НаКлиенте
    Процедура ПодкарантинныйОбъектУточнениеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
    ПодкарантинныйОбъектУточнениеАвтоПодборНаСервере(Текст, ДанныеВыбора);
    СтандартнаяОбработка = Ложь
    КонецПроцедуры
```
---
Добавить реквизит объекта с типом строка, вынести на форму, заполнить список выбора и поставить галку редактирование текста
---
Редактирование текста стоит галка, список я заполняю программно из запроса,тип реквизита с выпадающим списком -строка,все равно нет возможности ручного ввода
---
Верно,элемента списка с типом строка. Но получается, что редактируешь элемент списка, так не получится, как строку его редактировать. Если нужно строкой редактировать, то и тип элемента должен быть строка, а не сз с типом строка. Как вариант в 1 можно
---
не поняла,у меня тип элемента итак строка!просто выбор идет из списка значений
---
"выбор идет из списка значений" . Редактировать строкой можно только строку!
Проще посмотрите в поисковике СписокВыбора 1С
---
у меня стоит галка-режим выбора из списка
---
Если вы хотите чтобы была возможность вводить значения не из списка выбора, отключите режим выбора из списка и включите свойство поля КнопкаВыпадающегоСписка.
---
Хорошо,а как тогда заполнить выпадающий список ?
---
Выпадающий список формируется из списка выбора элемента.
---
а как программно его заполнить?Он должен заполняться выборкой
---
```1c
    СписокВыбора = Элементы.Реквизит1.СписокВыбора;
    Пока Выборка.Следующий() Цикл
    СписокВыбора.Добавить(Выборка.Значение);
    КонецЦикла;
```
---
(11)Ребят,спасибо)Сейчас попробую
---
У меня так сделано. Поле ввода Строка, кнопка выбора Да.
Событие Начало выбора:

```1c
    &НаКлиенте
    Процедура ПодкарантинныйОбъектУточнениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ПараметрыФормы = Новый Структура("ТекущаяСтрока", ПолучитьТеплоход(СокрЛП(Объект.ПодкарантинныйОбъектУточнение)));
    ОткрытьФорму("Справочник.РФО_Теплоходы.Форма.ФормаВыбора", ПараметрыФормы, Элемент);
    КонецПроцедуры

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

Поле ввода можно вводить руками, если оно совпадает со значениями из списка выводится выпадающий список, из которого можно выбрать правильное.

Событие При изменении:

```1c
    &НаКлиенте
    Процедура ПодкарантинныйОбъектУточнениеПриИзменении(Элемент)
    Если ЗначениеЗаполнено(СокрЛП(Объект.ПодкарантинныйОбъектУточнение)) Тогда
    ПодкарантинныйОбъектУточнениеПриИзмененииНаСервере();
    КонецЕсли;
    КонецПроцедуры

    &НаСервере
    Процедура ПодкарантинныйОбъектУточнениеПриИзмененииНаСервере()
    Объект.ПодкарантинныйОбъектУточнение = СокрЛП(Объект.ПодкарантинныйОбъектУточнение);
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | РФО_Теплоходы.Ссылка
    |ИЗ
    | Справочник.РФО_Теплоходы КАК РФО_Теплоходы
    |ГДЕ
    | РФО_Теплоходы.Наименование = &Наименование";
    Запрос.УстановитьПараметр("Наименование", Объект.ПодкарантинныйОбъектУточнение);
    РезультатЗапроса = Запрос.Выполнить();
    Если РезультатЗапроса.Пустой() Тогда
    НовыйТеплоход = Справочники.РФО_Теплоходы.СоздатьЭлемент();
    НовыйТеплоход.Наименование = Объект.ПодкарантинныйОбъектУточнение;
    НовыйТеплоход.Записать();
    Иначе
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующий();
    Объект.ПодкарантинныйОбъектУточнение = Выборка.Ссылка;
    КонецЕсли;
    КонецПроцедуры
```

Если введено значение, которого не было в списке, введённое значение добавляется в справочник.
---
Ещё забыл событие Автоподбор:

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

А по АвтоПодбору это не все? там наверное есть на клиенте?
---
А по АвтоПодбору это не все? там наверное есть на клиенте?
Да, есть НаКлиенте:

```1c
    &НаКлиенте
    Процедура ПодкарантинныйОбъектУточнениеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
    ПодкарантинныйОбъектУточнениеАвтоПодборНаСервере(Текст, ДанныеВыбора);
    СтандартнаяОбработка = Ложь
    КонецПроцедуры
```
---
&НаКлиенте
Процедура ПодкарантинныйОбъектУточнениеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
    ПодкарантинныйОбъектУточнениеАвтоПодборНаСервере(Текст, ДанныеВыбора);
    СтандартнаяО

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

    &НаСервереБезКонтекста
    Функция ПолучитьНаграду(Награда)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НаградыНомераИДатыПриказов.НомерПриказа КАК НомерПриказа
    |ИЗ
    | Справочник.Награды.НомераИДатыПриказов КАК НаградыНомераИДатыПриказов
    |ГДЕ
    | НаградыНомераИДатыПриказов.Ссылка = &Ссылка";

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

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

    &НаСервере
    Процедура НаградыФизическихЛицНомерПриказаПриИзмененииНаСервере(Награда,НомерПриказа)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НаградыНомераИДатыПриказов.НомерПриказа КАК НомерПриказа
    |ИЗ
    | Справочник.Награды.НомераИДатыПриказов КАК НаградыНомераИДатыПриказов
    |ГДЕ
    | НаградыНомераИДатыПриказов.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", Награда);
    РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующий() ;
    НомерПриказа = Выборка.НомерПриказа;
    КонецЕсли;

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

    &НаСервереБезКонтекста
    Процедура НаградыФизическихЛицНомерПриказаАвтоПодборНаСервере(Текст, ДанныеВыбора,Награда)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НаградыНомераИДатыПриказов.НомерПриказа КАК НомерПриказа
    |ИЗ
    | Справочник.Награды.НомераИДатыПриказов КАК НаградыНомераИДатыПриказов
    |ГДЕ
    | НаградыНомераИДатыПриказов.Ссылка = &Ссылка";

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

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

    НаградыФизическихЛицНомерПриказаАвтоПодборНаСервере(Текст, ДанныеВыбора,ТЧНаграда.Награда);
    СтандартнаяОбработка = Ложь
    КонецПроцедуры
```
---
На основании вашего написала код,первый раз выбираешь значение,все норм,второй раз из списка выбираешь,оно не сохраняется(
---
И почему то автоПодбор не работает( то есть Если я выбираю определенное значение, соответствующее значению из выпадающего списка, оно и должно остаться при автоподборе
---
У меня при начале ввода подбираются в список выбора подходящие значения. Если выбрать из предложенного списка, а затем нажать кнопку Выбора, то будет активна строка с выбранным значением. Если ввести новое значение, то оно добавится в справочник и при следующем нажатии на кнопку выбора будет активна добавленная строка.
---
Да,я что то затупила))все работает))Спасибо еще раз)
---
У вас же в запросе:

```1c
    Запрос.Текст =
    "ВЫБРАТЬ
    | НаградыНомераИДатыПриказов.НомерПриказа КАК НомерПриказа
    |ИЗ
    | Справочник.Награды.НомераИДатыПриказов КАК НаградыНомераИДатыПриказов
    |ГДЕ
    | НаградыНомераИДатыПриказов.Ссылка = &Ссылка";
```

То есть вы отбираете по ссылке.

А передаёте вы в поле:

```1c
    Если Не РезультатЗапроса.Пустой() Тогда
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующий() ;
    НомерПриказа = Выборка.НомерПриказа;
    КонецЕсли;
```

Естественно НомерПриказа в Ссылке не найдётся.
---
Чтобы сделать выпадающий список одновременно с ручным вводом у элемента формы нужно:

В свойствах элемента - поля ввода указать:
    ● КнопкаВыпадающегоСписка = Да
    ● РежимВыбораИзСписка = Нет
    ● СписокВыбора - пусто

    Указать обработчик события АвтоПодбор:

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

    Если Ожидание = 0 Тогда

    ДанныеВыбора = Новый СписокЗначений;
    ДанныеВыбора.Добавить("Яблоки");
    ДанныеВыбора.Добавить("Помидоры");
    СтандартнаяОбработка = Ложь;

    КонецЕсли;

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

Это все, можно и редактировать текст, и выбирать его из списка