1. Amber 08.05.09 10:33 Сейчас в теме

Получение даты из числа в запросе

У меня в регистре сведений есть измерении "Время", указывается оно в секундах(разница между временем создания и проведения документа). В запросе соответвенно я тоже получаю это время в секундах. подскажите как можно вывести это число в удобном для пользователя виде т.е <ЧЧЧ:ММ:СС>. Функция ПриВыводеСтроки в данном случае не удобна т.к выведение этого измерения в табличное поле можно отключить или расположить в другом месте(отчет делается через построитель и как следвие достаточно гибок)
Заранее спасибо!
Ответы
Избранное Подписка Сортировка: Древо
2. Anything 82 08.05.09 11:35 Сейчас в теме
(1) Могу только предложить вариант, как привести Ваше время в секундах к дате:

ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(&ПустаяДата, СЕКУНДА, &Время) КАК ВремяДатой


где &ПустаяДата - это параметр с датой '00010101', а &Время - это Ваше числовое поле с временем в секундах.

Из этого можно получить отдельными полями часы, минуты и секунды:

ВЫБРАТЬ
	ЧАС(ДОБАВИТЬКДАТЕ(&ПустаяДата, СЕКУНДА, &Время)) КАК Часов,
	МИНУТА(ДОБАВИТЬКДАТЕ(&ПустаяДата, СЕКУНДА, &Время)) КАК Минут,
	СЕКУНДА(ДОБАВИТЬКДАТЕ(&ПустаяДата, СЕКУНДА, &Время)) КАК Секунд


Можно даже преобразовать их в строки методом ПРЕДСТАВЛЕНИЕ(), но сложить их, к сожалению, не получится.
3. Amber 08.05.09 12:00 Сейчас в теме
(2)"Время" у меня это измерение регистра так что тут проще- за сложение у меня отвечает Итог. Думаю там тоже сделать "ДОБАВИТЬКДАТЕ(&ПустаяДата, СЕКУНДА, Время)". Вопрос в том как прибразовать Итоги к виду ЧЧЧ:мм:СС, так как "сумма часов" будет больше 100 и яфвно больше 24(т.е подразумевается что в отчете не выдаются дни а выдаются часы работы пользователя)
4. Anything 82 08.05.09 12:08 Сейчас в теме
(3) Вариант, если это будут 3 отдельных колонки, не подходит?
9. Anything 82 08.05.09 12:40 Сейчас в теме
В развитие варианта (2). Можно попробовать преобразовать числа к строке в запросе.

Правда, запрос использует временные таблицы, но их всегда можно переделать на вложенные запросы.

ВЫБРАТЬ	0 КАК Цифра, "0" КАК ЦифраСтрокой
ПОМЕСТИТЬ Цифры
ОБЪЕДИНИТЬ
ВЫБРАТЬ	1, "1"
ОБЪЕДИНИТЬ
ВЫБРАТЬ	2, "3"
ОБЪЕДИНИТЬ
ВЫБРАТЬ	3, "3"
ОБЪЕДИНИТЬ
ВЫБРАТЬ	4, "4"
ОБЪЕДИНИТЬ
ВЫБРАТЬ	5, "5"
ОБЪЕДИНИТЬ
ВЫБРАТЬ	6, "6"
ОБЪЕДИНИТЬ
ВЫБРАТЬ	7, "7"
ОБЪЕДИНИТЬ
ВЫБРАТЬ	8, "8"
ОБЪЕДИНИТЬ
ВЫБРАТЬ	9, "9";

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Тысячи.Цифра * 1000 + Сотни.Цифра * 100 + Десятки.Цифра * 10 + Единицы.Цифра КАК Число,
	Тысячи.ЦифраСтрокой + Сотни.ЦифраСтрокой + Десятки.ЦифраСтрокой + Единицы.ЦифраСтрокой КАК ЧислоСтрокой
