Table of Contents

Вывод времени наработки в формате HH:mm:ss

Изменение формата вывода времени наработки можно выполнить в обработчике события 'Печать на странице'.

ШАГ 1. Откройте в редакторе отчетов требуемую отчетную форму (главном меню пункт Справочники -> Отчетные формы).

ШАГ 2. Откройте вкладку Скрипты и введите:

using System;
private void workTime_PrintOnPage(object sender, DevExpress.XtraReports.UI.PrintOnPageEventArgs e) 
{
	XRTableCell cell = (XRTableCell)sender;
	cell.Text =  FormatWorkTime(cell.Text, true);
}

// Преобразует время наработки в отформатированную строку.
// value - значение времени наработки в часах.
// includeSeconds - признак отображения секунд.
private string FormatWorkTime(object value, bool includeSeconds)
{
	if (value == null || value == DBNull.Value)
	{
		return null;
	}

	// Если преобразование невозможно, то выводим пустую строку
	double workTime = 0;
	if (!Double.TryParse(value.ToString(), out workTime))
	{
		return String.Empty;
	}

	// Если время наработки отрицательное или большое, то выводим его как есть.
	if (workTime < 0 || workTime > 1000000)
	{
		return String.Format("{0:n}", workTime);
	}
	
	// Выводим время наработки в формате HH:mm или HH:mm:ss в зависмости от значения includeSeconds
	TimeSpan ts = TimeSpan.FromHours(workTime);
	if (includeSeconds)
	{
		return String.Format("{0:d2}:{1:d2}:{2:d2}", (int)workTime, ts.Minutes, ts.Seconds);
	}
	else
	{
		return String.Format("{0:d2}:{1:d2}", (int)workTime, ts.Minutes);
	}
}

ШАГ 3. В секции Detail выделите ячейку, которая связана с полем WorkTime и очистите у нее формат вывода, если был задан.

ШАГ 4. В свойствах выделенной ячейки на вкладке Скрипты выберите обработчик Печать на странице.

ШАГ 5. В выпадающем списке скриптов выберите workTime_PrintOnPage созданный на Шаг 2.

ШАГ 6. В секции ReportFooter в строке Итого выделите ячейку, которая связана с полем WorkTime и очистите у нее формат вывода, если был задан.

ШАГ 7. В свойствах выделенной ячейки на вкладке Скрипты выберите обработчик Печать на странице.

ШАГ 8. В выпадающем списке скриптов выберите workTime_PrintOnPage созданный на Шаг 2.

ШАГ 9. С помощью кнопки на панели инструментов редактора отчетов сохраните сделанные изменения.

Пример сформированного отчета: