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


#0 by tciban
Почтенные коллеги! Занимаясь написанием некоего отчета под СКД столкнулся со следующей проблемой: я вывожу таблицу документов одного вида и в колонках среди прочего должна быть колонка с последним (по дате) документом, связанным с этим документом. Есть критерий отбора, но в данном случае наверное он неприменим. Как это реализовать? Подробнее и понятнее - есть документ Сделка, есть куча видов документов в которых есть реквизит "Сделка" - ссылка на документ Сделка, для каждой Сделки нужно получить последний по дате документ (не важно какого вида) связанный с этой Сделкой через реквизит Сделка. Как это сделать?
#1 by Demasiado
Можно, посмотреть как работает отчет Структура подчиненности в любой типовой конфе, там это сделано запросом
#2 by Eugeneer
очень легко. соединениями левыми.
#3 by tciban
Там это делается для одного документа. И запрос строится по метаданным :) У меня же несколько иной случай...
#4 by tciban
Чего с чем?
#5 by mikecool
запрос к критерию отбора СвязанныеДокументы что нить даст?
#6 by yra77
Скорее ни как. В конфах ведь процедурно реализовано, а ведь люди пишут не самые тупые.
#7 by Jstunner
"процедурно"?
#8 by Jstunner
документа сделки, со всеми остальными
#9 by Господин ПЖ
>В конфах ведь процедурно реализовано там реализовано "процедурно" рисование полное дерево структуры подчиненности Док1 ----->Док2 ---------->Док3 вниз оно рисуется по критерию, вверх по метаданным
#10 by tciban
Критерий скорее всего никак - там параметр надо указывать в запросе...
#11 by yra77
а чего - по существу - данные собираются запросом что-ли?
#12 by tciban
Ну хорошо, а как можно запросом выбрать самый последний документ определенного вида из всех у кого реквизит равен некоему параметру в запросе?
#13 by hhhh
ну да, критерий отбора юзай. Тебе же сказали.
#14 by tciban
Я не понял как в запросе применить отбор. Вот например простой запрос: И как тут использовать критерий отбора что бы получить по каждой сделке последний по дате документ у которого реквизит "Сделка" ссылается на эту сделку? Критерий отбора "ДокументыСделки" есть.
#15 by tciban
Неужели никто ничего подобного не делал?
#16 by tciban
Все парни, уже башку почти сломал, скоро увезут меня в дурку - ничего не могу придумать. Как получить последний документ определенного вида - нашел, но тут то дофига документов! И надо последний из них. Может кто чего умного сказать?
#17 by tciban
Да. Я таки сделал это. Но чертовски долго работает. :( Теперь все это надо как-то ускорить ИЗ ИЗ ИЗ ИЗ ИЗ                (ВЫБРАТЬ ПЕРВЫЕ 1                    ПДокК.Ссылка                ИЗ
#18 by FIXXXL
а в РН какой-нить у тебя сделка не пишется? Взаиморасчеты к примеру? и если по докам: про Проведен=Истина не забудь
#19 by tciban
Не, проведен тут не важно. Важен факт наличия документ как некая стадия развития сделки. Сделка пишется в регистр всяко, в регистр накопления "Баланс сделки" оттуда тоже для отчета достаю инфу, с этим без проблем. Проблема только в этом запросе - пеприемлимо долго работает. Я уж склоняюсь к созданию регистра сведений для запоминания последнего документа по сделке, останавливает только то, что как то глупо городить регистр ради одного отчета.
#20 by tciban
Время выполнения 11 минут 23 сек. :(
#21 by FIXXXL
может тебе в сторону бизнес-процессов глянуть?
#22 by tciban
В сторону бизнес процессов гляжу давно, но в данном случае мне нужно написать отчет, а бизнес процесс как поможет - не совсем понимаю :)
#23 by FIXXXL
БП, ну в будущем :) ты пойми, 1С заточено на регистры, на документы не заточено
#24 by Икогнито
Земля круглая. Когда-то очень давно в каком-то франче мне дали тестовое задание: напишите универсальный запрос, работающий на любой конфигурации, осуществляющий выборку всех подчиненных документов документу, переданному в параметре запроса. Параметр у запроса должен быть только один. Текст запроса в процедуре не должен формироваться с помощью средств встроеного языка системы. До сих пор не знаю как это сделать.
#25 by Икогнито
+ сказал, что это из разряда "анриал" и ушел, чувствуя себя неудачником :(
#26 by Господин ПЖ
судя по всему - через критерий отбора... но это перечеркивает "любой конфигурации"
#27 by tciban
нереально, т.к. у в типовых и то запрос формируется с помощью средств языка и (в некоторых конфах) с использованием критерия отбора.
#28 by tciban
Up-ну как я тему, вдрук какой гуру скажет что-то ценное и полезное.
#29 by tciban
Кстати, наилучшим по скорости решением проблемы оказалось использование в запросе внешней функции. Если кому интересно: на моей базе получение последнего документа запросом в СКД - 16 сек., с использованием набора данных-объекта (заранее заполненная с помощью критерия отбора таблица) в СКД - 7 сек., вызов в СКД внешней функции в вычисляемом поле (последний документ получаем опять же с использованием критерия отбора) - 3 сек.
#30 by dimoff
"Я уж склоняюсь к созданию регистра сведений для запоминания последнего документа по сделке, останавливает только то, что как то глупо городить регистр ради одного отчета." Зависит от того как часто отчетом пользуются
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С