|
Типизация ДокументОснование 1с++ | ☑ | ||
---|---|---|---|---|
0
Franchiser
13.11.23
✎
19:13
|
Есть запрос:
SELECT distinct Журнал.docno , $ПартииРНПТСтроки.Артикул Артикул , SubString(Журнал.$ОбщийРеквизит.ДокументОснование,5,9) as [ДокументОснование $Документ] , Журнал.IDDOC as Партия ,IsNull(МПЗ.DESCR,'') as НаименованиеТовара FROM _1SJOURN AS Журнал With (NOLOCK) INNER JOIN $ДокументСтроки.ПартииРНПТ AS ПартииРНПТСтроки With (NOLOCK) ON Журнал.IDDOC = ПартииРНПТСтроки.IDDOC Left JOIN $Справочник.МПЗ as МПЗ (nolock) on $ПартииРНПТСтроки.Артикул = $МПЗ.КодСистемы WHERE Журнал.DATE_TIME_IDDOC Between :ДатаН and :ДатаК~ Нужно в результате запроса вывести типизированное поле ДокументОснование, которое может быть трех типов документа. Что написать в ДокументОснование_вид? |
|||
1
AAA
13.11.23
✎
18:59
|
Журнал.IdDocDef AS [Документ_вид]
Примерно так |
|||
2
FN
13.11.23
✎
19:06
|
В результатах должна быть колонка ДокументОснование_вид, в которой должен быть вид документа в виде числа.
Получить его можно приджойнив еще раз журнал. Ну или попробуй просто SubString(Журнал.$ОбщийРеквизит.ДокументОснование,1,9) - тоже должно подойти. |
|||
3
FN
13.11.23
✎
19:14
|
опечатался, надо SubString(Журнал.$ОбщийРеквизит.ДокументОснование,1,13)
|
|||
4
Franchiser
13.11.23
✎
19:28
|
Пример документа основания:
" 3X L2VEJ " Вид это " 3X", но его нужно как-то преобразовать в десятичный вид, ну или связывать еще раз с журналом через IDDOC и там уже получать IDDOCDEF из Журнала Основания, что не хотелось бы. |
|||
5
Franchiser
13.11.23
✎
19:32
|
Есть какая-то функция в 1с 7.7 которая получить из
"3X" значение "141"? т.е. переведет из 36-чной системы счисления в 10-чную. |
|||
6
Franchiser
13.11.23
✎
19:33
|
(2) про дополнительный джойн журнала способ знаю.
|
|||
7
FN
13.11.23
✎
20:03
|
" 3X L2VEJ " - такая строка 1срр прекрасно типизируется в $Документ
|
|||
8
FN
13.11.23
✎
20:04
|
(5)_StrToId(строка) и _IdToStr(число)
|
|||
9
Franchiser
13.11.23
✎
20:08
|
(8) мне в запросе sql нужно
|
|||
10
FN
13.11.23
✎
20:19
|
(9) ну можно так
create function [dbo].[StrToID](@Res36 char(9)) returns int as begin declare @j int declare @Deci int DECLARE @Arr36 char(36) select @Arr36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' select @Deci = 0 select @j = 1 while @j <= len(ltrim(rtrim(@Res36))) begin if @j <> 1 select @Deci = @Deci*36 select @Deci = @Deci + charindex(substring(ltrim(rtrim(@Res36)), @j,1),@Arr36) -1 select @j = @j+1 end return(@Deci) end GO Но для типизации этого не нужно. У тебя все для типизации |
|||
11
AAA
13.11.23
✎
20:30
|
Написал ерунду, невнимательно прочел (0). Как вариант, если видов основания немного, то можно сделать служебный справочник с видами основания {Код36, Имя} и с ним связать вид основания (первые 4 символа из реквизита запроса)
|
|||
12
AAA
13.11.23
✎
20:45
|
а вообще разве LEFT((Журнал.$ОбщийРеквизит.ДокументОснование,4) это не то что надо? Давненько не писал запросы, но по моему это оно и есть. Им и типизируете
|
|||
13
ADirks
14.11.23
✎
07:01
|
(0) в данном случае можно написать
Журнал.$ОбщийРеквизит.ДокументОснование as [ДокументОснование $Документ] ид13 нормально типизируется как $Документ и без доп.поля с IdDocDef |
|||
14
Franchiser
14.11.23
✎
10:23
|
(12) нет так не типизируется, т.к. там не десятичное значение получается
(13) выдает ошибку, что нет типизирующего поля |
|||
15
Franchiser
14.11.23
✎
10:27
|
Если написать
LEFT((Журнал.$ОбщийРеквизит.ДокументОснование,4) as ДокументОснование_вид то запрос зависает. |
|||
16
ADirks
14.11.23
✎
10:44
|
(14) занятно... а версия 1С++ какая?
у меня 3.2.4.1 и уже даже не вспомню, когда (в каких версиях) последний раз видел ругачку про типизирующее поле. (15) ну так Журнал.IDDocDef as ДокументОснование_вид не надо никаких джойнов и преобразований |
|||
17
Franchiser
14.11.23
✎
11:44
|
Журнал.IDDocDef это вид не основания а текущего документа
|
|||
18
Franchiser
14.11.23
✎
11:47
|
у меня 3.2.4.0
|
|||
19
AAA
14.11.23
✎
12:05
|
Мне кажется, что надо писать не ДокументОснование_Вид. а документ_Вид
но может и ошибаюсь, это вопрос к разработчикам. Но попробуйте |
|||
20
Salimbek
14.11.23
✎
12:07
|
А что выдаст?
select ' 3X L2VEJ ' as [ДокументОснование $Документ] |
|||
21
Salimbek
14.11.23
✎
12:09
|
(19) Не, там должно быть так:
{Документ|Document} Char(13); Char(9) - Идентификатор объекта, кроме того, в наборе данных должна находиться колонка с именем составленным из имени этой колонки и суффикса {_вид|_kind} (чувствительно к регистру), в которой должны содержаться идентификаторы видов документов. Тип колонки SQL: int, DBF: char(4). |
|||
22
Franchiser
14.11.23
✎
12:28
|
(20) ничего без типизирующего поля будет ошибка
|
|||
23
trad
14.11.23
✎
12:33
|
(14) substring убери
ADirks написал как надо |
|||
24
Franchiser
14.11.23
✎
20:10
|
(23) да спасибо. так работает. Надо было сразу выводить ид13 в результат без типизирующего поля.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |