|
Как в запросе отобрать подобные, если они хранятся в массиве | ☑ | ||
---|---|---|---|---|
0
rt2000
05.07.16
✎
12:03
|
Всем привет!
Вот такая конструкция в запросе: ВЫБОР КОГДА ПоступлениеТоваров.Контрагент.Наименование ПОДОБНО "%" + &СписокКонтр + "%" ТОГДА "Не Создаем" ИНАЧЕ "Создаем" КОНЕЦ &СписокКонтр - это массив строк. Суть такая, что в массиве список наименований и мне нужно отбросить контрагентов с такими наименованиями в запросе |
8 9 21 22 |
||
1
rt2000
05.07.16
✎
12:04
|
Я имею ввиду тут ошибка при выполнении запроса. И как написать правильно, в этом вопрос!
|
|||
2
В тылу врага
05.07.16
✎
12:04
|
передать массив во временную таблицу, например
|
3 |
||
3
rt2000
05.07.16
✎
12:05
|
(2) А без временной таблице, есть еще варианты?
|
6 |
||
5
Fragster
гуру
05.07.16
✎
12:07
|
запрос в циклИ
|
|||
6
Nuobu
05.07.16
✎
12:07
|
(3) нет\
|
|||
7
Fragster
гуру
05.07.16
✎
12:08
|
программное формирование текста запроса
|
|||
8
drcrasher
05.07.16
✎
12:08
|
(0) собери из массива строку с разделителем % и передай в параметр
|
10 |
||
9
Fragster
гуру
05.07.16
✎
12:09
|
небольшая подготовка данных, чтобы избавится от мисдеца в запросе из (0)
|
|||
10
rt2000
05.07.16
✎
12:10
|
(8) из трех строк "Цех", "Пекарня","Кулинария" сделать одну:
"Цех%Пекарня%Кулинария" Как это будет работать? |
11 13 |
||
11
HardBall
05.07.16
✎
12:23
|
(10) Regexp d запросе?
|
|||
12
rt2000
05.07.16
✎
12:43
|
Ребята, я вас не понимаю?
Может пример покажете, так проще будет |
14 15 |
||
13
Зая Бусечка
05.07.16
✎
12:46
|
(10) Работать будет peranalno
|
|||
14
Fragster
гуру
05.07.16
✎
12:46
|
(12) может, начальную задачу опишешь? например откуда появляется этот "список", что его именно в "подобно" надо пихать?
|
17 |
||
15
hhhh
05.07.16
✎
12:46
|
(12) ВЫБОР
КОГДА ПоступлениеТоваров.Контрагент.Наименование ПОДОБНО "%" + &Контр1 + "%" ИЛИ ПоступлениеТоваров.Контрагент.Наименование ПОДОБНО "%" + &Контр2 + "%" ИЛИ ПоступлениеТоваров.Контрагент.Наименование ПОДОБНО "%" + &Контр3 + "%" ТОГДА "Не Создаем" ИНАЧЕ "Создаем" КОНЕЦ |
|||
16
HardBall
05.07.16
✎
13:11
|
Походу надо отобрать контрагентов у которых встречается
"лабеаН" в наименовании. |
|||
17
rt2000
05.07.16
✎
14:48
|
(14) Дали эксельную таблицу. Сказали, для документов поступления, нужно создать счета фактуры. За исключением тех контрагентов, у которых в наименовании встречается одно из слов в массиве. Как то так.
|
|||
18
Фрэнки
05.07.16
✎
15:09
|
ну я бы сделал как массив строк и попробовал натравить на него сравнением В
|
|||
19
Фрэнки
05.07.16
✎
15:11
|
и еще можно ВЫРАЗИТЬ загруженный в запрос массив и ВЫРАЗИТЬ так же Наименование, тогда с использованием В будет работать
|
|||
20
Fragster
гуру
05.07.16
✎
15:11
|
1. получить список контрагентов
2. передать список в запрос |
|||
21
youalex
05.07.16
✎
16:04
|
(0)
1) Масссив - в ТЗ 2) ТЗ - в ВТ 3) С ВТ цепляться по "Контрагент.Наименование ПОДОБНО "%" + ВТ.Наименование + "%" Непонятно, в списке - точные наименования? Тогда зачем ПОДОБНО ? Сам список как заполняется? Если точные, тогда в запросе: ВЫБРАТЬ Справочник.Контрагенты.Ссылка Поместить вт_Контрагенты ГДЕ Наименование В (&Список) ; ВЫБОР КОГДА вт_Контрагенты.Ссылка IS NULL Тогда "Создаем" ... |
22 |
||
22
Азазелло
05.07.16
✎
21:01
|
(21) использование в условии соединения ПОДОБНО - уж точно не стоит. Запрос в цикле эффективней будет.
(0) разверни в обратную сторону
|
23 24 |
||
23
Азазелло
05.07.16
✎
21:02
|
(22) вместо "%" в "%Альтаир%Альфа%" в принципе подойдет другой разделитель. В левой части выражения ПОДОБНО он не интерпретируется как спец. символ.
|
|||
24
youalex
07.07.16
✎
00:35
|
(22) "использование в условии соединения ПОДОБНО - уж точно не стоит. Запрос в цикле эффективней будет."
Не согласен с тем что "точно не стоит" Точно - не точно. Возможно, роль еще играет само выражение ПОДОБНО, например, если в начале выражения нет спецсимволов - оно может и быстро отработать. В моем решении, думаю, более пагубную роль играет не само ПОДОБНО, а операция присваивания. Запрос в цикле пагубен не тем, что это запрос в цикле, а тем что, условно, это операция "создать запрос /проверить соединение с базой/преобразовать запрос 1с в запрос sql - отправить запрос в sql (там еще построение плана/даже получение из кэша)- дождаться ответа, преобразовать ответ в термины 1С... Все это в цикле. |
25 |
||
25
youalex
07.07.16
✎
00:38
|
(24) + еще вариант - построить динамически запрос, через объединение. Но тут можно упереться в ограничение длины текста запроса.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |