Имя: Пароль:
1C
1C 7.7
v7: ссылка на документ неопределенного типа (прямые запросы)
,
0 pavlik
 
07.10.12
19:39
Интересно, а как камарады решают такой трабл:
типом реквизита табличной части какого-либо документа является "Документ". В DH*.SP* хранится nvarchar(какого-то размера) e.g. ' 3BA GASJK1SB1'. Необходимо приджойнить DOCNO этого документа из _1SJOURN. Ничего, кроме
....   dbo.dhsomefuck h inner join dbo._1sjourn jj on  jj.iddoc=right(h.spREFFIELD,9)
не придумал.
PS. Конфига тяжелая и самописная, пределывать низзя.
1 zladenuw
 
07.10.12
20:14
может так. но тут пример по товару
ТекстЗапроса = "
|SELECT
|    $ДокС.Товар as [Товар $Справочник.Товары],
|    SUM($ДокС.Количество) as Количество
|FROM
|    $ДокументСтроки.Реализация as ДокС
|INNER JOIN
|    $Документ.Реализация as Док ON Док.IDDoc = ДокС.IDDoc AND
|                                 $Док.Склад = :ВыбСклад
|INNER JOIN
|    1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc
|                       Жур.Date BETWEEN :НачДата~~ AND :КонДата~~ AND
|                       Жур.Closed = 1
|GROUP BY
|    $ДокС.Товар";
2 Salimbek
 
07.10.12
20:45
(0) Варианты бывают разные. Если известен тип документа, то лучше (с использованием 1С++):
SELECT *
FROM $Документ.Какой-то as Док INNER JOIN _1SJOURN as Жур ON $Док.Поле = $ВидДокумента36.ТипДокумента+Жур.IDDOC
3 zladenuw
 
07.10.12
20:54
(2) а если может быть любой документ тогда как ? не 1с++ ?
4 pavlik
 
07.10.12
22:08
"(прямые запросы)" ввели в заблуждение почтенную публику.
Запросы творю не из 1С, напрямую к БД запрашиваю. 1С 7.7 SQL версия. Конфига не моя, повторюсь. Тип документа известен (префикс могу отделять) , но помогает мало.
5 zladenuw
 
07.10.12
22:25
тогда текст запроса показывай. это сразу нужно оговаривать. откуда ходишь
6 orefkov
 
07.10.12
22:32
(0)
Ну, во-первых, там лежит не nvarchar, а во-вторых, твой вариант в большинстве случаев будет самым оптимальным и сервак нисколько не напряжет.
7 pavlik
 
08.10.12
00:11
(5) чего показывать-то? весь вопрос в стремности "inner join ... on  jj.iddoc=right(h.spREFFIELD,9)"
8 ADirks
 
08.10.12
06:48
Какой нафиг nvarchar()? Чё, лень хотя бы типы колонок посмотреть что-ли? Как вы вообще эти запросы пишете, не зная нифига?
А так то да, Right(, 9). Уникальность IDDoc обеспечивается 1С, а идДок13 == ВидДок36 + IDDoc
ВидДок36 - это IDDocDef в 36-ричной системе счисления
9 orefkov
 
08.10.12
09:10
(7)
Нет в этом никакой стремности, работает шустро и нормально.
10 pavlik
 
08.10.12
09:41
(8) - пипец, стоит char(9) с nvarchar() перепутать - уже возбуждаемся. Дофига различий, что сказать.
11 ADirks
 
08.10.12
10:08
(10) char(13) вообще-то
дело не в количестве различий, а странности методологии. Типа, пишем не глядя, а если не работает - запостим на форум.
12 pavlik
 
08.10.12
11:21
(11) в отличии от "спасите-памагите-не работает" я не просил код. char(9) там, char(13), nvarchar(?) - как это на запрос влияет?
13 Светлый Гений
 
08.10.12
11:29
(0)Так и решается
14 Mikeware
 
08.10.12
11:38
(12) напрямую влияет.
Либо запрос работает, либо не работает...
15 ADirks
 
08.10.12
11:51
(12)  Ну а вторую часть моего высказывания ты не воспринял? Я там как раз написал, чем отличается char(9) от char(13)  применительно к документам 1С. А ещё же и справочники есть...
Закон Брукера: Даже маленькая практика стоит большой теории.