Есть цепочка взаимосвязанных документов:
1) Первый документ - отчёт комиссионера.
2) Второй документ - корректировка отчёта комиссионера. Во втором документе есть реквизит - ссылка на первый.
3) Третий документ - корректировка отчёта комиссионера. В третьем документе ссылка уже не на отчёт а на предыдущую корректировку.
...
N) N-ый документ корректировки, в котором так же ссылка на N-1 документ.
То есть все последующие за первой корректировкой ссылаются не на первичный документ, а на предыдущую корректировку. В них нет реквизита, ссылающегося на первичный отчёт.
Первый документ одного вида, все последующие другого вида.
Есть отчёт на СКД, в который необходимо для каждого документа корректировки вывести некие данные из первого в этой цепочке документа отчёта.
Каким образом в СКД можно получить такую связку документа корректировки и первичного отчёта?
еще со времен 7.7. в каждой уважающей себя конфигурации был и есть функционал получения подчиненности документов.
в современных реализациях это уже больше "грибной" функционал, но он работает и его можно понять и простить,
а можно сидеть и ваять свой самокат месяцами - выбор каждый делает сам.
Естественно, он есть и в УПП. Только он предназначен для других целей. И его реализация не ложится на задачу.
Если выбирать варианты реализации то вообще незачем обращаться к существующим подсистемам - можно тупо нарисовать отчёт на макете...
Вопрос в том возможно ли решить задачу именно средствами СКД - запросом или несколькими наборами данных.
Отчёт существует давно и нужно лишь добавить в него данные. Поэтому
Если заранее знаете какое количество документов в структуре, то просто.
Реализация.ДокументОснования.ДокументОснования.ДокументОснования Как исходный документ
Если может быть разное, то если придумаете как сделать это запросами, то вперед, а если нет, то делайте обработкой/отчетом самописным.
9.
SedovSU@mail.ru
29704.04.19 13:44 Сейчас в теме
(7) Ну тут два подхода. Добавить критерий отбора и его уже в запросе использовать либо описать все это рекурсивно программно. И еще один есть способо где то на инфостарте кто то спомощью СКД делал рекурсию, вы можете найти и по подобию написать свой запрос для вашей задачи
Каковы входные и выходные данные? Отчет строится по одному первому документу? Группе клиентов, у каждого из которых есть несколько первичных оснований?
Каковы входные и выходные данные? Отчет строится по одному первому документу? Группе клиентов, у каждого из которых есть несколько первичных оснований?
Отчёт - таблица документов за период.
По вертикали ссылки на документы (отчёты и корректировки), упорядоченные по датам. По горизонтали некий набор данных: реквизиты комиссионера, сумма передачи на комиссию, сумма реализации комиссионером конечному покупателю, НДС и т.д. и т.п.
Получается, что в строках для корректировок отчётов можно легко вывести сумму передачи (её можно вытянуть по ссылке из отчёта), а вот в строках для корректировок корректировок это сделать не получается.
(9)
Критериий отбора "СвязанныеДокументы" в конфе есть, только как их использовать применительно к данной задаче не понятно.
Рекурсию искал, вникал, но всё что попадалось (например https://expert.chistov.pro/public/84547/) в основном про иерархию справочников. Рекурсию по документам не нашёл.
Ну если делать в рамках СКД, то скорее всего можно сделать так, выгрузить результат набора данных в таблицу, обработать эту таблицу уже программно и загрузить в НаборОбъект обработанную таблицу и уже из этого набора делать компоновку. Изменения минимальны на стороне СКД, а для пользователя ничего не изменится.
А как запросом, то я не представляю ибо циклов в запросах нет, а пользователь может делать корректировку корректировочного документа до бесконечности.
12.
SedovSU@mail.ru
29704.04.19 14:08 Сейчас в теме
(10)можно можно запросом, на инфостарте видел такие отчеты (Дерево ресурсных спецификация для ERP) там прям реализованы отчеты без программного подхода рекурсии все запросом, но пока не представляю как это сделать - но кто то так может.
А ваш подход выгрузить в таблицу - да я думаю самый оптимальный подход
(12) Я бы посмотрел такой отчет, но есть подозрение, что эта иерархия хранится в каком нить регистре. В УТ 11 и ERP есть справочники, иерархия которых строится через регистр сведений.
(13) Да только это программно, без СКД, а вот как сделать в рамках СКД не посредственно запросами, не выгружаю в промежуточные таблицы, вот это интересная головоломка.
(17)
Ну почему же? Только как это поможет? В рамках одного договора за период может быть несколько "отгрузок" - отчётов комиссионера с разными ценами, и корректировки нужны применительно к каждому отчёту.
(14)
Конечно, без промежуточных таблиц или нескольких наборов данных не обойтись.
Вот как раз в https://expert.chistov.pro/public/84547/ там построено на двух наборах данных - один для групп, другой для элементов и связи их между собой.
Но цепочка документов это не иерархия, и "переделать" это пример для своей задачи мне не удалось.
Где бы посмотреть аналогию для документов...
(18) То как там сделано, применимо только для справочников, так как там есть иерархия.
Сделано там объединением двух наборов.
1) Получают группы первого уровня и все подчиненные элементы. Имеется большая таблица, у которых указана наивысшая группа.
2) Наши элементы, для которых надо определить наивысшую группу.
Вторая таблица соединяется с первой левым соединением и таким образом определяем наивысшую группу.
У документов нет иерархии, по этому это не сработает.
(22) Я так полагаю, он предполагает что на каждую отгрузку делается свое соглашение/договор и понему связать родительский документ. Если так, то можно запросом, но чем больше документов, тем громаднее будет первая таблица.
Но так мало кто делает, что бы на каждую отгрузку был свой договор.
(23)
Да, такого точно нет. Договор собственно (поскольку комиссионная торговля) один. По нему все отгрузки комиссионеру. А грузополучатели (клиенты комиссионера) разные. Их договоров даже нет. Они не требуются.
(25) Можно так, определив что допустим не больше 5 уровней может быть. Или если протянуть через все документы общий признак.
Если смотреть в эту сторону, то можно завести доп. реквизит "Самый главный документ" и тянуть его при создание на основание каждого документа.
Но придется заполнить его для всех документов, которые уже созданы.
Ну и плюс, лопатить все процедуры заполнения на основание. По этому как мне кажется 9при условие нет общих признаков), проще с промежуточной таблицой, по крайне мере я бы так сделал.
Я бы добавил в корректировки реквизит - начальный документ.
Ну или как-нибудь более кучеряво, регистр например с исходным документом для каждой корректировки.
Запросом можно сделать конструкцией вида
выбор когда ТекДокумент.Основание.Основание.Основание
с проверкой каждого уровня на заполненность и предусмотреть какой-то разумный максимум уровней. Но работать будет неспешно.
В Скд можно в вычисляемом выражении вызвать глобальную функцию вида
Если ссылка.основание.метаданные = отчеткомиссионера тогда возврат ссылка.основание иначе рекурсивный вызов этой же функции.
Это если в лоб.