Часто задаваемые вопросы

> [HTML Version](faqrep.html)

(./images/tog_plus.gif)** 1. Имеется колонка с нарастающими данными. Как получить в итоговой ячейке разницу между последней ячейкой колонки и первой? **[(./images/link.png)](https://simple-scada.com/help/report/faqrep.html?anchor=q1)

Для этого нужно вставить в ячейку итога следующее выражение:

````
\{(double)Last(DataДанные, Данные.Value) - (double)First(DataДанные, Данные.Value)\}

````
, где "DataДанные" - имя бэнда данных. "Данные" - имя источника данных. "Value" - имя колонки в источнике данных, по которой нужно вычислить разницу.

(./images/tog_plus.gif)** 2. Как написать выражение для разности значений времени (текущего и предыдущего)? **[(./images/link.png)](https://simple-scada.com/help/report/faqrep.html?anchor=q2)

Для этого нужно в бэнде данных разместить компонент "Текст", дважды кликнуть его для редактирования и использовать следующее выражение:

````
\{DateDiff(Данные.Время, (System.DateTime)Previous(Данные, "Время"))\}

````
, данный код получает разницу во времени между текущей и предыдущей строкой. Далее, необходимо установить у компонента "Текст" формат "Время" (иначе ячейки будут пустыми). Для этого нужно кликнуть по компоненту "Текст" ПКМ и выбрать пункт "Формат".

(./images/tog_plus.gif)** 3. Как округлить время до ближайшей секунды? **[(./images/link.png)](https://simple-scada.com/help/report/faqrep.html?anchor=q3)

Для этого нужно в бэнде данных разместить компонент "Текст", дважды кликнуть по нему для редактирования и использовать следующее выражение:

````
\{   
  DateSerial(0).AddSeconds(  
    Math.Round(  
      ((DateTime)Данные.Время - DateSerial(0)).TotalSeconds  
    ))   
\}

````
, в результате время будет округляться следующим образом:

````
12:00:00.001 -> 12:00:00.000   
12:00:00.500 -> 12:00:00.000  
12:00:00.501 -> 12:00:01.000  
12:00:00.999 -> 12:00:01.000
````

````
(./images/tog_plus.gif)** 4. Формат времени в итоге отчета **[(./images/link.png)](https://simple-scada.com/help/report/faqrep.html?anchor=q4)

Допустим в отчете имеется столбец с временем наработки оборудования. В бэнде "Итог отчета" через функцию SumTime вычисляется суммарное значение наработки, которое необходимо отображать в формате "часы:минуты" или "дни.часы:минуты". Для этого у ячейки итога нужно установить формат "Стандарт" и использовать следующее выражение:

Формат "часы:минуты" (например "26:05"):

````
\{((int)SumTime(DataДанные, Данные.Value).TotalHours) +   
":" + (SumTime(DataДанные, Данные.Value).Minutes).ToString("00")\}

````
Формат "дни.часы:минуты" (например "01.12:05"):

````
\{SumTime(DataДанные, Данные.Value).ToString("dd\\.hh\\:mm")\}

````
, где "DataДанные" - имя бэнда данных. "Данные" - имя источника данных. "Value" - имя колонки в источнике данных.

(./images/tog_plus.gif)** 5. Преобразование секунд в формат времени более 24 часов **[(./images/link.png)](https://simple-scada.com/help/report/faqrep.html?anchor=q5)

Допустим в отчете имеется столбец с количеством секунд и требуется преобразовать значение секунд в формат "часы:минуты:секунды". При этом, количество часов может быть более 24. Для этого можно использовать следующее выражение:

````
\{(int)TimeSpan.FromSeconds(Данные.Value).TotalHours + ":" +  
 TimeSpan.FromSeconds(Данные.Value).ToString("mm\\:ss")\}

````
 , где "Данные" - имя источника данных. "Value" - имя колонки в источнике данных. Пример результата: "26:15:48".

Если нужно получить формат "дни.часы:минуты:секунды", то можно использовать выражение:

````
\{TimeSpan.FromSeconds(Данные.Value).ToString("dd\\.hh\\:mm\\:ss")\}

````
Пример результата: "01.12:15:00".



