![]() |
![]() |
|
ОбработкаПолученияДанныхВыбора - список больше 50 через ПолучитьДанныеВыбора | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
04.04.13
✎
13:40
|
Собственно
пропсал в менеджере справочника контрагентов свою обработку получения данных теперь при подборе контрагента - она отрабатывает - все красиво и хорошо ввожу "т" - жму ентер - пишет, что найдено более 50 элементов справочника дальше захотел воспрользоваться параметром "Параметры" в ОбработкаПолученияДанныхВыбора <Параметры> Тип: Структура. Содержит параметры выбора. Их можно дополнительно настроить в обработчике события. Структура, в которой обязательно должны содержаться следующие ключи: для этого обработчик вызываю через метод ПолучитьДанныеВыбора и все работает, кроме того, что когда ДанныеВыбора.Количество() > 50 этот метод возвращает пустой список. соответсвенно получаю что данные не найдены, вместо - "Уточните поиск" |
|||
1
RomaH
naïve
04.04.13
✎
13:48
|
как воспроизвести:
в обработчик получения данных конрагентов: СтандартнаяОбработка = Ложь; Запрос = Новый Запрос; Запрос.УстановитьПараметр("Текст","%" + Текст + "%"); Запрос.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка, | Контрагенты.ПометкаУдаления, | Контрагенты.Код, | Контрагенты.Наименование |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | (Контрагенты.Наименование ПОДОБНО &Текст | ИЛИ Контрагенты.НаименованиеПолное ПОДОБНО &Текст) |"; Результат = Запрос.Выполнить().Выбрать(); ДанныеВыбора = Новый СписокЗначений; Пока Результат.Следующий() Цикл ДанныеВыбора.Добавить(Результат.Ссылка,,Результат.ПометкаУдаления); КонецЦикла; тут получаем список контрагентов у которых наименование СОДЕРЖИТ заданый текст если просто описать этот обработчик - то поля выбора конрагентов будут работать по этому алгоритму |
|||
2
RomaH
naïve
04.04.13
✎
13:49
|
но если прописать в обработчике
&НаКлиенте Процедура КонтрагентОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДанныеВыбора = ПолучитьСписокКонрагентов(Элемент.Имя,Текст); КонецПроцедуры &НаСервере Функция ПолучитьСписокКонрагентов(Элемент,Текст) ПараметрыВыбора = Новый Структура; ПараметрыВыбора.Вставить("Отбор",Новый Структура); ПараметрыВыбора.Вставить("СтрокаПоиска",Текст); ПараметрыВыбора.Вставить("ВыборГруппИЭлементов",ИспользованиеГруппИЭлементов.Элементы); //ДанныеВыбора = ПолучитьДанныеВыбора(Тип("СправочникСсылка.Контрагенты"),ПараметрыВыбора); ДанныеВыбора = Справочники.Контрагенты.ПолучитьДанныеВыбора(ПараметрыВыбора); Возврат ДанныеВыбора; КонецФункции то поле будет отрабатывать как и прежде за исключением случая, когда список выбора будет больше 50 |
|||
3
MSII
04.04.13
✎
13:57
|
А если сначала заполнить данные выбора, потом проверить их количество и если оно <= 50, то СтандартнаяОбработка = Ложь.
|
|||
4
RomaH
naïve
04.04.13
✎
14:07
|
(3) дело в том, что если на выходе из обработчика СтандартнаяОбработка = Итсина, то происходит стандартное заполнение списка ДанныеВыбора
т.е. получим всех контров у которых наименование НАЧИНАЕТСЯ на "т", а не содержит |
|||
5
RomaH
naïve
04.04.13
✎
14:07
|
обход нашел, но неужели нет "правильного" метода?
Если ДанныеВыбора.Количество() > 50 И Параметры.Свойство("НайденоБольше50") Тогда Параметры.НайденоБольше50.НайденоБольше50 = Истина; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |