Имя: Пароль:
1C
1С v8
УФ - ОбработкаПолученияДанныхВыбора - как передать параметры?
0 RomaH
 
naïve
04.04.13
11:31
ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры

есть метод
ПолучитьДанныеВыбора
но он вызывается только через сервер

т.е. если надо передать параметры в обработку получения данных менеджера справочника
надо из двух клиентских процедур
АвтоПодбор и ОкончаниеВвода вызвать серверную процедуру внутри которой вызвать метод ПолучитьДанныеВыбора
?
только так??
1 RomaH
 
naïve
04.04.13
11:32
и при этом еще и отказаться от стандартной обработки?
а просто передать параметры и "стандартно" обработать никак?
2 kiruha
 
04.04.13
11:33
Через реквизиты формы
3 RomaH
 
naïve
04.04.13
13:15
ничего не понимаю
переопределяю выбор контрагентов
что бы возврщало мой список, а не стандартный - стандартную обработку ставлю в Ложь

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


так?
4 RomaH
 
naïve
04.04.13
13:16
дальше - надо передать параметры в ОбработкаПолученияДанныхВыбора
для этого вызываю метод

&НаСервере
Функция ПолучитьСписокКонрагентов(Элемент,Текст)
   
   ПараметрыВыбора = Новый Структура;
   ПараметрыВыбора.Вставить("Отбор",Новый Структура);
   ПараметрыВыбора.Вставить("СтрокаПоиска",Текст);
   ПараметрыВыбора.Вставить("ВыборГруппИЭлементов",ИспользованиеГруппИЭлементов.Элементы);
   
   Если Элемент = "ДанныеПациентаПоВнереализацииОрганизацияВнереализации" Тогда
       ПараметрыВыбора.Вставить("КатегорияВнереализации",ДанныеПациентаПоВнереализации.КатегорияВнереализации);
   КонецЕсли;
   
   ДанныеВыбора = Справочники.Контрагенты.ПолучитьДанныеВыбора(ПараметрыВыбора);
   
   Возврат ДанныеВыбора;
   
КонецФункции
5 RomaH
 
naïve
04.04.13
13:17
но так как СтандартнаяОбработка = Ложь
возвращается пустой список

что не так?
6 RomaH
 
naïve
04.04.13
13:18
и не понял примечания к методу ПолучитьДанныеВыбора
что значит:

Примечание:

Если в модуле менеджера в методе указано два параметра, то будет вызван метод ПолучитьДанныеВыбора глобального контекста.
Выполнение метода приводит к вызову события ОбработкаПолученияДанныхВыбора.

что за параметры в модуле менеджера? менеджера чего?
7 RomaH
 
naïve
04.04.13
13:29
хм, все оказывается проще
но как тут быть?
это я столкнулся с тем, что спиок формируется на 54 элемента, а платформа, похоже, сама  обрезает списки больше 50 элементов и возвращает пустой

вопрос - как в случае получения спсика больше 50 - возвращать стандартное (ну или не стандартное) сообщенеи патформы о то что надо уточнить поиск?
8 RomaH
 
naïve
04.04.13
13:44
(2) может ты что дельное скзал ... уточни - что за форму ты имеешь в виду?
AdBlock убивает бесплатный контент. 1Сергей