|
Как в запросе получить список подчиненных документов? | ☑ | ||
---|---|---|---|---|
0
tciban
03.08.11
✎
16:14
|
Почтенные коллеги! Занимаясь написанием некоего отчета под СКД столкнулся со следующей проблемой: я вывожу таблицу документов одного вида и в колонках среди прочего должна быть колонка с последним (по дате) документом, связанным с этим документом. Есть критерий отбора, но в данном случае наверное он неприменим. Как это реализовать?
Подробнее и понятнее - есть документ Сделка, есть куча видов документов в которых есть реквизит "Сделка" - ссылка на документ Сделка, для каждой Сделки нужно получить последний по дате документ (не важно какого вида) связанный с этой Сделкой через реквизит Сделка. Как это сделать? |
|||
1
Demasiado
03.08.11
✎
16:16
|
Можно, посмотреть как работает отчет Структура подчиненности в любой типовой конфе, там это сделано запросом
|
|||
2
Eugeneer
03.08.11
✎
16:17
|
очень легко. соединениями левыми.
|
|||
3
tciban
03.08.11
✎
16:29
|
(1) Там это делается для одного документа. И запрос строится по метаданным :) У меня же несколько иной случай...
|
|||
4
tciban
03.08.11
✎
16:30
|
(2) Чего с чем?
|
|||
5
mikecool
03.08.11
✎
16:40
|
запрос к критерию отбора СвязанныеДокументы что нить даст?
|
|||
6
yra77
03.08.11
✎
16:47
|
Скорее ни как. В конфах ведь процедурно реализовано, а ведь люди пишут не самые тупые.
|
|||
7
Jstunner
03.08.11
✎
16:48
|
(6) "процедурно"?
|
|||
8
Jstunner
03.08.11
✎
16:50
|
(4) документа сделки, со всеми остальными
|
|||
9
Господин ПЖ
03.08.11
✎
16:51
|
>В конфах ведь процедурно реализовано
там реализовано "процедурно" рисование полное дерево структуры подчиненности Док1 ----->Док2 ---------->Док3 вниз оно рисуется по критерию, вверх по метаданным |
|||
10
tciban
03.08.11
✎
17:29
|
Критерий скорее всего никак - там параметр надо указывать в запросе...
|
|||
11
yra77
03.08.11
✎
18:40
|
(9) а чего - по существу - данные собираются запросом что-ли?
|
|||
12
tciban
04.08.11
✎
09:39
|
Ну хорошо, а как можно запросом выбрать самый последний документ определенного вида из всех у кого реквизит равен некоему параметру в запросе?
|
|||
13
hhhh
04.08.11
✎
09:47
|
(12) ну да, критерий отбора юзай. Тебе же сказали.
|
|||
14
tciban
04.08.11
✎
10:05
|
Я не понял как в запросе применить отбор. Вот например простой запрос:
ВЫБРАТЬ Сделка.Ссылка, Сделка.Контрагент, Сделка.Ответственный, Сделка.СуммаДокумента, Сделка.СуммаДохода ИЗ Документ.Сделка КАК Сделка И как тут использовать критерий отбора что бы получить по каждой сделке последний по дате документ у которого реквизит "Сделка" ссылается на эту сделку? Критерий отбора "ДокументыСделки" есть. |
|||
15
tciban
04.08.11
✎
10:22
|
Неужели никто ничего подобного не делал?
|
|||
16
tciban
04.08.11
✎
13:19
|
Все парни, уже башку почти сломал, скоро увезут меня в дурку - ничего не могу придумать. Как получить последний документ определенного вида - нашел, но тут то дофига документов! И надо последний из них. Может кто чего умного сказать?
|
|||
17
tciban
05.08.11
✎
09:23
|
Да. Я таки сделал это. Но чертовски долго работает. :( Теперь все это надо как-то ускорить
ВЫБРАТЬ ОплатаПокупателя.Ссылка КАК Ссылка ПОМЕСТИТЬ ДокументыСделок ИЗ Документ.ОплатаПокупателя КАК ОплатаПокупателя ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ОплатаПоставщику.Ссылка ИЗ Документ.ОплатаПоставщику КАК ОплатаПоставщику ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВыдачаКэш.Ссылка ИЗ Документ.ВыдачаКэш КАК ВыдачаКэш ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПрочиеПоступления.Ссылка ИЗ Документ.ПрочиеПоступления КАК ПрочиеПоступления ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПоступлениеТоваровУслуг.Ссылка ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПеремещениеТоваров.Ссылка ИЗ Документ.ПеремещениеТоваров КАК ПеремещениеТоваров ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ СчетНаОплатуПокупателю.Ссылка ИЗ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ СчетФактураВыданный.Ссылка ИЗ Документ.СчетФактураВыданный КАК СчетФактураВыданный ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТребованиеОплаты.Ссылка ИЗ Документ.ТребованиеОплаты КАК ТребованиеОплаты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТребованиеКэш.Ссылка ИЗ Документ.ТребованиеКэш КАК ТребованиеКэш ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РасчетПремии.Ссылка ИЗ Документ.РасчетПремии КАК РасчетПремии ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РаспределениеДенег.Ссылка ИЗ Документ.РаспределениеДенег КАК РаспределениеДенег ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Сделк.Ссылка КАК Сделка, ПДок.Ссылка КАК ПоследнийДокумент ИЗ Документ.Сделка КАК Сделк ЛЕВОЕ СОЕДИНЕНИЕ ДокументыСделок КАК ПДок ПО (ПДок.Ссылка.Сделка = Сделк.Ссылка) И (ПДок.Ссылка В (ВЫБРАТЬ ПЕРВЫЕ 1 ПДокК.Ссылка ИЗ ДокументыСделок КАК ПДокК ГДЕ ПДокК.Ссылка.Сделка = Сделк.Ссылка УПОРЯДОЧИТЬ ПО ПДокК.Ссылка.Дата УБЫВ)) |
|||
18
FIXXXL
05.08.11
✎
09:33
|
(17) а в РН какой-нить у тебя сделка не пишется? Взаиморасчеты к примеру?
и если по докам: про Проведен=Истина не забудь |
|||
19
tciban
05.08.11
✎
09:53
|
Не, проведен тут не важно. Важен факт наличия документ как некая стадия развития сделки. Сделка пишется в регистр всяко, в регистр накопления "Баланс сделки" оттуда тоже для отчета достаю инфу, с этим без проблем. Проблема только в этом запросе - пеприемлимо долго работает. Я уж склоняюсь к созданию регистра сведений для запоминания последнего документа по сделке, останавливает только то, что как то глупо городить регистр ради одного отчета.
|
|||
20
tciban
05.08.11
✎
09:53
|
Время выполнения 11 минут 23 сек. :(
|
|||
21
FIXXXL
05.08.11
✎
13:14
|
(19) может тебе в сторону бизнес-процессов глянуть?
|
|||
22
tciban
05.08.11
✎
16:44
|
В сторону бизнес процессов гляжу давно, но в данном случае мне нужно написать отчет, а бизнес процесс как поможет - не совсем понимаю :)
|
|||
23
FIXXXL
06.08.11
✎
17:09
|
(22) БП, ну в будущем :)
ты пойми, 1С заточено на регистры, на документы не заточено |
|||
24
Икогнито
06.08.11
✎
17:17
|
(0) Земля круглая.
Когда-то очень давно в каком-то франче мне дали тестовое задание: напишите универсальный запрос, работающий на любой конфигурации, осуществляющий выборку всех подчиненных документов документу, переданному в параметре запроса. Параметр у запроса должен быть только один. Текст запроса в процедуре не должен формироваться с помощью средств встроеного языка системы. До сих пор не знаю как это сделать. |
|||
25
Икогнито
06.08.11
✎
17:21
|
+(24) сказал, что это из разряда "анриал" и ушел, чувствуя себя неудачником :(
|
|||
26
Господин ПЖ
06.08.11
✎
21:04
|
(24) судя по всему - через критерий отбора... но это перечеркивает "любой конфигурации"
|
|||
27
tciban
06.08.11
✎
21:16
|
(26) нереально, т.к. у в типовых и то запрос формируется с помощью средств языка и (в некоторых конфах) с использованием критерия отбора.
|
|||
28
tciban
08.08.11
✎
10:38
|
Up-ну как я тему, вдрук какой гуру скажет что-то ценное и полезное.
|
|||
29
tciban
17.08.11
✎
14:12
|
Кстати, наилучшим по скорости решением проблемы оказалось использование в запросе внешней функции.
Если кому интересно: на моей базе получение последнего документа запросом в СКД - 16 сек., с использованием набора данных-объекта (заранее заполненная с помощью критерия отбора таблица) в СКД - 7 сек., вызов в СКД внешней функции в вычисляемом поле (последний документ получаем опять же с использованием критерия отбора) - 3 сек. |
|||
30
dimoff
17.08.11
✎
14:15
|
(19) "Я уж склоняюсь к созданию регистра сведений для запоминания последнего документа по сделке, останавливает только то, что как то глупо городить регистр ради одного отчета."
Зависит от того как часто отчетом пользуются |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |