|
Запрос. Можно как-нибудь по приличнее нарисовать? | ☑ | ||
---|---|---|---|---|
0
Галахад
гуру
24.10.12
✎
07:49
|
Нарисовал запрос. Но чего-то он мне не очень нравиться.
Задача: поиск номенклатуры, которая одновременно содержит подстроки "Наименование1" и "Наименование2" ВЫБРАТЬ Номенклатура1.Ссылка КАК Ссылка, 1 КАК К1, 0 КАК К2 ПОМЕСТИТЬ тз ИЗ Справочник.Номенклатура КАК Номенклатура1 ГДЕ Номенклатура1.Наименование ПОДОБНО &Наименование1 И (НЕ Номенклатура1.ЭтоГруппа) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Номенклатура2.Ссылка, 0, 1 ИЗ Справочник.Номенклатура КАК Номенклатура2 ГДЕ Номенклатура2.Наименование ПОДОБНО &Наименование2 И (НЕ Номенклатура2.ЭтоГруппа) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ тз.Ссылка КАК Ссылка, СУММА(тз.К1 + тз.К2) КАК К ИЗ тз КАК тз СГРУППИРОВАТЬ ПО тз.Ссылка УПОРЯДОЧИТЬ ПО К УБЫВ |
|||
1
Wobland
24.10.12
✎
07:52
|
а подобно одному или подобно другому в одном месте не подходит?
|
|||
2
Wobland
24.10.12
✎
07:52
|
(1) И
|
|||
3
Рэйв
24.10.12
✎
07:52
|
ВЫБРАТЬ
Номенклатура.Ссылка, ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Наименование ПОДОБНО &Наименование1 И Номенклатура.Наименование ПОДОБНО &Наименование2 |
|||
4
Галахад
гуру
24.10.12
✎
07:55
|
Не, ну так не интересно.
Это же пример, а на самом деле будет больше "НоменклатураN". Если вхождений будет N - M эти номенклатуры тоже стоит показать. |
|||
5
Рэйв
24.10.12
✎
07:56
|
дальше продолжай
И... сколько надо |
|||
6
Wobland
24.10.12
✎
07:57
|
(4) а тебе больше нравится временные таблицы плодить?
|
|||
7
Wobland
24.10.12
✎
07:58
|
я никому не скажу, что такое полнотекстовый поиск, пусть меня даже пытают
|
|||
8
Галахад
гуру
24.10.12
✎
07:59
|
(5) О, я условие криво написал.
"Задача: поиск номенклатуры, которая одновременно содержит подстроки "Наименование1" и "Наименование2" " Задача: поиск номенклатуры, которая содержит одну из под строк "Наименование1" и "Наименование2" и вывести в таблицу по максимальному количеству вхождений" |
|||
9
Нууф-Нууф
24.10.12
✎
08:00
|
бугага. на работу устраиваешься чтоль?
|
|||
10
Wobland
24.10.12
✎
08:01
|
кстати, И (НЕ Номенклатура2.ЭтоГруппа) - это зачем?
|
|||
11
Галахад
гуру
24.10.12
✎
08:01
|
(7) О, точно. Зенкс.
(9) Откуда ассоциация? |
|||
12
shuhard
24.10.12
✎
08:02
|
(8) засунь строки поиска во ВТ
свяжи с номенклатурой по подобно наложи Имеющие |
|||
13
Галахад
гуру
24.10.12
✎
08:05
|
(12) Отличная идея. Зенкс.
Попробую . |
|||
14
Галахад
гуру
24.10.12
✎
09:30
|
Похоже идея с полнотекстовым поиском не очень хороша.
Нажал кнопку обновить индекс и процесс идет уже полтора часа... |
|||
15
Wobland
24.10.12
✎
09:31
|
(14) это он тебе его создаёт, похоже
|
|||
16
Галахад
гуру
24.10.12
✎
09:42
|
(15) Обновляет быстрее?
|
|||
17
Wobland
24.10.12
✎
09:43
|
(16) если не делать раз в год, конечно
|
|||
18
Галахад
гуру
24.10.12
✎
09:44
|
Не могу понять почему первый запрос работает, а второй нет.
ВЫБРАТЬ "%тест%" КАК Наименование ПОМЕСТИТЬ тз ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Номенклатура.Ссылка, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ тз.Наименование) КАК Кол ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ тз КАК тз ПО (Номенклатура.Наименование ПОДОБНО тз.Наименование) СГРУППИРОВАТЬ ПО Номенклатура.Ссылка ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ тз.Наименование) > 0 ВЫБРАТЬ Таб.Наименование КАК Наименование ПОМЕСТИТЬ тз ИЗ &Таб КАК Таб ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Номенклатура.Ссылка, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ тз.Наименование) КАК Кол ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ тз КАК тз ПО (Номенклатура.Наименование ПОДОБНО тз.Наименование) СГРУППИРОВАТЬ ПО Номенклатура.Ссылка ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ тз.Наименование) > 0 |
|||
19
Галахад
гуру
24.10.12
✎
09:47
|
Они же идентичны. Только в первом таблица заполняется в запросе, а во втором во вне.
|
|||
20
Галахад
гуру
24.10.12
✎
09:48
|
Текст ошибки.
Ошибка при вызове метода контекста (Выполнить): {(21, 23)}: Неверные параметры "КОЛИЧЕСТВО" КОЛИЧЕСТВО(РАЗЛИЧНЫЕ <<?>>тз.Наименование) > 0 Результат = Запрос.Выполнить(); по причине: {(21, 23)}: Неверные параметры "КОЛИЧЕСТВО" КОЛИЧЕСТВО(РАЗЛИЧНЫЕ <<?>>тз.Наименование) > 0 |
|||
21
Wobland
24.10.12
✎
09:49
|
(20) &таб типизирована?
|
|||
22
Галахад
гуру
24.10.12
✎
09:53
|
(21) Полный код:
ТЗ=Новый ТаблицаЗначений(); ТЗ.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка")); Стр=ТЗ.Добавить(); Стр.Наименование="%тест%"; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Таб.Наименование КАК Наименование |ПОМЕСТИТЬ тз |ИЗ | &Таб КАК Таб |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Номенклатура.Ссылка, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ тз.Наименование) КАК Кол |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ тз КАК тз | ПО (Номенклатура.Наименование ПОДОБНО тз.Наименование) | |СГРУППИРОВАТЬ ПО | Номенклатура.Ссылка | |ИМЕЮЩИЕ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ тз.Наименование) > 0"; Запрос.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Таб",ТЗ); Результат = Запрос.Выполнить(); ПострПечать = Новый ПостроительОтчета; ПострПечать.ИсточникДанных = Новый ОписаниеИсточникаДанных(Результат.Выгрузить()); ПострПечать.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Интерфейс); ПострПечать.Выполнить(); ПострПечать.Вывести(); |
|||
23
Ёпрст
24.10.12
✎
10:05
|
(22) группировать надо по наименованию, а не по ссылке.
|
|||
24
Ёпрст
24.10.12
✎
10:06
|
ну и левое соединение там не в п..у.
|
|||
25
Ёпрст
24.10.12
✎
10:06
|
т.е не нужно
|
|||
26
Галахад
гуру
24.10.12
✎
10:12
|
(23) Не понял. Можно пример?
|
|||
27
Wobland
24.10.12
✎
10:13
|
(26) СГРУППИРОВАТЬ ПО
| Номенклатура.Наименование |
|||
28
Галахад
гуру
24.10.12
✎
10:17
|
(27) Так? Ошибка та же.
ТЗ=Новый ТаблицаЗначений(); ТЗ.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка")); Стр=ТЗ.Добавить(); Стр.Наименование="%тест%"; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Таб.Наименование КАК Наименование |ПОМЕСТИТЬ тз |ИЗ | &Таб КАК Таб |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Номенклатура.Наименование, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ тз.Наименование) КАК Кол |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ тз КАК тз | ПО (Номенклатура.Наименование ПОДОБНО тз.Наименование) | |СГРУППИРОВАТЬ ПО | Номенклатура.Наименование | |ИМЕЮЩИЕ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ тз.Наименование) > 0"; Запрос.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Таб",ТЗ); Результат = Запрос.Выполнить(); ПострПечать = Новый ПостроительОтчета; ПострПечать.ИсточникДанных = Новый ОписаниеИсточникаДанных(Результат.Выгрузить()); ПострПечать.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Интерфейс); ПострПечать.Выполнить(); ПострПечать.Вывести(); |
|||
29
sidalexsandr
24.10.12
✎
10:24
|
(28) Странно написанно, разве запрос может просмотреть ТаблицуЗначений?
Помойму надо убрать из запроса КОЛИЧЕСТВО(РАЗЛИЧНЫЕ тз.Наименование) > 0"; Вот тебе из справки в помощь : ВЫБРАТЬ [РАЗЛИЧНЫЕ] [ПЕРВЫЕ <Количество>] <Список полей выборки> [ИЗ <Список источников>] [ГДЕ <Условие отбора>] [СГРУППИРОВАТЬ ПО <Поля группировки>] [ИМЕЮЩИЕ <Условие отбора>] |
|||
30
sidalexsandr
24.10.12
✎
10:24
|
ВЫБРАТЬ [РАЗЛИЧНЫЕ] [ПЕРВЫЕ <Количество>]
<Список полей выборки> [ИЗ <Список источников>] [ГДЕ <Условие отбора>] [СГРУППИРОВАТЬ ПО <Поля группировки>] [ИМЕЮЩИЕ <Условие отбора>] |
|||
31
Wobland
24.10.12
✎
10:26
|
странно это всё как-то.. вот у меня работает:
ВЫБРАТЬ "йо" как нечто ПОМЕСТИТЬ ТЗ ; выбрать Количество(различные ТЗ.Нечто) из ТЗ |
|||
32
sidalexsandr
24.10.12
✎
10:26
|
(28) Количество как ты видиш в справке применяестя для после слова выбрать до из.
|
|||
33
Галахад
гуру
24.10.12
✎
10:28
|
(32) Не. Ты не понял.
|
|||
34
Wobland
24.10.12
✎
10:30
|
(32) всё у него правильно написано вроде бы. но у меня нет ТЗ, я её заменяю первым запросом, и работает. а у автора есть ТЗ и не работает
|
|||
35
Галахад
гуру
24.10.12
✎
10:40
|
(34) Как это нет тз? А код в (28)? Бери и вставляй! :-)
P.S. Вообщем обновление индекса закончилось. И работа с полнотекстовым поиском мне понравилась. Тема вроде бы исчерпана, но почему не работает (28) интересно. |
|||
36
RomanYS
24.10.12
✎
10:41
|
попробуй ограничить длину строки в типе
ТЗ.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка")); В запросах куча ограничений на длинные строки, может проблема в этом. |
|||
37
Wobland
24.10.12
✎
10:43
|
(35) я в консоли играюсь
|
|||
38
sidalexsandr
24.10.12
✎
10:44
|
(37) Успехов в игре.
|
|||
39
Галахад
гуру
24.10.12
✎
10:49
|
(36) Бинго!
Всем спасибо. Вопрос закрыт. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |