Имя: Пароль:
1C
1С v8
Запрос. Связать две таблицы с учетом уже используемых записей
0 SeiOkami
 
04.06.13
10:25
Здравия всем!
Дело такое. В запросе получаю две таблицы, которые нужно "состыковать". Но так, чтобы "состыкованные" записи более не подтягивались (не задваивались). Опишу на примере:

ВТ_1
Дата     Док   №Строки Сумма
03.03.13  Док1  1        30р.
04.03.13  Док2  2        30р.
05.03.13  Док3  3        30р.

ВТ_2
Дата      Док   №Строки Сумма
03.03.13  Док4  4        30р.
02.03.13  Док5  5        30р.
01.03.13  Док6  6        30р.

В результате должно быть:
Дата1     Док1  №Строки1 Сумма1    Дата2      Док2 №Строки2 Сумма2
03.03.13  Док1  1        30р.       03.03.13  Док4  4        30р.
04.03.13  Док2  2        30р.       02.03.13  Док5  5        30р.
05.03.13  Док3  3        30р.       01.03.13  Док6  6        30р.

Связь идет по Сумма1 = Сумма2, и по дате. Сначала равные даты, затем Дата1 = (Дата2 - 1)и т.д. При этом должен быть учет уже "состыкованных" записей

Сейчас это организованно так. На каждый период стыковки своя временная таблица, которая стыкует по дата1 = (дата2 - N) с исключение записей которые уже есть в предыдущих временных таблицах.
Это очень тупо и как-то медленно.

Есть какие-нить другие идеи как это организовать в запросе?
1 zak555
 
04.06.13
10:26
куйня
в одной дате может быть один документ, в другой два, в третьей 8

как будешь выводить ?

+ у каждого из них разное количество строк
2 Mitriy
 
04.06.13
10:27
если кто-то что-то понял, поделитесь...
3 SeiOkami
 
04.06.13
10:27
(1) по каждому дню одна запись.
4 Ненавижу 1С
 
гуру
04.06.13
10:28
ставлю на v8: FIFO в запросе
5 SeiOkami
 
04.06.13
10:28
забыл это уточнить)
6 SeiOkami
 
04.06.13
10:30
(4), что-то не пойму как это связанно
7 zak555
 
04.06.13
10:31
(3) у тебя:
03.03.13 для документа1 выводится строка1 и для документа4 строка4 ?

если в документе есть строка4, то там же есть и строка1, строка2, строка3
8 SeiOkami
 
04.06.13
10:33
(7) в других строках другие данные, которые мы не берем.

Да, нужно было просто написать так:

ВТ_1
Дата     Док   Сумма

03.03.13  Док1 30р.
04.03.13  Док2 30р.
05.03.13  Док3 30р.

ВТ_2
Дата      Док   Сумма

03.03.13  Док4  30р.
02.03.13  Док5  30р.
01.03.13  Док6  30р.

В результате должно быть:
Дата1     Док1  Сумма1    Дата2      Док2 Сумма2
03.03.13  Док1  30р.       03.03.13  Док4  30р.
04.03.13  Док2  30р.       02.03.13  Док5  30р.
05.03.13  Док3  30р.       01.03.13  Док6  30р.
9 SeiOkami
 
04.06.13
10:33
Так проще)
10 zak555
 
04.06.13
10:36
как это у документа часть данных в одной ТЧ нужна, а часть не нужна ? о_О
11 SeiOkami
 
04.06.13
10:38
(10), блин условия стоят на тип субконто. Суть не в этом, а том как решить (8)
12 zak555
 
04.06.13
10:57
(11) делай один запрос к ТЧ с группировками по дате, регистратору
13 SeiOkami
 
04.06.13
11:06
(12), ???
это к чему?
14 SeiOkami
 
04.06.13
11:23
уп
15 SeiOkami
 
04.06.13
11:55
1
16 Ненавижу 1С
 
гуру
04.06.13
13:51
для 1 набора подбирать во 2 наборе только с непревосходящей датой?
если даты наборов перемешаны? даты набора 2 могут идти позже дат набора 1?
если число документов в наборах различно?
17 Aprobator
 
04.06.13
14:07
(0) по дате связь через одно место сделана.
Стандартно Дата1 >= Дата2. Дальше связь таблицы на саму себя по Сумма и Дата1 (раз один день - одна запись) где Дата2 - максимум. Механизм известен - потому описывать лениво.
18 Aprobator
 
04.06.13
14:09
а не - не понял сначала. Тут какой то более сложный гемор.
19 SeiOkami
 
04.06.13
15:17
(18) тут ужаснейший гемор...
Пока других идей нет(
20 SeiOkami
 
04.06.13
16:37
уп