Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Как получить время из журнала документов (число прочтений - 3352 )
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Как получить время из журнала документов
03. Июня 2009 :: 09:05
Печать  
Как получить время из журнала документов?
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Как получить время из журнала документов
Ответ #1 - 03. Июня 2009 :: 10:14
Печать  
Код
Выбрать все
9,6))/10000,cast(left(j.date_time_iddoc,8) as datetime)),120),8) as ВремяДок 

  
Наверх
 
IP записан
 
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Re: Как получить время из журнала документов
Ответ #2 - 03. Июня 2009 :: 10:20
Печать  
Вот это да! Спасибо.
  
Наверх
 
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Как получить время из журнала документов
Ответ #3 - 04. Июня 2009 :: 06:53
Печать  
имхо будет ругаться на Convert36To10
  
Наверх
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Как получить время из журнала документов
Ответ #4 - 04. Июня 2009 :: 07:24
Печать  
да вроде не ругается, а должно?Улыбка
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Как получить время из журнала документов
Ответ #5 - 04. Июня 2009 :: 08:20
Печать  
alexdd писал(а) 04. Июня 2009 :: 07:24:
да вроде не ругается, а должно?Улыбка


dbo.Convert36To10 - Это хранимая Процедура, если не ругается значит она у тебя есть.  Выглядит она примерно так.

Код
Выбрать все
CREATE PROCEDURE [Convert36To10] @Res36 CHAR(9), @Deci INT OUTPUT AS
SET NOCOUNT ON
DECLARE @j 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

 


  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Как получить время из журнала документов
Ответ #6 - 04. Июня 2009 :: 08:28
Печать  
leov-001 писал(а) 04. Июня 2009 :: 08:20:
dbo.Convert36To10 - Это хранимая Процедура, если не ругается значит она у тебя есть.  Выглядит она примерно так.



да я то в курсе, спасибо. Только в коде, который я запостил dbo.Convert36To10 - это функция. На хранимку в селекте действительно будет ругаться
  
Наверх
 
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Как получить время из журнала документов
Ответ #7 - 04. Июня 2009 :: 10:07
Печать  
выполняю
Код
Выбрать все
select top 1
9,6))/10000,cast(left(j.date_time_iddoc,8) as datetime)),120),8) as ВремяДок
from _1sjourn as j
 


получаю
Код
Выбрать все
Invalid object name 'dbo.Convert36To10'. 

  
Наверх
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Как получить время из журнала документов
Ответ #8 - 04. Июня 2009 :: 10:19
Печать  
ээм...колега, ну прочитайте пару постов выше, уже было сказано, что dbo.Convert36To10 - это функция. и уже даже запостили ее кодУлыбка Прошу прощения, что сразу не уточнил это.
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Как получить время из журнала документов
Ответ #9 - 04. Июня 2009 :: 12:34
Печать  
У меня такая Хранимка

Код
Выбрать все
IF object_id('ConvSyst10') is null
exec('CREATE FUNCTION ConvSyst10(@num varchar(99), @syst int)
RETURNS bigint AS
BEGIN
declare @i bigint,@c int
SELECT @i=0,@num = UPPER(@num)
while @num<>'''' select @c=ascii(LEFT(@num,1)),
@i=case when @c>57 then @c-55 else @c-48 end *power(@syst,len(@num)-1) +@i,
@num=right(@num,len(@num)-1)
return @i END')
 



Время в селекте получаю так.
Код
Выбрать все
select
Convert(Varchar,DATEADD(Millisecond, dbo.ConvSyst10(SUBSTRING(Жур.DATE_TIME_IDDOC,9,6), 36)/10, LEFT(Жур.DATE_TIME_IDDOC,8)),8) as Время
from _1sjourn as Жур
 

  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Как получить время из журнала документов
Ответ #10 - 04. Июня 2009 :: 12:39
Печать  
ConvSyst10(Строк(Предсавление времени 1С), СистемаСчисления(36)) --> Десятичнее число
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать