|
Можно ли реализовать такое 1 запросом | ☑ | ||
---|---|---|---|---|
0
Borteg
30.08.13
✎
10:42
|
Добрый день. Есть наименование контрагента, ИНН ,договор,код агента. Поиск происходит в такой последовательности. Если по ИНН и договору найден 1 контрагент - тогда он искомый, если больше 1 или 0 то ищем по коду агента, если и коду ничего не нашли то ищем по виду взаиморасчетов. Можно ли такое реализовать 1 запросом. Сейчас все работает, но получается что Если Выборка.количество()>1 тогда там еще запрос итд итп , хотелось бы както это упразднить.
|
|||
1
Wobland
30.08.13
✎
10:43
|
назначь приоритет, объедини, упорядочи, выбери
|
|||
2
престидижитатор
30.08.13
✎
10:44
|
а почему именно одним запросом?
|
|||
3
kosts
30.08.13
✎
10:45
|
(2) В принципе все что можно сделать одним запрос, то лучше так и сделать. (без фанатизма конечно).
|
|||
4
Borteg
30.08.13
✎
10:45
|
(2) сейчас запрос в цикле, а там еще один цикл и в нем другой запрос. мне очень не нравится, думаю что можно както и без этого.
|
|||
5
kosts
30.08.13
✎
10:45
|
(3)+ т.к. запрос к серверу это медленная операция...
|
|||
6
exwill
30.08.13
✎
10:45
|
(4) Конечно можно. Про сортировку слышал?
|
|||
7
Borteg
30.08.13
✎
10:46
|
главная проблема при соединении что в базе есть контрагенты с одинаковым договорами и инн(так поставили учет давно и не хотят отходить от этого), и после левого соединения у меня дубли вылазят...
|
|||
8
Жан Пердежон
30.08.13
✎
10:46
|
(0) миста разрешает
|
|||
9
masenshi
30.08.13
✎
10:46
|
(0) можно
|
|||
10
Borteg
30.08.13
✎
10:47
|
(8) (9) натолкните в сторону чего копать
|
|||
11
Borteg
30.08.13
✎
10:48
|
(6) слышал вроде)
|
|||
12
Rie
30.08.13
✎
10:48
|
(7) Вот насчёт договоров - не понял. Договоры ведь - подчиненный справочник. Как может быть один договор на двух контрагентов?
|
|||
13
Borteg
30.08.13
✎
10:49
|
(12) поиск идет по номеру, это загрузка из внешней системы, в базе например есть контрагенты почта россии , их штук 80, инн номер договора совпадают
|
|||
14
Borteg
30.08.13
✎
10:50
|
(13) их ищут по коду, а есть еще сбор данных с интернет сайтов, там вообще только виду взаиморасчетов определить можно
|
|||
15
kosts
30.08.13
✎
10:54
|
(10) см.(1) Сделай три там запроса. Первый как бы расчитывает, что будет найден один контрагент по ИНН. Второй что если контрагентов несколько и т.д.
Выбрать 1 как Приоритет,
Т.е. сделать запрос сразу по всем вариантам, а в выборке уже разобраться, что нужно. |
|||
16
Borteg
30.08.13
✎
10:56
|
(15) Спасибо, щас попробую разобраться
|
|||
17
kosts
30.08.13
✎
10:57
|
К тому же запрос 1С может возвращать массив выборок. Это если вместо объединения. Возможно будет проще в реализации.
|
|||
18
masenshi
30.08.13
✎
11:11
|
(10)
сюда копай. ВЫБРАТЬ а.ИНН, МИНИМУМ(а.Ссылка) КАК Ссылка1, МАКСИМУМ(а.Ссылка) КАК Сcылка2, ВЫБОР КОГДА а.ИНН = "006640150926" И МИНИМУМ(а.Ссылка) = МАКСИМУМ(а.Ссылка) ТОГДА МИНИМУМ(а.Ссылка) //Условие проверяет что контрагент с таким ИНН только 1 КОГДА МИНИМУМ(а.Ссылка.Код) = 202336 ТОГДА МИНИМУМ(а.Ссылка) //с кодом агента ищем любого //приортет снижается КОНЕЦ КАК СуперПравильныйКонтрагент, ВЫБОР КОГДА а.ИНН = "006640150926" И МИНИМУМ(а.Ссылка) = МАКСИМУМ(а.Ссылка) ТОГДА "Найдено по ИНН" КОГДА МИНИМУМ(а.Ссылка.Код) = 202336 ТОГДА "Найдено по коду" КОНЕЦ КАК КакНашли ИЗ Справочник.Контрагенты КАК а ГДЕ (а.ИНН = "006640150926" ИЛИ а.Код = 202336) СГРУППИРОВАТЬ ПО а.ИНН |
|||
19
Borteg
30.08.13
✎
11:23
|
(18) спасибо, тоже буду разбирать))
|
|||
20
МихаилМ
30.08.13
✎
11:36
|
если существует подходящий индекс , делайте сразу избыточную выборку.
|
|||
21
dk
30.08.13
✎
11:37
|
можно тупо через объединения
|
|||
22
Borteg
30.08.13
✎
11:40
|
(21) интересное решение, будем сейчас строгать запросы) Спасибо всем огромное за помощь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |