|
v7: 1С++ и подчиненные документы | ☑ | ||
---|---|---|---|---|
0
ado
13.10.11
✎
16:15
|
Вот такой вопрос. В какой табличке хранятся сведения об отношении подчиненности документов?
Мне нужно выбрать все документы определенного видя не подчиненные ни одному из документов другого определенного вида. Скажем, выбрать все платежные поручения не принадлежащие никакой выписке. Понимаю, что можно через реквизиты, но мне кажется, это будет не самым производительным вариантом. |
|||
1
Mikeware
13.10.11
✎
16:17
|
1scrdoc
|
|||
2
Mikeware
13.10.11
✎
16:21
|
SQL?
|
|||
3
ado
13.10.11
✎
16:24
|
(2) Ага. Нашел описание, втыкаю структуру.
|
|||
4
ado
13.10.11
✎
21:31
|
Всё, получилось.
|
|||
5
ДенисЧ
13.10.11
✎
21:42
|
ламер :-)
|
|||
6
Explorer1c
13.10.11
✎
21:49
|
так-так
|
|||
7
ado
17.10.11
✎
17:42
|
(6) А вот и нет, это мне показалось, а нифига не получилось на самом деле. Что-то я никак не въеду. Я правильно понимаю, что ИД подчиненного документа должен быть в _1SCRDOC.CHILDID , ИД документа, которому он подчинен -- в _1SCRDOC.PARENTVAL и при этом _1SCRDOC.MDID должен быть равен нулю?
|
|||
8
Ёпрст
17.10.11
✎
17:48
|
(7) тип того
http://www.script-coding.com/v77tables.html#1.2.3. |
|||
9
Ёпрст
17.10.11
✎
17:49
|
только учти, там не iddoc, там полный тип объекта.
|
|||
10
ado
17.10.11
✎
17:51
|
(9) Тьфу, ля. Вот тут и грабли.
|
|||
11
Ёпрст
17.10.11
✎
17:52
|
(10) да не там никаких граблей, либо субстринг либо достраивать до полного типа объекта (что лучше)
|
|||
12
ado
17.10.11
✎
17:56
|
(11) Можно еще один глупый вопрос? А как полный ИД получить?
|
|||
13
Ёпрст
17.10.11
✎
17:58
|
(12) если передать в качестве параметра, то
парам = мд.ЗначениеВСамуюДлиннуюСтрокуБД(Док.ТекущийДокумент); если в самом запросе, то прибавить тип объекта+вид объекта + iddoc |
|||
14
ado
17.10.11
✎
18:01
|
(13) Вот как раз интересует как получить тип объекта+вид объекта
|
|||
15
leshikkam
17.10.11
✎
18:03
|
(14) соединяться с _1sjourn
|
|||
16
Ёпрст
17.10.11
✎
18:03
|
(14)
например так: join .....on Отборчик.Parentval = 'O1'+$ВидДокумента36.Реализация+Док.IDDOC |
|||
17
ado
17.10.11
✎
18:20
|
(16) Спасибо, вроде, получилось. В итоге имеем примерно такой запрос:
|
|||
18
ado
17.10.11
✎
18:23
|
+(17) Нигде фигни не спорол?
|
|||
19
Ёпрст
17.10.11
✎
18:29
|
на счет проверки на нул не уверен - там будет $ПустойИД , в 1с нет нулл значений в полях.
|
|||
20
ado
17.10.11
✎
18:32
|
(19) Ващет при отсутствии в правой таблице записей, удовлетворяющих условию левого соединения в соответствующих полях результата запроса будут нуллы, и пофиг, что там бывает или не бывает у 1С ;-)
|
|||
21
КонецЦикла
17.10.11
✎
18:40
|
(20) +1
Текст ниасилел, но вот это 'O1'+$ВидДокумента36.ПлатежноеПо... можно заменить модификатором |
|||
22
Ёпрст
17.10.11
✎
18:44
|
(21) каким ? он же не параметр устанавливает, це же условие присоединения.
|
|||
23
ado
17.10.11
✎
19:15
|
А все таки спорол. Этим запросом я получаю платежные поручения, которые вообще подчиненных не имеют, в не только выписок.
|
|||
24
Кириллка
17.10.11
✎
19:26
|
(17)
1. фигня какая-то; 2. ты случаем NullIf не спутал с ISNULL; 3. в таком запросе NULL'ов не будет вообще ни когда; 4. за азбуку - изучать предметную часть :) |
|||
25
КонецЦикла
17.10.11
✎
19:43
|
(22) Обсыпаюсь пеплом, говорю же не сморел текст :)
|
|||
26
trad
17.10.11
✎
22:22
|
пишу на коленке без проверки
|SELECT | Журнал.DOCNO AS Документ_ном | , Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) AS Документ_дата | , $ПлатежноеПоручение.Сумма AS Расход |FROM $Документ.ПлатежноеПоручение AS ПлатежноеПоручение With (NOLOCK) | INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON ПлатежноеПоручение.IDDOC = Журнал.IDDOC | | LEFT JOIN _1SCRDOC AS Подчиненность | INNER JOIN _1SJOURN AS ЕщеЖурнал | on ЕщеЖурнал.date_time_iddoc = Подчиненность.child_date_time_iddoc | and ЕщеЖурнал.iddocdef = $ВидДокумента.Выписка | ON Подчиненность.mdid = 0 | AND Подчиненность.PARENTVAL = 'O1'+$ВидДокумента36.ПлатежноеПоручение+ПлатежноеПоручение.IDDOC | |WHERE | ((Журнал.ISMARK & 1) = 0) AND | (Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) AND | (Журнал.iddocdef = $ВидДокумента.ПлатежноеПоручение) AND --это для попадания в индекс | (Подчиненность.PARENTVAL IS NULL) -- не CHILDID, т.к. лучше не дергать поля не входящие в индекс | -- в итоге работаем в рамках одного индекса _1SCRDOC не обращаясь к основной таблице | -- _1SJOURN AS ЕщеЖурнал - тут тоже в рамках одного индекса не обращаясь к основной таблице | |ORDER BY Документ_дата |"; как то так. |
|||
27
trad
17.10.11
✎
22:24
|
(26)
время поста дважды символично :)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |