Имя: Пароль:
1C
1С v8
помогите с запросом
0 novichok79
 
14.02.21
18:18
Добрый вечер, уважаемые коллеги.
Есть таблица дублей, КЛ - контрагент слева, КП - контрагент справа
-------
КЛ | КП
-------
К1 | К2
К2 | К3
К3 | К4 - последняя запись в истории изменения документов, удостоверяющих личность, К4 создан позже, чем К3

можно ли как-то сгруппировать таблицу в запросе таким образом, чтобы
было что-то вроде:

К4 | К1
К4 | К2
К4 | К3

Можно заджойнить таблицу саму с собой несколько раз подряд, но это будет по джойну на каждую дочернюю связь, жесть.
Есть ли более гуманные способы? Заранее благодарю за помощь.
1 novichok79
 
14.02.21
18:18
То есть в результирующей таблице слева всегда самая поздняя запись, а справа типа ее история.
2 RomanYS
 
14.02.21
18:24
(0)>> но это будет по джойну на каждую дочернюю связь
Вроде при правильном подходе достаточно N джойнов для глубины 2^N
3 novichok79
 
14.02.21
18:25
(2) пример в студию пжл
4 RomanYS
 
14.02.21
18:37
(3) лень ковырять
По идее у этого автора были статьи на эту тему
http://catalog.mista.ru/1c/articles/1105799/
5 novichok79
 
14.02.21
18:42
(4) ну он там тоже Америку не открыл, у него иерархическая связь оформлена через последовательные запросы иерархии.
ладно буду дальше копать. спасибо.
6 Бишбармак
 
14.02.21
18:43
А если во временную таблицу "самую последнюю запись" (выбрать первые 1 ....) и ПОЛНОЕ СОЕДИНЕНИЕ с второй таблицей.
.. или я сути вопроса не понял?
7 novichok79
 
14.02.21
18:49
чтобы получить последнюю запись надо сначала построить некий граф зависимостей
типа К1 -> K2 -> K3 -> K4, потом взять из строки с 4мя (например) контрагентами взять того, у кого самая последняя запись в срезе последних, она и будет "мамкой" остальным вершинам графа, и потом уже выбрать таблицу, где будет
K1 K4
K2 K4
K3 K4
8 АНДР
 
14.02.21
18:51
+7 Прежде чем строить цепочки, нужно найти первые или последние элементы в них.
9 RomanYS
 
14.02.21
18:56
(7) первым соединением получил

К1 | К2 | К3
К2 | К3 | К4
К3 | К4 | К4

вторым уже нужную таблицу. (2) - верно
10 novichok79
 
14.02.21
18:59
(9) то есть соединил таблицу саму с собой, чтобы получить третью колонку, а другим джойном убрал строки ниже, которые уже вошли в цепочку выше, верно?
11 RomanYS
 
14.02.21
19:07
(10) Первым джойном получил родителей 2 уровня и и первого через ЕстьNULL: К3 | К4 | К4 <ЕстьNULL>,
вторым джойном (результата первого джойна с самим собой) - уровни 1-4,
третим 1-8
...
12 novichok79
 
14.02.21
19:21
(11) ясно, попробую реализовать
13 RomanYS
 
14.02.21
19:22
(12) главное чтобы в данных колец не было, а то фигня получится))
14 Cthulhu
 
14.02.21
19:23
ну т.е. нумерации как таковой нет и сортировки тоже - я правильно понимаю?.. м.б. из
Х|Е
Р|Н
Н|Я
Е|Р
надо получить
Я|Х
Я|Е
Я|Р
Я|Н
например... так?..
15 Cthulhu
 
14.02.21
19:24
тогда через скд вроде решается - Алгоритм Разузлование номенклатуры
16 novichok79
 
14.02.21
22:33
(15) там произвольный запрос требуется, поэтому СКД не подходит
17 novichok79
 
14.02.21
22:33
(15) а так да, разузлование номенклатуры я как-то делал через СКД, прикольно получилось
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший