Имя: Пароль:
1C
1С v8
Вопрос по автоподбору
0 oleg_prg
 
24.12.13
14:23
Уважаемые форумчане, добрый день, подскажите пожалуйста как наложить отбор на автоподбор.
Вот фото http://yadi.sk/d/YU70IEJaEqyAJ

Спасибо!
1 kosts
 
24.12.13
14:30
(0) В обычных формах - создать свой список и показать его пользователю. Внешне не отличается.
2 oleg_prg
 
24.12.13
14:38
Спасибо за совет, но у меня упр.формы
3 sixis
 
24.12.13
14:45
В модуле менеджера справочника есть предопределенная процедура ОбработкаПолученияДанныхВыбора. В ней можно установить отбор.
4 oleg_prg
 
24.12.13
15:54
Сделал так http://yadi.sk/d/LXV1VDVAErKcq
Ошибка, "неправильное условие отбора", подскажите пожалуйста, что ни так???
5 samozvanec
 
24.12.13
16:00
СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>)
ОбработкаПолученияДанныхВыбора (ChoiceDataGetProcessing)
Синтаксис:

ОбработкаПолученияДанныхВыбора(<ДанныеВыбора>, <Параметры>, <СтандартнаяОбработка>)
Параметры:

<ДанныеВыбора>

Тип: СписокЗначений.
В обработчике можно сформировать и передать в этом параметре данные для выбора. При этом параметр <СтандартнаяОбработка> должен быть установлен в Ложь.
6 samozvanec
 
24.12.13
16:02
(4) а так, по ходу, только на равенство получится установить
7 oleg_prg
 
24.12.13
16:04
Добавил СтандартнаяОбработка = ложь;

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

Вообще при выборе теперь ничего не происходит, нет списка для автоподбора, он исчез
8 samozvanec
 
24.12.13
16:06
(7) печалька
9 samozvanec
 
24.12.13
16:07
а если так?

СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>)
ОбработкаПолученияДанныхВыбора (ChoiceDataGetProcessing)
Синтаксис:

ОбработкаПолученияДанныхВыбора(<ДанныеВыбора>, <Параметры>, <СтандартнаяОбработка>)
Параметры:

<ДанныеВыбора>

Тип: СписокЗначений.
В обработчике можно сформировать и передать в этом параметре данные для выбора.
10 oleg_prg
 
24.12.13
16:07
проблема в том что если сделать вот так то все ок
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    Если Параметры.Свойство("Город") Тогда            
        Параметры.Отбор.Владелец = Справочник.Район.НайтиПоНаименованию("Московский");                
    КонецЕсли;    
КонецПроцедуры

т.е. один элемент сравнивает, а структуру элементов как запихнуть - ума не приложу, уже пол дня убил на эту хрень....
11 oleg_prg
 
24.12.13
16:08
Если можно, напишите код пожалуйста, я уже в тихой истерике ))))
12 samozvanec
 
24.12.13
16:11
(11) запросом получи, что тебе надо пользователю показать для выбора, сунь в список значений, этот список значений в данные выбора(первый параметр процедуры). и стандартную обработку лучше внутри условия выставлять.
13 oleg_prg
 
24.12.13
16:14
УРРРАААА! спасибо samozvanec! Вроде то что надо!!!
14 oleg_prg
 
24.12.13
16:24
Вот решение, может кому пригодится
Подмена списка автоподбора

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    
    СтандартнаяОбработка = ложь;
    Если Параметры.Свойство("Город") Тогда            
        
        Запрос = новый Запрос;        
        Запрос.Текст = "ВЫБРАТЬ
        |    Улицы.Ссылка
        |ИЗ
        |    Справочник.Улицы КАК Улицы
        |ГДЕ
        |    (Улицы.Владелец.Владелец = &Владелец) И (Улицы.Наименование ПОДОБНО &СтрокаПоиска)";
        
        Запрос.УстановитьПараметр("Владелец", Параметры.Город);
        Запрос.УстановитьПараметр("СтрокаПоиска", СокрЛП(Параметры.СтрокаПоиска)+"%");
        
        ДанныеВыбора = новый СписокЗначений;
        
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            ДанныеВыбора.Добавить(Выборка.Ссылка);
        КонецЦикла;        
        
    КонецЕсли;     
    
КонецПроцедуры
15 dj_serega
 
24.12.13
16:35
(14) Данные выбора это же список значений?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn