Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

помогите с запросом

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

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

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

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

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

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.