Имя: Пароль:
1C
1C 7.7
v7: Получить документ в запросе
0 Absurdus
 
10.09.14
10:22
Есть номенклатура, у нее в подчинении спраочнк партий. У партий есть реквизит Приходный документ. Надо получить его дату (или хотя бы сам документ)
Делаю:
SELECT  
M.CODE as CODE,
M.DESCR as DESCR,
P.SP216 as PARTIA,
Жур.IDDOC as DOCUM
FROM       dbo.SC84 M (nolock)
LEFT JOIN dbo.SC214 As P (nolock) ON (P.PARENTEXT=M.ID)
LEFT JOIN dbo._1SJourn as Жур (nolock) on (Жур.IDDOC = P.SP216)
WHERE
M.IsFolder = 2
GROUP BY M.CODE, M.DESCR, MP.DESCR, P.SP216, Жур.IDDoc

В итоге партию подцепляются, а реквизит приходный документ нет. Пустые значения. Хотя он существует. Где не так написал?
1 VladZ
 
10.09.14
10:23
(0) Извращенец. А чем 1С++ не устроил?
2 Chameleon1980
 
10.09.14
10:25
(1) :)
(0) кажется с таблицей журнала доков связать и оттуда получить дату
3 Ёпрст
 
10.09.14
10:25
(Жур.IDDOC = P.SP216)

тут ошибка
4 Absurdus
 
10.09.14
10:25
Запрос из одной базы к таблицам другой
5 Ёпрст
 
10.09.14
10:26
делай так, хотя бы
(Жур.IDDOC = right(P.SP216,9)
6 Ёпрст
 
10.09.14
10:26
(4) 1cpp позволяет это делать в одном запросе, вплоть до типизации
7 Ёпрст
 
10.09.14
10:27
и метапарсер задействовать с разных баз.
8 User_Agronom
 
10.09.14
10:29
(4) Через COM-соединение не проще было бы?
9 Absurdus
 
10.09.14
10:34
(5) Работает, спасибо!
    А если подскажешь, как дату именно последней партии  
    получить, то вообще цены тебе не будет!
10 Ёпрст
 
10.09.14
10:35
(9) взять максимум по дате в подзапросе, потом соединение с ним для получения партии
11 Absurdus
 
10.09.14
10:36
(10) максимум по дате - это какая функция? Я не силен в этом всем
12 Ёпрст
 
10.09.14
10:38
в подзапросе будет select max(ж.date_time_iddoc),p.id
from dbo.SC214 p (nolock) left join dbo._1SJourn as ж(nolock) on ж.IDDOC = right(P.SP216,9) group by p.id
13 Ёпрст
 
10.09.14
10:39
ну и в основном запросе внутреннее соединение с этой табличкой
по id партии и позиции дока. Усё.
14 Absurdus
 
10.09.14
11:03
SELECT  
M.CODE as CODE,
M.DESCR as DESCR,
PZ.D as DATAPART
FROM       dbo.SC84 M (nolock)
INNER JOIN
     (select max(left(ж.date_time_iddoc,8)) as D,p.id as id, p.parentext as papa
      from dbo.SC214 p (nolock)
        left join dbo._1SJourn as ж(nolock) on ж.IDDOC = right(P.SP216,9)
      group by p.id, p.parentext) as PZ ON (PZ.PAPA = M.ID)
WHERE
M.IsFolder = 2
GROUP BY SM.CODE, M.DESCR, MP.DESCR, PZ.D

Получается таблицы номенклатуры и всех ее партий все равно
15 Ёпрст
 
10.09.14
11:17
INNER JOIN
     (select max(left(ж.date_time_iddoc,8)) as D, p.parentext as papa
      from dbo.SC214 p (nolock)
        left join dbo._1SJourn as ж(nolock) on ж.IDDOC = right(P.SP216,9)
      group by  p.parentext) as PZ ON (PZ.PAPA = M.ID)
16 Absurdus
 
10.09.14
11:41
(15) Всё работает как часы, спасибо!