fetch(); $entity = HLBT::compileEntity($hlblock); return $entity->getDataClass(); } public static function GetClass() { if(!static::$class) static::$class = Counter::GetEntityClass(static::$classId); return static::$class; } public static function AddValue($object_id, $date, $value) { $class = static::GetClass(); $row = $class::getList(['select' => ['*'], 'order' => ['UF_DATE' => 'ASC'], 'filter' => ['UF_OBJECT' => $object_id, 'UF_DATE' => $date], 'limit' => 1])->fetch(); $data = [ 'UF_OBJECT' => $object_id, 'UF_DATE' => $date, 'UF_VALUE' => $value, ]; if($row) $result = $class::update($row['ID'], $data); else $result = $class::add($data); if($result->isSuccess()) return $result->getId(); return 0; } public static function GetLastValue($object_id) { $class = static::GetClass(); $row = $class::getList(['select' => ['*'], 'order' => ['UF_DATE' => 'DESC'], 'filter' => ['UF_OBJECT' => $object_id], 'limit' => 1])->fetch(); if($row) return $row['UF_DATE']; return null; } public static function GetGraph($object_id) { $class = static::GetClass(); $rows = $class::getList(['select' => ['*'], 'order' => ['UF_DATE' => 'ASC'], 'filter' => ['UF_OBJECT' => $object_id], 'limit' => 11]); $res = ['tips' => [], 'values' => [], 'labels' => []]; $val = 0; $vals = []; $date = ''; $i = 0; while($row = $rows->fetch()) { $vals = ['x' => MakeTimeStamp($row['UF_DATE']), 'y' => ((float)$row['UF_VALUE'] - $val)]; $date = ConvertDateTime($row['UF_DATE'], 'DD.MM'); if($i == 0) { ++$i; $val = (float)$row['UF_VALUE']; continue; } $res['tips'][] = 'Показания: ' . $row['UF_VALUE']; if($val == 0) $res['values'][] = 0; else $res['values'][] = $vals; $val = (float)$row['UF_VALUE']; $res['labels'][] = ConvertDateTime($row['UF_DATE'], 'DD.MM'); ++$i; } if($i == 1) $res = ['tips' => ['Начальные показания: ' . $val], 'values' => [$vals], 'labels' => [$date]]; return $res; } public static function SetCheckDate($object_id, $type, $date_last, $date_next) { $date_last = $date_last ? $date_last : null; $date_next = $date_next ? $date_next : null; if($type == 0) { CIBlockElement::SetPropertyValuesEx($object_id, false, array('DATE_SIGNAL_LAST' => $date_last)); CIBlockElement::SetPropertyValuesEx($object_id, false, array('DATE_SIGNAL_NEXT' => $date_next)); } else if($type == 1) { CIBlockElement::SetPropertyValuesEx($object_id, false, array('DATE_MAP_LAST' => $date_last)); CIBlockElement::SetPropertyValuesEx($object_id, false, array('DATE_MAP_NEXT' => $date_next)); } else if($type == 2) { CIBlockElement::SetPropertyValuesEx($object_id, false, array('DATE_COUNTER_LAST' => $date_last)); CIBlockElement::SetPropertyValuesEx($object_id, false, array('DATE_COUNTER_NEXT' => $date_next)); } } public static function GetList($object_id) { $class = static::GetClass(); $rows = $class::getList(['select' => ['*'], 'order' => ['UF_DATE' => 'ASC'], 'filter' => ['UF_OBJECT' => $object_id]]); $res = []; $val = 0; while($row = $rows->fetch()) { $res[]= ['id' => $row['ID'], 'date' => ConvertDateTime($row['UF_DATE'], 'DD.MM.YYYY'), 'value' => $row['UF_VALUE'], 'delta' => ($val ? ((float)$row['UF_VALUE'] - $val) : 0)]; $val = (float)$row['UF_VALUE']; } $res = array_reverse($res); return $res; } public static function EditRecord($id, $date, $value) { $class = static::GetClass(); $data = [ 'UF_DATE' => $date, 'UF_VALUE' => $value, ]; $result = $class::update($id, $data); return $result->isSuccess(); } public static function DeleteRecord($id) { $class = static::GetClass(); $result = $class::delete($id); return $result->isSuccess(); } };