Как получить в запросе связь с первичным документом для последнего в цепочке взаимосвязанных?

1. vendim 24 04.04.19 13:09 Сейчас в теме
Есть цепочка взаимосвязанных документов:
1) Первый документ - отчёт комиссионера.
2) Второй документ - корректировка отчёта комиссионера. Во втором документе есть реквизит - ссылка на первый.
3) Третий документ - корректировка отчёта комиссионера. В третьем документе ссылка уже не на отчёт а на предыдущую корректировку.
...
N) N-ый документ корректировки, в котором так же ссылка на N-1 документ.
То есть все последующие за первой корректировкой ссылаются не на первичный документ, а на предыдущую корректировку. В них нет реквизита, ссылающегося на первичный отчёт.

Первый документ одного вида, все последующие другого вида.

Есть отчёт на СКД, в который необходимо для каждого документа корректировки вывести некие данные из первого в этой цепочке документа отчёта.
Каким образом в СКД можно получить такую связку документа корректировки и первичного отчёта?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. acanta 04.04.19 13:13 Сейчас в теме
Типовой отчет структура подчиненности построен на Скд?
3. vendim 24 04.04.19 13:20 Сейчас в теме
Нет. Конфигурация УПП, структура подчинённости выводится через модуль общей формы "ФормаСтруктурыПодчиненности"...
4. VmvLer 04.04.19 13:24 Сейчас в теме
еще со времен 7.7. в каждой уважающей себя конфигурации был и есть функционал получения подчиненности документов.

в современных реализациях это уже больше "грибной" функционал, но он работает и его можно понять и простить,
а можно сидеть и ваять свой самокат месяцами - выбор каждый делает сам.
6. vendim 24 04.04.19 13:37 Сейчас в теме
Естественно, он есть и в УПП. Только он предназначен для других целей. И его реализация не ложится на задачу.
Если выбирать варианты реализации то вообще незачем обращаться к существующим подсистемам - можно тупо нарисовать отчёт на макете...
Вопрос в том возможно ли решить задачу именно средствами СКД - запросом или несколькими наборами данных.
Отчёт существует давно и нужно лишь добавить в него данные. Поэтому

(4)
сидеть и ваять свой самокат месяцами


никто не собирается.
5. oleg-x 26 04.04.19 13:34 Сейчас в теме
Если заранее знаете какое количество документов в структуре, то просто.
Реализация.ДокументОснования.ДокументОснования.ДокументОснования Как исходный документ

Если может быть разное, то если придумаете как сделать это запросами, то вперед, а если нет, то делайте обработкой/отчетом самописным.
7. vendim 24 04.04.19 13:38 Сейчас в теме
(5)
К сожалению, может быть одна корректировка, а может быть и десять в цепочке. Пути пользователей неисповедимы... В том то и засада.
9. SedovSU@mail.ru 297 04.04.19 13:44 Сейчас в теме
(7) Ну тут два подхода. Добавить критерий отбора и его уже в запросе использовать либо описать все это рекурсивно программно. И еще один есть способо где то на инфостарте кто то спомощью СКД делал рекурсию, вы можете найти и по подобию написать свой запрос для вашей задачи
8. acanta 04.04.19 13:42 Сейчас в теме
Каковы входные и выходные данные? Отчет строится по одному первому документу? Группе клиентов, у каждого из которых есть несколько первичных оснований?
11. vendim 24 04.04.19 14:00 Сейчас в теме
(8)
Каковы входные и выходные данные? Отчет строится по одному первому документу? Группе клиентов, у каждого из которых есть несколько первичных оснований?

Отчёт - таблица документов за период.
По вертикали ссылки на документы (отчёты и корректировки), упорядоченные по датам. По горизонтали некий набор данных: реквизиты комиссионера, сумма передачи на комиссию, сумма реализации комиссионером конечному покупателю, НДС и т.д. и т.п.
Получается, что в строках для корректировок отчётов можно легко вывести сумму передачи (её можно вытянуть по ссылке из отчёта), а вот в строках для корректировок корректировок это сделать не получается.


