Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) форматирование отображения данных в ТП (число прочтений - 5617 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: форматирование отображения данных в ТП
Ответ #15 - 19. Октября 2008 :: 17:25
Печать  
berezdetsky писал(а) 19. Октября 2008 :: 10:42:
С пивом потянет?  Улыбка

О, а ить достойный вариант.

Мне-то для ТП надо было, там пойдет только в путь.
Сам формат у меня один в один; только до типизациии классом я не дошел, ограничился форматированием данных в ПриВыводеСтроки.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: форматирование отображения данных в ТП
Ответ #16 - 20. Октября 2008 :: 04:54
Печать  
В общем, пишите в багзиллу хотелку по такой типизации.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
KonstSV
Junior Member
**
Отсутствует



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: форматирование отображения данных в ТП
Ответ #17 - 22. Октября 2008 :: 08:46
Печать  
Может кому понадобится :

Код
Выбрать все
ALTER FUNCTION [dbo].[Из36в10](@Строка36 Varchar(6))
	RETURNS Int
AS
BEGIN
	DECLARE @Число Int, @c Int
	SELECT @Число=0, @c=0
	SET @Строка36 = UPPER(LTRIM(RTRIM(@Строка36)))
	WHILE @Строка36 <> ''
		SELECT
			@c = ASCII(left(@Строка36 ,1)),
			@Число = (CASE WHEN @c > 57 THEN @c-55 ELSE @c-48 END)*POWER(36, LEN(@Строка36)-1)+@Число,
			@Строка36 = right(@Строка36, len(@Строка36)-1)
	RETURN @Число
END
 



Код
Выбрать все
ALTER FUNCTION [dbo].[Из10в36](@Число10 Int)
	RETURNS Char(6)
AS
BEGIN
	DECLARE @Число  Int
	DECLARE @Строка Char(6)
	SET @Число  = cast(@Число10 as int)
	SET @Строка = ''
	WHILE @Число > 0
		SELECT @Строка = CHAR(CASE WHEN @Число%36 < 10 THEN @Число%36 + ascii('0') ELSE @Число%36 + ascii('A') - 10 END) + @Строка, @Число = @Число/36
	RETURN RIGHT('	'+RTRIM(@Строка), 6)
END
 


Код
Выбрать все
ALTER FUNCTION [dbo].[Документ_ПолучитьВремя] (@Документ Char(23))
	RETURNS Char(8)
AS
BEGIN
	DECLARE @IDDOC Char(9)
	DECLARE @Документ_Время Char(8)
	DECLARE @Время36 Varchar(6)
	DECLARE @Время10 Int
	DECLARE @ВсегоСекунд Int
	DECLARE @ВсегоМинут Int
	DECLARE @Часы Int
	DECLARE @Минуты Int
	DECLARE @Секунды Int

	IF LEN(@Документ) > 9
		SET @IDDOC = RIGHT(@Документ, 9)
	ELSE
		SET @IDDOC = LEFT(@Документ, 9)

	SELECT
		@Время36 = SUBSTRING(Журнал.DATE_TIME_IDDOC,9,6)
	FROM
		dbo._1SJOURN as Журнал WITH (NOLOCK)
	WHERE
		Журнал.IDDOC = @IDDOC

	SELECT @Время10	= dbo.Из36в10(@Время36)
	SELECT @ВсегоСекунд  = CEILING(@Время10/10000)
	SELECT @ВсегоМинут   = CEILING(@ВсегоСекунд/60)
	SELECT @Секунды	= @ВсегоСекунд-@ВсегоМинут*60
	SELECT @Часы	   = CEILING(@ВсегоМинут/60)
	SELECT @Минуты	 = @ВсегоМинут-@Часы*60

	SELECT @Документ_Время = RIGHT('00'+LTRIM(STR(@Часы)), 2)+':'+RIGHT('00'+LTRIM(STR(@Минуты)), 2)+':'+RIGHT('00'+LTRIM(STR(@Секунды)), 2)

	RETURN (@Документ_Время)
END
 

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать