|
v7: 1SQLITE: Поиск элементов справочника по списку строк | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
11.07.13
✎
11:05
|
Здравствуйте, не выходит.
Есть список значений, его значения - строки, необходимо к каждой строке по Like найти контрагента. Делаю вот так: спКонтрагентов = глРазложить(стр_Поиск); гд_НаЭкран(спКонтрагентов); База = СоздатьОбъект("SQLiteBase"); База.Открыть(":memory:"); База.УложитьОбъекты(спКонтрагентов, "тблКонтры"); Запрос = База.НовыйЗапрос(); ТекстЗапроса = " |SELECT | спр.ID as [Контрагент :Справочник.Контрагенты] |FROM | тблКонтры as Сравнение | LEFT JOIN [Справочник.Контрагенты] as спр on (Сравнение.VAL LIKE '%'||trim(спр.DESCR)||'%') |"; тз = Запрос.ВыполнитьЗапрос(ТекстЗапроса); Здесь - "Сравнение.VAL LIKE '%'||trim(спр.DESCR)||'%'" - не пойму, как строку подставить? Я думал, что || - это знак конкатенации, но запрос проходит, а контров не кажет... Что я не так делаю? |
|||
1
viktor_vv
11.07.13
✎
11:19
|
Уложить объекты укладывает в таблицу с val строка 9 символов.
|
|||
2
viktor_vv
11.07.13
✎
11:20
|
Попробуй уложить ТЗ.
|
|||
3
Ёпрст
11.07.13
✎
11:21
|
(0)
:) 1. надо наеборот спр.DESCR like '%подвстрока%' 2.Сравнение.VAL.. если по списку, то надо кучу лайков объединять |
|||
4
viktor_vv
11.07.13
✎
11:22
|
(1)+ "В данную таблицу выгружаются внутренние идентификаторы объектов в формате char(9)".
|
|||
5
Zhuravlik
11.07.13
✎
12:06
|
(4) В списке - строки - не элементы справочника
(3) 1. Я делал наоборот, все-равно не катит 2. Я же перебираю строки, а лефт-джойном присоединяю контров по LIKE. Зачем там куча лайков? Подскажите, у меня синтаксис правильный? Им. в виду "LEFT JOIN [Справочник.Контрагенты] as спр on (Сравнение.VAL LIKE '%'||trim(спр.DESCR)||'%')", т.е. чтобы поиск был по строке получаемой из trim(спр.DESCR), а не по "trim(спр.DESCR)"? |
|||
6
Ёпрст
11.07.13
✎
12:12
|
(5) в уложить объекты - у тебя всегда строка в 9 символов, + соединять надо наеборот
|
|||
7
Ёпрст
11.07.13
✎
12:12
|
в наименовании искать по лайк.
|
|||
8
Ёпрст
11.07.13
✎
12:13
|
никаких тримов там не надо.
|
|||
9
Ёпрст
11.07.13
✎
12:13
|
Сделай ТЗ, типоизируй колонку, уложи в базу - соединяйся с ней.
|
|||
10
Zhuravlik
11.07.13
✎
12:21
|
Да)
спКонтрагентов = глРазложить(стр_Поиск); тз = СоздатьОбъект("ТаблицаЗначений"); тз.НоваяКолонка("Поиск", "Строка"); Для сч=1 По спКонтрагентов.РазмерСписка() Цикл тз.НоваяСтрока(); тз.Поиск = спКонтрагентов.ПолучитьЗначение(сч); КонецЦикла; База = СоздатьОбъект("SQLiteBase"); База.Открыть(":memory:"); База.УложитьТЗ(тз, "тблКонтры"); Запрос = База.НовыйЗапрос(); ТекстЗапроса = " |SELECT | спр.ID as [Контрагент :Справочник.Контрагенты] |FROM | тблКонтры as Сравнение | LEFT JOIN [Справочник.Контрагенты] as спр on (trim(спр.DESCR) LIKE'%'||Сравнение.Поиск||'%') |"; _тз = Запрос.ВыполнитьЗапрос(ТекстЗапроса); гд_НаЭкран(_тз); Получилось, спасибо большое)) |
|||
11
Zhuravlik
11.07.13
✎
12:22
|
+ Забыл trim убрать)
|
|||
12
Ёпрст
11.07.13
✎
12:22
|
трим выкини - он не нужен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |