Имя: Пароль:
1C
 
Как в поле ввода сделать Автоподбор по строке, но выбирать структуру?
0 RomaH
 
naïve
13.09.19
11:13
Интегрирую Дадату

Пользователь набирает строку - с сервиса получаю массив структур с описанием адресов

как реализовать выбор?

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

    ДанныеВыбора = Новый СписокЗначений;
    
    Для Каждого фк_Адрес Из СтруктураАдреса.suggestions Цикл
        
        ДанныеВыбора.Добавить(фк_Адрес.data,фк_Адрес.unrestricted_value);
        
    КонецЦикла;
    
КонецПроцедуры


сейчас поле ввода - из реквизита формы типа строка

но при выборе в поле рисует "Структура" (что естественно)
как при выборе мне получить значение которое выбрал пользователь (объект), а в поле ввод отобразить строку - представление этого объекта?
1 RomaH
 
naïve
13.09.19
11:15
2 RomaH
 
naïve
13.09.19
12:05
сделал хранение через переменную модуля формы типа соответствие
но ИМХО, криво это

&НаКлиенте
Перем СоответствиеДанныхАдресов;

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


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

    ДанныеВыбора = Новый СписокЗначений;
    СоответствиеДанныхАдресов = Новый Соответствие;
    
    Для Каждого фк_Адрес Из СтруктураАдреса.suggestions Цикл
        
        ДанныеВыбора.Добавить(фк_Адрес.unrestricted_value);
        СоответствиеДанныхАдресов.Вставить(фк_Адрес.unrestricted_value,фк_Адрес.data);
        
    КонецЦикла;
    
КонецПроцедуры