(9)
Критериий отбора "СвязанныеДокументы" в конфе есть, только как их использовать применительно к данной задаче не понятно.
Рекурсию искал, вникал, но всё что попадалось (например https://expert.chistov.pro/public/84547/) в основном про иерархию справочников. Рекурсию по документам не нашёл.
10. oleg-x 26 04.04.19 13:44 Сейчас в теме
Ну если делать в рамках СКД, то скорее всего можно сделать так, выгрузить результат набора данных в таблицу, обработать эту таблицу уже программно и загрузить в НаборОбъект обработанную таблицу и уже из этого набора делать компоновку. Изменения минимальны на стороне СКД, а для пользователя ничего не изменится.

А как запросом, то я не представляю ибо циклов в запросах нет, а пользователь может делать корректировку корректировочного документа до бесконечности.
12. SedovSU@mail.ru 297 04.04.19 14:08 Сейчас в теме
(10)можно можно запросом, на инфостарте видел такие отчеты (Дерево ресурсных спецификация для ERP) там прям реализованы отчеты без программного подхода рекурсии все запросом, но пока не представляю как это сделать - но кто то так может.

А ваш подход выгрузить в таблицу - да я думаю самый оптимальный подход
15. oleg-x 26 04.04.19 14:20 Сейчас в теме
(12) Я бы посмотрел такой отчет, но есть подозрение, что эта иерархия хранится в каком нить регистре. В УТ 11 и ERP есть справочники, иерархия которых строится через регистр сведений.
16. SedovSU@mail.ru 297 04.04.19 14:35 Сейчас в теме
(15) возможно, вы и правы, я сам отчет данный не видел, но только наслышан об этом.
13. SedovSU@mail.ru 297 04.04.19 14:11 Сейчас в теме
(10) вот есть пример разузлования, автору надо что то подобное только по документам https://infostart.ru/public/78285/
14. oleg-x 26 04.04.19 14:13 Сейчас в теме
(13) Да только это программно, без СКД, а вот как сделать в рамках СКД не посредственно запросами, не выгружаю в промежуточные таблицы, вот это интересная головоломка.
17. acanta 04.04.19 14:39 Сейчас в теме
(14) реквизит договор не предлагать?
19. vendim 24 04.04.19 14:43 Сейчас в теме
(17)
Ну почему же? Только как это поможет? В рамках одного договора за период может быть несколько "отгрузок" - отчётов комиссионера с разными ценами, и корректировки нужны применительно к каждому отчёту.
18. vendim 24 04.04.19 14:41 Сейчас в теме
(14)
Конечно, без промежуточных таблиц или нескольких наборов данных не обойтись.
Вот как раз в https://expert.chistov.pro/public/84547/ там построено на двух наборах данных - один для групп, другой для элементов и связи их между собой.
Но цепочка документов это не иерархия, и "переделать" это пример для своей задачи мне не удалось.
Где бы посмотреть аналогию для документов...
21. oleg-x 26 04.04.19 14:56 Сейчас в теме
(18) То как там сделано, применимо только для справочников, так как там есть иерархия.
Сделано там объединением двух наборов.
1) Получают группы первого уровня и все подчиненные элементы. Имеется большая таблица, у которых указана наивысшая группа.
2) Наши элементы, для которых надо определить наивысшую группу.
Вторая таблица соединяется с первой левым соединением и таким образом определяем наивысшую группу.
У документов нет иерархии, по этому это не сработает.
28. acanta 04.04.19 15:22 Сейчас в теме
(21) вы же описали выше именно иерархию документов.
29. oleg-x 26 04.04.19 15:31 Сейчас в теме
20. acanta 04.04.19 14:50 Сейчас в теме
Но договор есть у корректировки тоже? А соглашение ?
22. vendim 24 04.04.19 15:00 Сейчас в теме
(20)
В УПП нет соглашения. Договор у корректировки есть. Но всё равно не понимаю как договор может помочь?
23. oleg-x 26 04.04.19 15:02 Сейчас в теме
(22) Я так полагаю, он предполагает что на каждую отгрузку делается свое соглашение/договор и понему связать родительский документ. Если так, то можно запросом, но чем больше документов, тем громаднее будет первая таблица.
Но так мало кто делает, что бы на каждую отгрузку был свой договор.
24. vendim 24 04.04.19 15:03 Сейчас в теме
(23)
Да, такого точно нет. Договор собственно (поскольку комиссионная торговля) один. По нему все отгрузки комиссионеру. А грузополучатели (клиенты комиссионера) разные. Их договоров даже нет. Они не требуются.
25. vendim 24 04.04.19 15:17 Сейчас в теме
Может как-то можно выборкой документов оснований во временную таблицу и потом соединением её самой с собой по условию... ?
26. oleg-x 26 04.04.19 15:20 Сейчас в теме
(25) Можно так, определив что допустим не больше 5 уровней может быть. Или если протянуть через все документы общий признак.
Если смотреть в эту сторону, то можно завести доп. реквизит "Самый главный документ" и тянуть его при создание на основание каждого документа.
Но придется заполнить его для всех документов, которые уже созданы.
27. oleg-x 26 04.04.19 15:22 Сейчас в теме
Ну и плюс, лопатить все процедуры заполнения на основание. По этому как мне кажется 9при условие нет общих признаков), проще с промежуточной таблицой, по крайне мере я бы так сделал.
30. starjevschik 04.04.19 16:09 Сейчас в теме
Я бы добавил в корректировки реквизит - начальный документ.
Ну или как-нибудь более кучеряво, регистр например с исходным документом для каждой корректировки.
Запросом можно сделать конструкцией вида
выбор когда ТекДокумент.Основание.Основание.Основание
с проверкой каждого уровня на заполненность и предусмотреть какой-то разумный максимум уровней. Но работать будет неспешно.
31. acanta 04.04.19 16:14 Сейчас в теме
В Скд можно в вычисляемом выражении вызвать глобальную функцию вида
Если ссылка.основание.метаданные = отчеткомиссионера тогда возврат ссылка.основание иначе рекурсивный вызов этой же функции.
Это если в лоб.
32. ditp 91 04.04.19 17:05 Сейчас в теме
Сдается, что нужно погуглить "сложная иерархия в скд"

И, например, посмотреть https://www.youtube.com/watch?v=Oh3hIl6pTqg из поисковой выдачи.
33. oleg-x 26 04.04.19 18:23 Сейчас в теме
(32) Хороший пример. Для документов, кто то всегда должен заполнять этот реквизит, что не очень удобно пользователю.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот