Имя: Пароль:
1C
1С v8
автоподбор 8.3
0 Pandoch
 
25.12.17
09:46
Доброе время суток, мистяне. Меня озадачило 8.3. Есть управляемая форма, там поле на форме и при выборе значения нужно задавать определенные отборы замысловатые. В событие "НачалоВыбора" я прописала самостоятельно открытие формы выбора нужной с нужными отборами и все работает. Но многие пользователи любят вводом в поле строки поиска искать нужный элемент справочника, без открытия формы выбора. В этом случае в НачалоВыбора не заходит отладка и отборы не работают - можно выбрать что угодно.

Я прописала событие Автоподбор на это поле, чтобы самостоятельно менять ДанныеВыбора и в модуле формы этого справочника (значения которого нужно выбирать) я прописала собитие "ОбработкаДанныхВыбора" - там формирую запросом нужные данные выбора по отборам.

Вроде этого должно быть достаточно? НО - все события ОК отрабатывают, но когда я на форме ввожу текст - он затирается! не могу понять из-за чего это происходит.

Вот тексты процедур:
Это в форме, где поле находится, значение которого выбираем

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


А это в модуле менеджера справочника:

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    
СтандартнаяОбработка = ложь;
Запрос = новый запрос("тут запрос");
            Запрос.УстановитьПараметр("..устанавливаю параметры...");
            Результат = Запрос.Выполнить().Выгрузить();
            СписокЗначений = Новый СписокЗначений;
            Для Каждого стр Из Результат Цикл
                СписокЗначений.Добавить(стр.Ссылка);
            КонецЦикла;
            ДанныеВыбора = СписокЗначений;
            
        КонецЕсли;
конецПроцедуры
1 Pandoch
 
25.12.17
09:49
Если что - в отладку заходила, все события проходит нормально, запрос выполняется, Данные выбора заполняются.
2 vicof
 
25.12.17
10:02
3 hhhh
 
25.12.17
10:22
(1) событие называется ОкончаниеВводаТекста вообще-то. И в обычных формах и в управляемых.
4 Pandoch
 
25.12.17
10:41
(2) спасибо) почитала, про серверные вызовы дело говорят. У меня вызывается серверная процедура ВыборПодразделения(), и после этого ТекстРедактирования затирается. Поставила директиву НаСервереБезКонтекста у нее и все, не затирается и работает)