Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:27

как поменять представление времени в отчете?

Автор Yamuna, 12 сен 2019, 10:07

0 Пользователей и 1 гость просматривают эту тему.

Yamuna

добрый день, подскажите кто знает, в какой момент надо пересчитывать время. В документе ведется учет с какого по какое время оказывалась услуга и время записывается как в минутах, так и представлением ,например 1ч 30 мин., и документ проводится по регистру накопления с видом остатки , и для того чтобы в отчете можно было вывести время представлением будет использоваться фукция Функция ОбновитьНадписьВремя() Экспорт
ВремяДляНадписи = УчетРабочегоВремени.Итог("ИтогоОтработано")/60;
ВремяЧасы= Цел(ВремяДляНадписи);
ВремяМинуты = Формат((времяДляНадписи - времяЧасы)*60,"ЧЦ=2; ЧДЦ=0");
ЗаголовокВремяНадписи = "" + ВремяЧасы + " ч " + ВремяМинуты + " мин";
Если не СокрЛП (ЗаголовокВремяНадписи) = "0 ч мин" тогда
НадписьВремя = ЗаголовокВремяНадписи;
иначе                                           
НадписьВремя = "";
конецЕсли;
КонецФункции

и вопрос как ее можно использовать в отчете?

Yamuna

Цитата: Yamuna от 12 сен 2019, 10:07
добрый день, подскажите кто знает, в какой момент надо пересчитывать время. В документе ведется учет с какого по какое время оказывалась услуга и время записывается как в минутах, так и представлением ,например 1ч 30 мин., и документ проводится по регистру накопления с видом остатки , и для того чтобы в отчете можно было вывести время представлением будет использоваться фукция Функция ОбновитьНадписьВремя() Экспорт
ВремяДляНадписи = УчетРабочегоВремени.Итог("ИтогоОтработано")/60;
ВремяЧасы= Цел(ВремяДляНадписи);
ВремяМинуты = Формат((времяДляНадписи - времяЧасы)*60,"ЧЦ=2; ЧДЦ=0");
ЗаголовокВремяНадписи = "" + ВремяЧасы + " ч " + ВремяМинуты + " мин";
Если не СокрЛП (ЗаголовокВремяНадписи) = "0 ч мин" тогда
НадписьВремя = ЗаголовокВремяНадписи;
иначе                                           
НадписьВремя = "";
конецЕсли;
КонецФункции

и вопрос как ее можно использовать в отчете?

сейчас эта функция используется в документе, она пересчитывает минуты , и можно ли как то это использовать чтобы в отчете она пересчитывала минуты ?

LexaK

чем вам стандартное представление времени не нравится?
пример: 22:13:20
всем понятно сколько здесь часов,минут
получить такую строку очень легко
да и время лучше хранить в секундах!
тогда пример выглядит так

ВашиСекунды = 80000;
лкВремя = Формат(Дата(1,1,1) + ВашиСекунды ,"ДЛФ=В");
сообщить(лкВремя);

в отчете, в ячейке со временем, тоже можно задать формат ячейки
если помогло нажмите: Спасибо!

Yamuna

Цитата: LexaK от 12 сен 2019, 15:29
чем вам стандартное представление времени не нравится?
пример: 22:13:20
всем понятно сколько здесь часов,минут
получить такую строку очень легко
да и время лучше хранить в секундах!
тогда пример выглядит так

ВашиСекунды = 80000;
лкВремя = Формат(Дата(1,1,1) + ВашиСекунды ,"ДЛФ=В");
сообщить(лкВремя);

в отчете, в ячейке со временем, тоже можно задать формат ячейки

ЛехаК, буду очень рад если вы подскажите как в стандартном представлении время вывести ,то есть вы предлагаете хранить время в секундах, а не в минутах? и это нам даст возможность в отчете,в ячейке со временем, указать сколько будет в часах и минутах вместо секунд? а если это указано в минутах, то мы не можем?

Там видите в каждом документе какое то количество минут и в регистре это будет суммироваться и потом эту сумму минут надо перевести в часы и минуты и вывести в отчете.. как это можно помогите...))


LexaK

Цитироватьто есть вы предлагаете хранить время в секундах, а не в минутах?
Дата в 1С хранится в секундах,
любой интервал получается очень легко
лкИнтервал = лкДатаФиниш - лкДатаСтарт; //и все, получили количество секунд между замерами
а дальше, эти секунды так же хорошо складывать межу собой, и преобразовывать по время как в примере выше.
если помогло нажмите: Спасибо!

Yamuna

Цитата: LexaK от 12 сен 2019, 17:28
Цитироватьто есть вы предлагаете хранить время в секундах, а не в минутах?
Дата в 1С хранится в секундах,
любой интервал получается очень легко
лкИнтервал = лкДатаФиниш - лкДатаСтарт; //и все, получили количество секунд между замерами
а дальше, эти секунды так же хорошо складывать межу собой, и преобразовывать по время как в примере выше.
LexaK Добрый день! пожалуйста помогите разобраться,сейчас я попробовал выводить дату, как вы посоветовали, и в одном документе, который ведет учет отработанного времени и потом записывает это отработанное время в регистр в секундах, и есть еще один документ который ведет учет оплаты за отработанное время и в нем указывается реквизиты Услуга, Время и Сумма, и реквизит Время имеет тип дата и состав даты Время,ну и при проводке я привожу Время к секундам и записываю в регистр, и сейчас отчет выводит в секундах и как теперь это отобразить в часах и минутах? я попробовал разные варианты форматирования в ячейке отчета, что то у меня не получается пока, форматирование наверно может форматировать только дату , а у нас ведь секунды? можете подсказать?
Добавлено: 13 сен 2019, 06:48


Сейчас мне удалось вывести в отчете секунды в Часах и минутах,я в общем модуле поместил функцию которая возвращает в часах и минутах и вызываю ее для представления секунд
Функция ПолучитьПредставлениеВремени(ВашиСекунды)  Экспорт
лкВремя = Формат(Дата(1,1,1) + ВашиСекунды ,"ДЛФ=В");
Возврат  лкВремя;
КонецФункции
,  единственное не получается выводить отрицательное число секунд, это получается когда есть начальный остаток секунд и когда есть переплата от клиента и по минусу мы видим что это переплата от клиента, как теперь с этим справиться?
Добавлено: 13 сен 2019, 07:11


вот сделал вот так и все выводится
Функция ПолучитьПредставлениеВремени(ВашиСекунды)  Экспорт
Если ВашиСекунды<0 Тогда
   ВашиСекунды = -ВашиСекунды;
КонецЕсли;
лкВремя = Формат(Дата(1,1,1) + ВашиСекунды ,"ДЛФ=В");
Возврат  лкВремя;
КонецФункции

LexaK

что бы знак работал, попробуйте так

Функция ПолучитьПредставлениеВремени(ВашиСекунды)  Экспорт
    Знак = "";
    Если ВашиСекунды<0 Тогда
       ВашиСекунды = -ВашиСекунды;
        Знак = "-";
    КонецЕсли;
    лкВремя = Знак + Формат(Дата(1,1,1) + ВашиСекунды ,"ДЛФ=В");
    Возврат  лкВремя;
КонецФункции
если помогло нажмите: Спасибо!

Yamuna

Цитата: LexaK от 13 сен 2019, 09:06
что бы знак работал, попробуйте так

Функция ПолучитьПредставлениеВремени(ВашиСекунды)  Экспорт
    Знак = "";
    Если ВашиСекунды<0 Тогда
       ВашиСекунды = -ВашиСекунды;
        Знак = "-";
    КонецЕсли;
    лкВремя = Знак + Формат(Дата(1,1,1) + ВашиСекунды ,"ДЛФ=В");
    Возврат  лкВремя;
КонецФункции

Да спасибо, помогло. ЛехаК а можно ли изменить в итогах представление секунд, в детальных записях все отработало, а в итогах все равно показывает секундами в отчете, что нибудь можно придумать?

LexaK

да с итогами наверно сложнее получится
вот это представление Формат(Дата(1,1,1) + ВашиСекунды ,"ДЛФ=В"); - работает только в пределах суток!
т.е. если набегает > 24 часов мы это не увидим а как тогда показывать? 3дня,12час,15мин,27сек  ? какая-то ерунда получается.
Может есть какие другие мысли?
если помогло нажмите: Спасибо!

Yamuna

Цитата: LexaK от 13 сен 2019, 10:19
да с итогами наверно сложнее получится
вот это представление Формат(Дата(1,1,1) + ВашиСекунды ,"ДЛФ=В"); - работает только в пределах суток!
т.е. если набегает > 24 часов мы это не увидим а как тогда показывать? 3дня,12час,15мин,27сек  ? какая-то ерунда получается.
Может есть какие другие мысли?
я немного наверно не так сказал про итоги, имелось в виду что когда открывают отчет и нажимают кнопку сформировать то открывается таблица и в этой таблице есть числовые поля которые добавляем на закладке Ресурсы для того что бы получить итоговые данные в отчете по этому полю ,ну и вот было определено поле ВремяКонечныйОстаток как суммовое и по нему можно посмотреть еще и сумму всего конечного остатка по этому полю, и я так понимаю что когда они его откроют смотреть пусть на эту дату и  получат данные... или я что то не так понял?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск