![]() |
![]() |
![]() |
|
8.2 найдено более 50 элементов - как обойти? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
17.01.13
✎
08:53
|
нужная идея
суть проблемы - справочник групп и элементов идет ввод в табличную часть путем ввода по строке (код) код формируется по иерархии 1 1.1 1.1.2 и так далее так вот, при желании выбрать группу с кодом "1" система выдает сообщение что найдено более 50 элементов вот как ограничить количество этих элементов до 49? и что бы красиво? допустим выбрать первые 49 элементов с минимальным числом символов после строки посика? |
|||
1
IamAlexy
17.01.13
✎
08:55
|
как как.. программно..
обрабатывай события окончания ввода текста вроде как и формируй свой список |
|||
2
RomaH
naïve
17.01.13
✎
08:59
|
а как отсортировать по релевантности к строке поиска?
|
|||
3
kotletka
17.01.13
✎
09:01
|
(1)неверно, надо грамотно структурировать нси, тогда такой проблемы не будет
|
|||
4
RomaH
naïve
17.01.13
✎
09:03
|
(3) что такое "нси"?
нси структурирован на уровне министерства здравоохранения и коды набираются в базу данных с печатной формы пришедшей от заказчика |
|||
5
Ranger_83
17.01.13
✎
09:04
|
(3)С какого перепугу заказчик будет подстраиваться под программу??
|
|||
6
RomaH
naïve
17.01.13
✎
09:13
|
http://www.dropmocks.com/mBoFYt
1. справочник и элемент который нужен в спсике выбора на первых позициях 2. форма котоая сейчас получается 3. код которым это получается вот как сделать так что бы элементы с кодом "1" - наиболее соотвествующие строке поиска шли на первом месте? |
|||
7
AaNnDdRrEeYy
17.01.13
✎
09:13
|
В событии поля
&НаКлиенте Процедура Реквизит1АвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; //не будет искать сам а потом запросом Первые например 50 и условие ПОДОБНО "Текст%" а результат запроса записхнуть в ДанныеВыбора |
|||
8
RomaH
naïve
17.01.13
✎
09:14
|
(7) не правильно, для этого есть менеджер справочника
вопрос в другом - как описать релевантность |
|||
9
RomaH
naïve
17.01.13
✎
09:14
|
в запросе можно длину строки узнать?
|
|||
10
ptiz
17.01.13
✎
09:19
|
(9) Зачем? Делаешь ПОДОБНО и сортируешь
|
|||
11
AaNnDdRrEeYy
17.01.13
✎
09:20
|
(9)нет нельзя.
|
|||
12
RomaH
naïve
17.01.13
✎
09:21
|
сортировка не очень подходит (полумера)
поиск идет по 4 полям код (00000001)/код официальный (1.1.1)/код быстрого подбора (111)/наименование по какому полю сортировать? |
|||
13
AaNnDdRrEeYy
17.01.13
✎
09:21
|
(8) и что там в модуле менеджера справочника?
Там только ОбработкаПолученияДанных и ОбработкаПолученияФормы |
|||
14
IamAlexy
17.01.13
✎
09:23
|
(2) придумать алгоритм сортировки и реализовать его... этож программный способ - все в твоих руках
|
|||
15
RomaH
naïve
17.01.13
✎
09:23
|
(13) ОбработкаПолученияДанных это зачем?
|
|||
16
AndyD
17.01.13
✎
09:26
|
(12) нам с форума не очень видно как вам надо.
как вам надо, так и сортируйте перед выводом |
|||
17
AndyD
17.01.13
✎
09:27
|
можно каждому полю из 4х присвоить вес соответствия (от 1 до 100, например), потом сложить веса всех полей и по этой сумме сортировать
|
|||
18
AaNnDdRrEeYy
17.01.13
✎
09:28
|
(15) Ну да, это подходит. Но это будет работать во всех полях ввода с типом этого справочника, если это надо тогда ладно.
|
|||
19
RomaH
naïve
17.01.13
✎
09:44
|
что-то не врубаюсь
Запрос = Новый Запрос; Запрос.УстановитьПараметр("СтрокаПоиска0",Текст); Запрос.УстановитьПараметр("СтрокаПоиска1",Текст + "_"); Запрос.УстановитьПараметр("СтрокаПоиска2",Текст + "__"); Запрос.УстановитьПараметр("Текст",Текст + "%"); Запрос.УстановитьПараметр("Владелец",Параметры.Отбор.Владелец); Запрос.Текст = "ВЫБРАТЬ | ВредныеПроизводственныеФакторыИРаботы.Ссылка КАК Ссылка, | ВредныеПроизводственныеФакторыИРаботы.ПометкаУдаления, | ВредныеПроизводственныеФакторыИРаботы.КодБыстрогоПодбора, | ВЫБОР | КОГДА ВредныеПроизводственныеФакторыИРаботы.КодБыстрогоПодбора ПОДОБНО &СтрокаПоиска0 | ТОГДА 0 | КОГДА ВредныеПроизводственныеФакторыИРаботы.КодБыстрогоПодбора ПОДОБНО &СтрокаПоиска1 | ТОГДА 1 | КОГДА ВредныеПроизводственныеФакторыИРаботы.КодБыстрогоПодбора ПОДОБНО &СтрокаПоиска2 | ТОГДА 2 | КОНЕЦ КАК Релевантность |ИЗ | Справочник.ВредныеПроизводственныеФакторыИРаботы КАК ВредныеПроизводственныеФакторыИРаботы |ГДЕ | ВредныеПроизводственныеФакторыИРаботы.КодБыстрогоПодбора ПОДОБНО &Текст | И ВредныеПроизводственныеФакторыИРаботы.Владелец = &Владелец | И НЕ ВредныеПроизводственныеФакторыИРаботы.ПометкаУдаления | |УПОРЯДОЧИТЬ ПО | Релевантность"; Результат = Запрос.Выполнить().Выбрать(); ДанныеВыбора = Новый СписокЗначений; КоличествоЭлементов = 0; Пока Результат.Следующий() И КоличествоЭлементов <50 Цикл ДанныеВыбора.Добавить(Результат.Ссылка,,Результат.ПометкаУдаления); КоличествоЭлементов = КоличествоЭлементов + 1; КонецЦикла; по строке поиска "1" на первые места выдает элементы с кодом "11432" что не так? |
|||
20
AaNnDdRrEeYy
17.01.13
✎
09:48
|
когда срабатывает первый
ВЫБОР | КОГДА ВредныеПроизводственныеФакторыИРаботы.КодБыстрогоПодбора ПОДОБНО &СтрокаПоиска0 то второй ВЫБОР КОГДА уже не проверяется ,может тут что не так? Напиши ВЫБРАТЬ ПЕРВЫЕ 50 быстрее будет. |
|||
21
RomaH
naïve
17.01.13
✎
09:49
|
ИНАЧЕ 100 не хватает
|
|||
22
RomaH
naïve
17.01.13
✎
09:51
|
но это только для одного поля
а вот как красиво сделать для многих? |
|||
23
AaNnDdRrEeYy
17.01.13
✎
09:54
|
Можно в запросе их сложить
ВЫБОР | КОГДА ВредныеПроизводственныеФакторыИРаботы.КодБыстрогоПодбора + второйКОД + ТретийКОД ПОДОБНО &СтрокаПоиска0 | ТОГДА 0 и тогда в подобно надо два значка процента поставить %текст% чтоб в середине этой сложенной строки искало |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |