Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как получить время из поля TIME журнала (ДБФ) ? (число прочтений - 7687 )
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Как получить время из поля TIME журнала (ДБФ) ?
31. Мая 2007 :: 10:14
Печать  
Собственно сабж.
Время возвращается в виде - Сhar 6,  например "86UA74",
а как получить стандартное представление?

Имеется ввиду в запросе, не используя построчного пересчета ТЗ.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить время из поля TIME журнала (ДБФ)
Ответ #1 - 31. Мая 2007 :: 10:35
Печать  
Цитата:
Время может храниться в двух форматах: Числовое представление, Строковое представление.
В случае числового хранения времени отсчитывается от начала суток в десятиcячных долях секунды. Т.е. фактически будет получено число: (Часы*3600+Минуты*60+секунды)*10000. Т.е. Для времени 19:05:36 – 687360000 (1С умеет учитывать время до 1000 долей секунды, как в случае с документами).
В случае числовго хранения времени время с числового значения (Часы*3600+Минуты*60+секунды)*10000 переводиться в 36-ричный формат. Так для времени 19:05:36 - BD8IDC.
  
Наверх
 
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить время из поля TIME журнала (ДБФ)
Ответ #2 - 13. Июня 2007 :: 07:05
Печать  
Текст хранимой процедуры TimeAsStr.prg:
Код
Выбрать все
PARAMETERS t
timeint=to10(t)/10000

sek=MOD(timeint,60)
timemin=INT(timeint/60)
min=MOD(timemin,60)
hour=INT(timemin/60)
2)
RETURN timestr

FUNCTION to10
LPARAMETERS s
    rez=0
    FOR i=1 TO 6
	  curchar=SUBSTR(s,7-i,1)
	  val=ATC(curchar,'123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0')
	    IF val=36 THEN
		 val=0
	    ENDIF
	  rez=rez+val*(36**(i-1))
    ENDFOR
    RETURN rez
ENDFUNCTION

 


Файл с текстом процедуры нужно разместить в каталоге ИБ

Использование в запросе:
Код
Выбрать все
SELECT TimeAsStr(j.time) as Время FROM 1sjourn as j
 

  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Как получить время из поля TIME журнала (ДБФ)
Ответ #3 - 13. Июня 2007 :: 09:01
Печать  
Alex_Bob писал(а) 13. Июня 2007 :: 07:05:
Текст хранимой процедуры TimeAsStr.prg: ...


Большое спасибо Улыбка
А то приходилось в цикле пересчитывать.

В идеале бы -
Код
Выбрать все
|	    Жур.TIME as [ВремяСтр as $Время]
 

Улыбка

  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Как получить время из поля TIME журнала (ДБФ)
Ответ #4 - 11. Июля 2007 :: 07:06
Печать  
По поводу TimeAsStr

А вот такой проблемы не было ? (OLEDB естественно)

Код
Выбрать все
 FAILED! ICommandText::Execute(): Variable 'CURCHAR' is not found.
 

  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Как получить время из поля TIME журнала (ДБФ)
Ответ #5 - 11. Июля 2007 :: 07:45
Печать  
lustin писал(а) 11. Июля 2007 :: 07:06:
По поводу TimeAsStr

А вот такой проблемы не было ? (OLEDB естественно)

Код
Выбрать все
 FAILED! ICommandText::Execute(): Variable 'CURCHAR' is not found.
 



Я файлы prg открываю Fox ом (есть на любом рынке) - сразу виден подсвеченный синтаксис,
ошибки соответственно и встроенная справка по функциям (можно выделить слово и нажать F1).
Вообщем Fox для ДБФ то же, что и SQL Server для 1С SQL.

В приведенном примере
в конце строки вместо "ENDFUNCTION" нужно "ENDFUNC"
« Последняя редакция: 11. Июля 2007 :: 09:38 - kiruha »  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать