Представление времени. Возвращает текстовое представление интервала времени, заданного в секундах.
// Возвращает текстовое представление интервала времени, заданного в секундах.
//
// Параметры:
//
// Время - Число - интервал времени в секундах.
//
// ПолноеПредставление - Булево - кратное или полное представление времени.
// Например, интервал 1 000 000 секунд:
// - полное представление: 11 дней 13 часов 46 минут 40 секунд;
// - краткое представление: 11 дней 13 часов.
//
// Возвращаемое значение:
// Строка - представление интервала времени.
//
Функция ПредставлениеВремени(Знач Время, ПолноеПредставление = Истина, ВыводитьСекунды = Истина) Экспорт
Результат = "";
// Представление единиц измерения времени в винительном падеже для количеств: 1, 2-4, 5-20.
ПредставлениеНедель = НСтр("ru = ';%1 неделю;;%1 недели;%1 недель;%1 недели'");
ПредставлениеДней = НСтр("ru = ';%1 день;;%1 дня;%1 дней;%1 дня'");
ПредставлениеЧасов = НСтр("ru = ';%1 час;;%1 часа;%1 часов;%1 часа'");
ПредставлениеМинут = НСтр("ru = ';%1 минуту;;%1 минуты;%1 минут;%1 минуты'");
ПредставлениеСекунд = НСтр("ru = ';%1 секунду;;%1 секунды;%1 секунд;%1 секунды'");
Время = Число(Время);
Если Время < 0 Тогда
Время = -Время;
КонецЕсли;
КоличествоНедель = Цел(Время / 60/60/24/7);
КоличествоДней = Цел(Время / 60/60/24);
КоличествоЧасов = Цел(Время / 60/60);
КоличествоМинут = Цел(Время / 60);
КоличествоСекунд = Цел(Время);
КоличествоСекунд = КоличествоСекунд - КоличествоМинут * 60;
КоличествоМинут = КоличествоМинут - КоличествоЧасов * 60;
КоличествоЧасов = КоличествоЧасов - КоличествоДней * 24;
КоличествоДней = КоличествоДней - КоличествоНедель * 7;
Если Не ВыводитьСекунды Тогда
КоличествоСекунд = 0;
КонецЕсли;
Если КоличествоНедель > 0 И КоличествоДней+КоличествоЧасов+КоличествоМинут+КоличествоСекунд=0 Тогда
Результат = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(ПредставлениеНедель, КоличествоНедель);
Иначе
КоличествоДней = КоличествоДней + КоличествоНедель * 7;
Счетчик = 0;
Если КоличествоДней > 0 Тогда
Результат = Результат + СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(ПредставлениеДней, КоличествоДней) + " ";
Счетчик = Счетчик + 1;
КонецЕсли;
Если КоличествоЧасов > 0 Тогда
Результат = Результат + СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(ПредставлениеЧасов, КоличествоЧасов) + " ";
Счетчик = Счетчик + 1;
КонецЕсли;
Если (ПолноеПредставление Или Счетчик < 2) И КоличествоМинут > 0 Тогда
Результат = Результат + СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(ПредставлениеМинут, КоличествоМинут) + " ";
Счетчик = Счетчик + 1;
КонецЕсли;
Если (ПолноеПредставление Или Счетчик < 2) И (КоличествоСекунд > 0 Или КоличествоНедель+КоличествоДней+КоличествоЧасов+КоличествоМинут = 0) Тогда
Результат = Результат + СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(ПредставлениеСекунд, КоличествоСекунд);
КонецЕсли;
КонецЕсли;
Возврат СокрП(Результат);
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)