ПОМЕСТИТЬ ЧислаСтрокой
ИЗ
	Цифры КАК Тысячи,
	Цифры КАК Сотни,
	Цифры КАК Десятки,
	Цифры КАК Единицы;
	
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
   ЧАС(ДОБАВИТЬКДАТЕ(&ПустаяДата, СЕКУНДА, &Время)) КАК Часов,
   МИНУТА(ДОБАВИТЬКДАТЕ(&ПустаяДата, СЕКУНДА, &Время)) КАК Минут,
   СЕКУНДА(ДОБАВИТЬКДАТЕ(&ПустаяДата, СЕКУНДА, &Время)) КАК Секунд
ПОМЕСТИТЬ ДатаЧислами;
   
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ПОДСТРОКА(Ч.ЧислоСтрокой, 3, 2) + ":" + ПОДСТРОКА(М.ЧислоСтрокой, 3, 2) + ":" + ПОДСТРОКА(С.ЧислоСтрокой, 3, 2) КАК ВремяСтрокой
ИЗ
	ДатаЧислами КАК ДатаЧислами
		ЛЕВОЕ СОЕДИНЕНИЕ ЧислаСтрокой КАК Ч
		ПО ДатаЧислами.Часов = Ч.Число
		ЛЕВОЕ СОЕДИНЕНИЕ ЧислаСтрокой КАК М
		ПО ДатаЧислами.Минут = М.Число
		ЛЕВОЕ СОЕДИНЕНИЕ ЧислаСтрокой КАК С
		ПО ДатаЧислами.Секунд = С.Число
Показать
6. new_creation 08.05.09 12:27 Сейчас в теме
(1), (3) - у Вас правильно написано ЧЧЧ:мм:СС? Может ЧЧ:мм:СС?
7. Anything 82 08.05.09 12:28 Сейчас в теме
(6) Если делать через построитель, то можно ячейкам назначить формат "ДФ=чч:мм:сс", но только при фиксированном макете.

Т. е. нельзя будет менять местами строки и колонки, а также добавлять новые группировки.
8. Amber 08.05.09 12:40 Сейчас в теме
(6) в сабже (3) написано почему формат ЧЧЧ:мм:сс...Повторюсь..Складываются n чисел. Далее подразумевается такое преобразование(у меня так сделано в ФормеСписка)
часы=Цел(Вр/3600); //ВР= время1- время2
Минуты=Цел((Вр-часы*3600)/60);
Секунды=Цел(Вр-Часы*3600-Минуты*60);
ВремяВыполнения=Дата("00010101"+часы+Минуты+Секунды);

И пользователь видит "Сколько часов, минут, секунд" он работал. Все построено на допущении того что "ВР" не может быть болше 24 часасов и все игры с дальнейшим форматом даты тогда проходят. Но как быть с Итогами, где часов больше 100?
5. Amber 08.05.09 12:13 Сейчас в теме
Лучше в одну "Время работы". Посоветуйте как в Итогах сделать отображение в нужном мне виде?
10. new_creation 08.05.09 12:59 Сейчас в теме
Amber пишет:
...
Но как быть с Итогами, где часов больше 100?

Тогда может быть и больше тысячи.
Больше или не больше тысячи, важно то, что это нестандартное представление даты. Поэтому и методы вывода, тоже придется использовать нестандартные. Например: часы, минуты и секунды выводить в разные колонки.
11. Amber 08.05.09 13:08 Сейчас в теме
Больше или не больше тысячи, важно то, что это нестандартное представление даты

Да я бы даже сказал не представление даты, а получение строки вида "ЧЧ(Ч):cc:ММ" из числа(сумма секунд) в запросе.
12. new_creation 08.05.09 13:47 Сейчас в теме
Amber пишет:
... в запросе.

Amber, извините, это за пределами моих знаний.
Могу лишь предложить вариант вывода шапки, чтоб было понятней пользователю:
|___ВРЕМЯ___|
|ЧЧ(Ч)|ММ|CС|
---------------
... Данные
---------------
|ЧЧ(Ч)|ММ|CС| ИТОГ
13. Amber 08.05.09 14:16 Сейчас в теме
Anything помог очень сильно. в запросах я пока не силен, поэтому сижу разбираюсь как он работает чтобы в свой встроить. Огромное спасибо!
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Консультант по 1С:Документооборот
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист по 1С:Бухгалтерии
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист по 1С:ЗУП
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 100 000 руб. до 150 000 руб.
Полный день