Имя: Пароль:
1C
1C 7.7
v7: Одинаковые ТЧ дока запросом SQL
, ,
0 monsterZE
 
06.06.14
12:01
Народ, подскажите как выцепить сабж =)
Скажем, если в тч всего три реквизита товар, колво и сумма.
1 monsterZE
 
06.06.14
12:03
пока тока вот такое вот родилось =)
--- просто по суммам и паре реквизитов сворачивает
    ТекстЗапроса = "
    |SELECT
    |    $Док.Сумма as СуммаДок
    |    ,COUNT(*) as Одинак
    |FROM
    |    _1SJourn as Жур (NOLOCK)
    |INNER JOIN
    |    $Документ.РасходнаяНал as Док (NOLOCK) ON Док.IDDoc = Жур.IDDoc %ОтборПоСкладу% %ОтборПоКлиенту%
    |                        AND $Док.ПризнакНакладной = $Перечисление.ПризнРасхНакл.Продажа
    |WHERE
    |    Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
    |    AND Жур.IDDocDef = $ВидДокумента.РасходнаяНал
    |   AND Жур.Closed & 1 = 1
    |GROUP BY
    |    $Док.Сумма, $Док.Категория, $Док.Вид
    |HAVING COUNT(*)>1
    |";
2 Ёпрст
 
06.06.14
12:03
очень сильное шаманство, используя INTERSECT
3 monsterZE
 
06.06.14
12:04
(2) короче это гемор =)
4 Ёпрст
 
06.06.14
12:16
(3) почему ?
Обычное пересечение ..
Можно еще и ранжирующими функциями делать
5 Ёпрст
 
06.06.14
12:17
ну или вообще примитив, тупо через соединение
6 МихаилМ
 
06.06.14
12:35
задача поставленна некорректно т.к. не описано условие повторения строк в тч
7 monsterZE
 
06.06.14
13:26
(6) непонял что за "условие повторения строк"?
ты про
Док1 - товар1, товар2
Док2 - товар2, товар1
?
вобще, конечно, такое надо решать по другому =) вопрос из спортивного интереса..

(4)(5)
пересечение чего с чем?
есть, например, полная табличка с ИдДок, Товар
ее надо отсортировать по ИдДок, Товар
из нее надо выкусить ТЧ перевого ИдДок
и искать соответствие в основной, кроме него самого =)
и так далее..
интерсект возвращает различия в двух табличках
как сие мне может помочь?
8 Ёпрст
 
06.06.14
13:29
(7) а тебе что надо , для начала ?
интерсект в подзапрос + условие на exists и усё..
9 monsterZE
 
06.06.14
13:32
(8) найти документы с одинаковой табличной частью
10 Ёпрст
 
06.06.14
14:01
(9) of rbye ghbvbnbdysq ghbvth
11 Ёпрст
 
06.06.14
14:18
типа того:


select
   Жур.iddoc [док $Документ.Реализация]
from _1sjourn Жур (nolock)
inner join _1sjourn Жур2(nolock)on  Жур.iddoc<> Жур2.iddoc and Жур2.iddocdef = $ВидДокумента.реализация
and not exists(select $Док.Номенклатура,$Док.Количество from $ДокументСтроки.Реализация Док (nolock) where Док.iddoc = Жур.iddoc EXCEPT select $Док2.Номенклатура,$Док2.Количество from $ДокументСтроки.Реализация Док2 (nolock) where Док2.iddoc = Жур2.iddoc )
where Жур.iddocdef = $ВидДокумента.реализация
12 Ёпрст
 
06.06.14
14:21
+11 только там надо еще одно условие на EXCEPT  в другую сторону..
13 Ёпрст
 
06.06.14
14:22
+12 доки местами поменять, короче..
14 Ёпрст
 
06.06.14
14:27
короче, так

select
   Жур.iddoc [док $Документ.Реализация]
   ,Жур2.iddoc [дубель $Документ.Реализация]
from _1sjourn Жур (nolock)
inner join _1sjourn Жур2(nolock)on  Жур.iddoc<> Жур2.iddoc and Жур2.iddocdef = $ВидДокумента.реализация
and not exists(select $Док.Номенклатура,$Док.Количество from $ДокументСтроки.Реализация Док (nolock) where Док.iddoc = Жур.iddoc EXCEPT select $Док2.Номенклатура,$Док2.Количество from $ДокументСтроки.Реализация Док2 (nolock) where Док2.iddoc = Жур2.iddoc )
and not exists(select $Док.Номенклатура,$Док.Количество from $ДокументСтроки.Реализация Док (nolock) where Док.iddoc = Жур2.iddoc EXCEPT select $Док2.Номенклатура,$Док2.Количество from $ДокументСтроки.Реализация Док2 (nolock) where Док2.iddoc = Жур.iddoc )

where Жур.iddocdef = $ВидДокумента.реализация
15 Ёпрст
 
06.06.14
14:28
ну там, свои колонки сам в запрос запихаешь (а не только товар и количество, короче, че хошь, то и пихай :) )
16 Ёпрст
 
06.06.14
14:30
ну и это.. от "парных" записях, ты уж как-нить сам ..сам .. избавляйся :)

Это те которые будут

Док   Дубль

Док1   Док2
.....
Док2   Док1
17 monsterZE
 
06.06.14
15:18
(16) угу, пасиб, ща буду ковырять =)
18 Ёпрст
 
06.06.14
15:20
ну и это, табличные части доков, можешь еще "свернуть" в запросе, если надо (мало ли там, одинаковые товары валяются..