|
v7: 1с++ получение ссылки документа вместо IDDOC + IDDOCDEF | ☑ | ||
---|---|---|---|---|
0
dk
16.02.12
✎
09:41
|
исходные
1с 7.7 SQL 1c++ есть запрос к регистру, хочу получить ссылку на документ движения (регистратор) Джойнюсь к журналу и получаю IDDOC Конструкция жур.iddoc [Ссылка $Документ] возвращает iddoc вместо ссылки Что делать и кто виноват ) |
|||
1
Ёпрст
16.02.12
✎
09:42
|
(0) читать не пробовал хелпы ?
|
|||
2
Ёпрст
16.02.12
✎
09:44
|
Хошь так:
select жур.iddoc [Ссылка $Документ] ,жур.iddocdef Ссылка_вид или так select жур.iddocdef+жур.iddoc [Ссылка $Документ] |
|||
3
Rie
16.02.12
✎
09:45
|
(0) Если документ неопределённого вида - нужен ещё IDDOCDEF для типизации.
|
|||
4
dk
16.02.12
✎
09:50
|
читать хелп по 1с++ это капец какой-то
|
|||
5
dk
16.02.12
✎
09:52
|
>жур.iddocdef+жур.iddoc [Ссылка $Документ]
консолька матерится |
|||
6
dk
16.02.12
✎
09:52
|
>жур.iddoc [Ссылка $Документ]
,жур.iddocdef Ссылка_вид работает, но лишняя колонка добавляется |
|||
7
dk
16.02.12
✎
09:53
|
в общем спасибо
|
|||
8
Гефест
16.02.12
✎
09:53
|
(5) Тем не менее, капец необходим
|
|||
9
Ёпрст
16.02.12
✎
09:55
|
(5) не верю.
|
|||
10
dk
16.02.12
✎
09:57
|
(9) qryConsole : State 22018, native 245, message [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value ' 3JO0KRAD' to a column of data type int.
|
|||
11
dk
16.02.12
✎
09:58
|
, Затраты.ЖурналДокумент_вид + Затраты.ЖурналДокумент [ЖурналДокумент1 $Документ]
|
|||
12
Mikeware
16.02.12
✎
10:02
|
(11)
[dbo].Convert10To36(Затраты.ЖурналДокумент_вид) + Затраты.ЖурналДокумент [ЖурналДокумент1 $Документ] |
|||
13
dk
16.02.12
✎
10:06
|
Invalid object name 'dbo.Convert10To36'.
|
|||
14
Mikeware
16.02.12
✎
10:10
|
(13)
CREATE FUNCTION Convert10To36(@Val_10 int) Returns char(4) Begin DECLARE @j int, @nSpaces int, @Res36 char(4) DECLARE @Arr36 CHAR(36) SELECT @Arr36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' SELECT @Res36 = '' SELECT @j = LOG(@Val_10) / LOG(36) + 1 SET @nSpaces = 4 - @j while @j>0 begin SELECT @Res36 = LTRIM(RTRIM(@Res36)) + SUBSTRING(@Arr36, @Val_10/POWER(36,@j-1) + 1 ,1) SELECT @Val_10 = @Val_10 % POWER(36, @j-1) SELECT @j = @j - 1 end SET @Res36 = Left(' ', @nSpaces) + Rtrim(@Res36) Return @Res36 End |
|||
15
trad
16.02.12
✎
10:10
|
(9) стареешь
|
|||
16
dk
16.02.12
✎
10:11
|
а обратная есть?
|
|||
17
Кириллка
16.02.12
✎
10:11
|
(9)Так:
iddocdef - int; iddoc - char(9); У него же скуль, а не дбф. |
|||
18
trad
16.02.12
✎
10:12
|
самый кошерный вариант с Ссылка_вид
а если колонка бесит, то ее можно грохнуть после получения результата |
|||
19
Mikeware
16.02.12
✎
10:13
|
(16)
CREATE FUNCTION Convert36To10(@Val_36 varchar(9)) Returns int Begin DECLARE @j int, @len int, @Val_10 int DECLARE @Arr36 char(36) SET @Arr36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' SET @Val_10 = 0 SET @j = 1 SET @Val_36 = LTrim(RTrim(@Val_36)) SET @len = Len(@Val_36) while @j <= @len begin if @j <> 1 SET @Val_10 = @Val_10 * 36 SET @Val_10 = @Val_10 + CharIndex(Substring(@Val_36, @j ,1), @Arr36) - 1 SET @j = @j+1 end Return @Val_10 End |
|||
20
Ёпрст
16.02.12
✎
10:13
|
Ёююю
ltrim(Жур.iddocdef)+Жур.iddoc [d $Документ] |
|||
21
Ёпрст
16.02.12
✎
10:14
|
(18) неа..
:)) |
|||
22
dk
16.02.12
✎
10:14
|
(19) спб
пригодится в хозяйстве |
|||
23
Ёпрст
16.02.12
✎
10:14
|
(15) не.. просто с дбф путаю, хотя в скуле тоже работает.. как в (20)
|
|||
24
Ёпрст
16.02.12
✎
10:15
|
(12) слишком сложно..и не нужно :)
|
|||
25
dk
16.02.12
✎
10:19
|
(20) торопишься
а проверить? ) |
|||
26
Ёпрст
16.02.12
✎
10:20
|
(25) не сцы, усё работает
|
|||
27
dk
16.02.12
✎
10:24
|
(26) стареешь или шибко самоуверен стал, вертай Ёпрст3 обратно )
qryConsole : Error # 5 : 0 : Invalid procedure call or argument |
|||
28
Кириллка
16.02.12
✎
10:24
|
(20)нуда, только поправил :)
RIGHT(' ' + CAST(Жур.iddocdef as varchar(4)), 4) + Жур.iddoc [d $Документ] |
|||
29
Ёпрст
16.02.12
✎
10:30
|
(27) не знаю, какая у тебя версия 1cpp и скуля, но на 2008 sql всё работает и так
|
|||
30
Mikeware
16.02.12
✎
10:32
|
(28) анихуа!
(29) 3.2.3.16, на 2000 - не работает |
|||
31
Ёпрст
16.02.12
✎
10:34
|
||||
32
Ёпрст
16.02.12
✎
10:35
|
(30) :)
хз, 2000 нема проверить |
|||
33
Ёпрст
16.02.12
✎
10:36
|
1cpp 3.2.2.5
|
|||
34
Кириллка
16.02.12
✎
10:36
|
(30)Пробуй, все работает.
select top 100 RIGHT(' ' + CAST(Жур.iddocdef as varchar(4)), 4) + Жур.iddoc as [Док $Документ] from _1sjourn as Жур |
|||
35
Ёпрст
16.02.12
✎
10:37
|
+33 как видишь, вк более древней версии
:) |
|||
36
Ёпрст
16.02.12
✎
10:37
|
(34) а как в (20) у тебя работает ?
|
|||
37
Кириллка
16.02.12
✎
10:39
|
так, отбой. там же в первых 4-х символах идентификатор 36-ный. iddocdef конверить же надо. Короче, все обазрались :)
|
|||
38
trad
16.02.12
✎
10:41
|
ёпрст, ты точно стареешь, маразмом начинает веять :)
iddocdef - в sql в десятичной системе а для типизации из char13 вид должен быть в 36-ричной системе всякие касты iddocdef в char будет работать ровно до 9 |
|||
39
Кириллка
16.02.12
✎
10:41
|
мажусь: я делаю только через _kind/_вид, в эту терку вписался неподумав :)
|
|||
40
trad
16.02.12
✎
10:43
|
и я утверждаю, что _kind/_вид - наш выбор
|
|||
41
Ёпрст
16.02.12
✎
10:43
|
(38) возможно, как прокомментируешь (31) ?
|
|||
42
trad
16.02.12
✎
10:50
|
(41) обман зрения
аналогично у тебя и select '1234'+iddoc [d $Документ] from _1sjourn j отработает |
|||
43
Ёпрст
16.02.12
✎
10:51
|
(42) лукавишь.. при тыркании на табличке - документ открывается
|
|||
44
Mikeware
16.02.12
✎
10:52
|
(41) А он так, как нужно, отрабатывает?
|
|||
45
Ёпрст
16.02.12
✎
10:53
|
(42) шаман, отработало аналогично..
:) |
|||
46
Ёпрст
16.02.12
✎
10:53
|
(44) в принципе, да, при тыркании , спрашивает вид документа и если "угадал" - открывает его, иначе, болт.
|
|||
47
trad
16.02.12
✎
10:55
|
на выходе после '1234'+iddoc [d $Документ]
будет объект - документ ссылка, но с кривыми внутренними данными |
|||
48
trad
16.02.12
✎
10:57
|
просто для получения представления ссылки используется только iddoc и только по нему делается разыменование
|
|||
49
Ёпрст
16.02.12
✎
11:06
|
(48) ну в общем ясно..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |