diff --git a/AsbCloudApp/Data/DailyReport/OperationStatDto.cs b/AsbCloudApp/Data/DailyReport/OperationStatDto.cs
deleted file mode 100644
index 8d53db14..00000000
--- a/AsbCloudApp/Data/DailyReport/OperationStatDto.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace AsbCloudApp.Data.DailyReport
-{
-    /// <summary>
-    /// Статистика по операции
-    /// </summary>
-    public class OperationStatDto
-    {
-        /// <summary>
-        /// Глубина забоя
-        /// </summary>
-        public double Depth { get; set; }
-
-        //TODO: Дописать
-    }
-}
diff --git a/AsbCloudApp/Data/DailyReport/TimeBalanceDto.cs b/AsbCloudApp/Data/DailyReport/TimeBalanceDto.cs
index efed1ea4..855d5fd7 100644
--- a/AsbCloudApp/Data/DailyReport/TimeBalanceDto.cs
+++ b/AsbCloudApp/Data/DailyReport/TimeBalanceDto.cs
@@ -1,5 +1,4 @@
 using System.Collections.Generic;
-using System.Linq;
 
 namespace AsbCloudApp.Data.DailyReport
 {
@@ -12,7 +11,8 @@ namespace AsbCloudApp.Data.DailyReport
         /// <summary>
         /// Статистика по операциям
         /// </summary>
-        public IEnumerable<OperationStatDto> OperationsStat { get; set; } = Enumerable.Empty<OperationStatDto>();
+        public Dictionary<int, double> OperationsStat { get; set; } = new Dictionary<int, double>();
+
     }
 }
 
diff --git a/AsbCloudApp/Data/WellOperationDto.cs b/AsbCloudApp/Data/WellOperationDto.cs
index 48ff9e30..93e7a4db 100644
--- a/AsbCloudApp/Data/WellOperationDto.cs
+++ b/AsbCloudApp/Data/WellOperationDto.cs
@@ -46,6 +46,11 @@ namespace AsbCloudApp.Data
         /// </summary>
         public string? CategoryName { get; set; }
 
+        /// <summary>
+        /// ключ родителя у категории
+        /// </summary>
+        public int? IdParentCategory { get; set; }
+
         /// <summary>
         /// дополнительная информация по операции
         /// </summary>
diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs b/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs
index 2a8cd07d..b5d8707b 100644
--- a/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs
+++ b/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs
@@ -1,7 +1,11 @@
-namespace AsbCloudDb.Model.DefaultData
+using Microsoft.VisualBasic;
+using static AsbCloudDb.Model.DefaultData.DefaultContextData;
+
+namespace AsbCloudDb.Model.DefaultData
 {
     internal class EntityFillerWellOperationCategory : EntityFiller<WellOperationCategory>
     {
+        
         public override WellOperationCategory[] GetData() => new WellOperationCategory[]{            
             
             // Этап работ
@@ -13,24 +17,24 @@
             new () {Id = WellOperationCategory.IdNonProductiveTime, Name = "Непроизводительное время (НПВ)", KeyValueName = "dT", KeyValueUnits = "мин" },
 
             // Виды работ
-            new () {Id = 4000, IdParent = 3000, Name = "КНБК",  KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.Knbk, IdParent = 3000, Name = "КНБК",  KeyValueName = "dT", KeyValueUnits = "мин" },
             new () {Id = WellOperationCategory.IdMechanicalDrilling, IdParent = 3000, Name = "Механическое. бурение", KeyValueName = "dT", KeyValueUnits = "м/ч" },
-            new () {Id = 4002, IdParent = 3000, Name = "Статический замер", KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4003, IdParent = 3000, Name = "Нормализация диаметра скважины",    KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4004, IdParent = 3000, Name = "Наращивание",   KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4005, IdParent = 3001, Name = "СПО",   KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4006, IdParent = 3002, Name = "Спуск обсадной колонны",    KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4007, IdParent = 3002, Name = "Цементирование",    KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4008, IdParent = 3002, Name = "Вспомогательные работы при креплении",  KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4009, IdParent = 3003, Name = "Сборка/разборка приборов ГИС",  KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4010, IdParent = 3003, Name = "СПО",   KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4011, IdParent = 3003, Name = "ГИС",   KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4012, IdParent = 3004, Name = "Промывка, ОБР", KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4013, IdParent = 3004, Name = "Вспомогательные работы",    KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4014, IdParent = 3005, Name = "Ремонт оборудования",   KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4015, IdParent = 3005, Name = "Аварийные работы",  KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4016, IdParent = 3005, Name = "Осложнение",    KeyValueName = "dT", KeyValueUnits = "мин" },
-            new () {Id = 4017, IdParent = 3005, Name = "Незаложенные в ГГД операции",   KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.MeasurementStat, IdParent = 3000, Name = "Статический замер", KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.NormalizedWellDiameter, IdParent = 3000, Name = "Нормализация диаметра скважины",    KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.Building, IdParent = 3000, Name = "Наращивание",   KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.SPO , IdParent = 3001, Name = "СПО",   KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.CasingRunning, IdParent = 3002, Name = "Спуск обсадной колонны",    KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.Cementing, IdParent = 3002, Name = "Цементирование",    KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.AuxiliaryWorkFastening, IdParent = 3002, Name = "Вспомогательные работы при креплении",  KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.AssemblyOrDisassemblyGIS, IdParent = 3003, Name = "Сборка/разборка приборов ГИС",  KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.SPO2, IdParent = 3003, Name = "СПО",   KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.GIS, IdParent = 3003, Name = "ГИС",   KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.FlushingOBR, IdParent = 3004, Name = "Промывка, ОБР", KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.AuxiliaryWork, IdParent = 3004, Name = "Вспомогательные работы",    KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.EquipmentRepair, IdParent = 3005, Name = "Ремонт оборудования",   KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.EmergencyWork, IdParent = 3005, Name = "Аварийные работы",  KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.Complication, IdParent = 3005, Name = "Осложнение",    KeyValueName = "dT", KeyValueUnits = "мин" },
+            new () {Id = WellOperationCategory.OperationsNotIncludedGGD, IdParent = 3005, Name = "Незаложенные в ГГД операции",   KeyValueName = "dT", KeyValueUnits = "мин" },
 
             //переименованные категории с новым ИД
             new () {Id = WellOperationCategory.IdBhaDisassembly, IdParent = 4000, Name = "Разборка КНБК", KeyValueName = "dT", KeyValueUnits = "мин" },
diff --git a/AsbCloudDb/Model/WellOperationCategory.cs b/AsbCloudDb/Model/WellOperationCategory.cs
index fd675f53..297f7537 100644
--- a/AsbCloudDb/Model/WellOperationCategory.cs
+++ b/AsbCloudDb/Model/WellOperationCategory.cs
@@ -18,7 +18,6 @@ namespace AsbCloudDb.Model
         /// </summary>
         public const int IdNonProductiveTime = 3005;
 
-
         /// <summary>
         /// Механическое. бурение
         /// </summary>
@@ -84,6 +83,92 @@ namespace AsbCloudDb.Model
         /// Ремонт бурового оборудования
         /// </summary>
         public const int IdEquipmentRepair = 5058;
+
+        /// <summary>
+        /// КНБК
+        /// </summary>
+        public const int Knbk = 4000;
+
+        /// <summary>
+        /// СПО
+        /// </summary>
+        public const int SPO = 4005;
+
+        /// <summary>
+        /// ГИС
+        /// </summary>
+        public const int GIS = 4011;
+
+        /// <summary>
+        /// Статический замер
+        /// </summary>
+        public const int MeasurementStat = 4002;
+
+        /// <summary>
+        /// Нормализация диаметра скважины
+        /// </summary>
+        public const int NormalizedWellDiameter = 4003;
+
+        /// <summary>
+        /// Наращивание
+        /// </summary>
+        public const int Building = 4004;
+
+        /// <summary>
+        /// Спуск обсадной колонны
+        /// </summary>
+        public const int CasingRunning = 4006;
+
+        /// <summary>
+        /// Цементирование
+        /// </summary>
+        public const int Cementing = 4007;
+
+        /// <summary>
+        /// Вспомогательные работы при креплении
+        /// </summary>
+        public const int AuxiliaryWorkFastening = 4008;
+
+        /// <summary>
+        /// Сборка/разборка приборов ГИС
+        /// </summary>
+        public const int AssemblyOrDisassemblyGIS = 4009;
+
+        /// <summary>
+        /// СПО2
+        /// </summary>
+        public const int SPO2 = 4010;
+
+        /// <summary>
+        /// Промывка, ОБР
+        /// </summary>
+        public const int FlushingOBR = 4012;
+
+        /// <summary>
+        /// Вспомогательные работы
+        /// </summary>
+        public const int AuxiliaryWork = 4013;
+
+        /// <summary>
+        /// Ремонт оборудования
+        /// </summary>
+        public const int EquipmentRepair = 4014;
+
+        /// <summary>
+        /// Аварийные работы
+        /// </summary>
+        public const int EmergencyWork = 4015;
+
+        /// <summary>
+        /// Осложнение
+        /// </summary>
+        public const int Complication = 4016;
+
+        /// <summary>
+        /// Незаложенные в ГГД операции
+        /// </summary>
+        public const int OperationsNotIncludedGGD = 4017;
+
         /// <summary>
         /// Список всех категорий НПВ
         /// </summary>
diff --git a/AsbCloudInfrastructure/Repository/WellOperationRepository.cs b/AsbCloudInfrastructure/Repository/WellOperationRepository.cs
index c62b2858..94ebc6e0 100644
--- a/AsbCloudInfrastructure/Repository/WellOperationRepository.cs
+++ b/AsbCloudInfrastructure/Repository/WellOperationRepository.cs
@@ -352,6 +352,7 @@ namespace AsbCloudInfrastructure.Repository
                 IdWell = o.IdWell,
                 IdWellSectionType = o.IdWellSectionType,
                 IdCategory = o.IdCategory,
+                IdParentCategory = o.OperationCategory.IdParent,
 
                 CategoryName = o.OperationCategory.Name,
                 WellSectionTypeName = o.WellSectionType.Caption,
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs
index f347ce69..6447c33b 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs
@@ -1,164 +1,161 @@
-using AsbCloudApp.Data.DailyReport;
+using AsbCloudApp.Data;
+using AsbCloudApp.Data.DailyReport;
+using AsbCloudDb.Model;
 using ClosedXML.Excel;
+using System.Collections.Generic;
+using System.Linq;
 
 namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
 {
     class TimeBalanceBlock : BlockAbstract
     {
-        private readonly TimeBalanceDto blockDto;
-        public CellAddress AddressTitle { get; }
-        public CellAddress AddressDrilling { get; set; }
-        public CellAddress AddressFlushing { get; set; }
-        public CellAddress AddressBuilding { get; set; }
-        public CellAddress AddressElaboration { get; set; }
-        public CellAddress AddressExtension { get; set; }
-        public CellAddress AddressRepair { get; set; }
-        public CellAddress AddressDrillingValue { get; set; }
-        public CellAddress AddressFlushingValue { get; set; }
-        public CellAddress AddressBuildingValue { get; set; }
-        public CellAddress AddressElaborationValue { get; set; }
-        public CellAddress AddressExtensionValue { get; set; }
-        public CellAddress AddressRepairValue { get; set; }
-        public CellAddress AddressKnbk { get; set; }
-        public CellAddress AddressSpo { get; set; }
-        public CellAddress AddressPzr { get; set; }
-        public CellAddress AddressPvo { get; set; }
-        public CellAddress AddressPgr { get; set; }
-        public CellAddress AddressGis { get; set; }
-        public CellAddress AddressKnbkValue { get; set; }
-        public CellAddress AddressSpoValue { get; set; }
-        public CellAddress AddressPzrValue { get; set; }
-        public CellAddress AddressPvoValue { get; set; }
-        public CellAddress AddressPgrValue { get; set; }
-        public CellAddress AddressGisValue { get; set; }
-        public CellAddress AddressOzc { get; set; }
-        public CellAddress AddressEngineeringWorks { get; set; }
-        public CellAddress AddressTakingMeasure { get; set; }
-        public CellAddress AddressCementing { get; set; }
-        public CellAddress AddressSimple { get; set; }
-        public CellAddress AddressNpv { get; set; }
-        public CellAddress AddressOzcValue { get; set; }
-        public CellAddress AddressEngineeringWorksValue { get; set; }
-        public CellAddress AddressTakingMeasureValue { get; set; }
-        public CellAddress AddressCementingValue { get; set; }
-        public CellAddress AddressSimpleValue { get; set; }
-        public CellAddress AddressNpvValue { get; set; }
-        public CellAddress[] AddressPeriodTableDataArray { get; }
+
         public override CellAddress AddressBlockBegin { get; }
+        public Dictionary<int, double> OperationsStatistics { get; set; }
+        public IEnumerable<WellOperationCategoryDto> OperationCategories { get; set; }
         public override CellAddress AddressBlockEnd { get; }
 
-        public TimeBalanceBlock(CellAddress addressBlockBegin, TimeBalanceDto blockDto)
+        public CellAddress Title { get { return AddressBlockBegin + (1, 3); } }
+
+
+        public TimeBalanceBlock(CellAddress addressBlockBegin, TimeBalanceDto blockDto, IEnumerable<WellOperationCategoryDto> operationCategories)
         {
             AddressBlockBegin = addressBlockBegin.Copy();
-            this.blockDto = blockDto;
-            AddressTitle = addressBlockBegin + (1, 3);
-            AddressDrilling = addressBlockBegin + (2, 1);
-            AddressFlushing = addressBlockBegin + (3, 1);
-            AddressBuilding = addressBlockBegin + (4, 1);
-            AddressElaboration = addressBlockBegin + (5, 1);
-            AddressExtension = addressBlockBegin + (6, 1);
-            AddressRepair = addressBlockBegin + (7, 1);
-            AddressDrillingValue = addressBlockBegin + (2, 2);
-            AddressFlushingValue = addressBlockBegin + (3, 2);
-            AddressBuildingValue = addressBlockBegin + (4, 2);
-            AddressElaborationValue = addressBlockBegin + (5, 2);
-            AddressExtensionValue = addressBlockBegin + (6, 2);
-            AddressRepairValue = addressBlockBegin + (7, 2);
-            AddressKnbk = addressBlockBegin + (2, 3);
-            AddressSpo = addressBlockBegin + (3, 3);
-            AddressPzr = addressBlockBegin + (4, 3);
-            AddressPvo = addressBlockBegin + (5, 3);
-            AddressPgr = addressBlockBegin + (6, 3);
-            AddressGis = addressBlockBegin + (7, 3);
-            AddressKnbkValue = addressBlockBegin + (2, 4);
-            AddressSpoValue = addressBlockBegin + (3, 4);
-            AddressPzrValue = addressBlockBegin + (4, 4);
-            AddressPvoValue = addressBlockBegin + (5, 4);
-            AddressPgrValue = addressBlockBegin + (6, 4);
-            AddressGisValue = addressBlockBegin + (7, 4);
-            AddressOzc = addressBlockBegin + (2, 5);
-            AddressEngineeringWorks = addressBlockBegin + (3, 5);
-            AddressTakingMeasure = addressBlockBegin + (4, 5);
-            AddressCementing = addressBlockBegin + (5, 5);
-            AddressSimple = addressBlockBegin + (6, 5);
-            AddressNpv = addressBlockBegin + (7, 5);
-            AddressOzcValue = addressBlockBegin + (2, 6);
-            AddressEngineeringWorksValue = addressBlockBegin + (3, 6);
-            AddressTakingMeasureValue = addressBlockBegin + (4, 6);
-            AddressCementingValue = addressBlockBegin + (5, 6);
-            AddressSimpleValue = addressBlockBegin + (6, 6);
-            AddressNpvValue = addressBlockBegin + (7, 6);
-            AddressBlockEnd = AddressNpvValue;
+
+            OperationsStatistics = blockDto.OperationsStat;
+            OperationCategories = operationCategories;
+
+            AddressBlockEnd = AddressBlockBegin + (7, 6);
         }
 
         public override void Draw(IXLWorksheet sheet)
         {
-            sheet.Range(AddressTitle.RowNumber, AddressTitle.ColumnNumber, AddressTitle.RowNumber, AddressTitle.ColumnNumber + 1)
+
+            sheet.Range(Title.RowNumber, Title.ColumnNumber, Title.RowNumber, Title.ColumnNumber + 1)
                .Merge()
               .SetValue("БАЛАНС ВРЕМЕНИ");
-            sheet.Cell(AddressDrilling)
-               ._SetValue("Бурение", true);
-            sheet.Cell(AddressFlushing)
-               ._SetValue("Промывка", true);
-            sheet.Cell(AddressBuilding)
-               ._SetValue("Наращивание", true);
-            sheet.Cell(AddressElaboration)
-               ._SetValue("Проработка", true);
-            sheet.Cell(AddressExtension)
-               ._SetValue("Расширка", true);
-            sheet.Cell(AddressRepair)
-               ._SetValue("Ремонт", true);
-           //TODO: дописать timebalance
-            sheet.Cell(AddressKnbk)
-               ._SetValue("КНБК");
-            sheet.Cell(AddressSpo)
-               ._SetValue("СПО");
-            sheet.Cell(AddressPzr)
-               ._SetValue("ПЗР");
-            sheet.Cell(AddressPvo)
-               ._SetValue("ПВО");
-            sheet.Cell(AddressPgr)
-               ._SetValue("ПГР");
-            sheet.Cell(AddressGis)
-               ._SetValue("ГИС");
-            //sheet.Cell(AddressKnbkValue)
-            //   ._SetValue($"{blockDto.Knbk}");
-            //sheet.Cell(AddressSpoValue)
-            //   ._SetValue($"{blockDto.Spo}");
-            //sheet.Cell(AddressPzrValue)
-            //   ._SetValue($"{blockDto.Pzr}");
-            //sheet.Cell(AddressPvoValue)
-            //   ._SetValue($"{blockDto.Pvo}");
-            //sheet.Cell(AddressPgrValue)
-            //   ._SetValue($"{blockDto.Pgr}");
-            //sheet.Cell(AddressGisValue)
-            //   ._SetValue($"{blockDto.Gis}");
-            sheet.Cell(AddressOzc)
-               ._SetValue("ОЗЦ");
-            sheet.Cell(AddressEngineeringWorks)
-               ._SetValue("Тех. работы");
-            sheet.Cell(AddressTakingMeasure)
-               ._SetValue("Снятие замера");
-            sheet.Cell(AddressCementing)
-               ._SetValue("Цементирование");
-            sheet.Cell(AddressSimple)
-               ._SetValue("Простой");
-            sheet.Cell(AddressNpv)
-               ._SetValue("НПВ");
-            //sheet.Cell(AddressOzcValue)
-            //   ._SetValue($"{blockDto.Ozc}");
-            //sheet.Cell(AddressEngineeringWorksValue)
-            //   ._SetValue($"{blockDto.EngineeringWorks}");
-            //sheet.Cell(AddressTakingMeasureValue)
-            //   ._SetValue($"{blockDto.TakingMeasure}");
-            //sheet.Cell(AddressCementingValue)
-            //   ._SetValue($"{blockDto.Cementing}");
-            //sheet.Cell(AddressSimpleValue)
-            //   ._SetValue($"{blockDto.Simple}");
-            //sheet.Cell(AddressNpvValue)
-            //   ._SetValue($"{blockDto.Npv}");
+
+            sheet.Cell(AddressBlockBegin + (2, 1))
+               ._SetValue(GetCaption(WellOperationCategory.Knbk), true);
+
+            sheet.Cell(AddressBlockBegin + (3, 1))
+               ._SetValue(GetCaption(WellOperationCategory.IdMechanicalDrilling), true);
+
+            sheet.Cell(AddressBlockBegin + (4, 1))
+               ._SetValue(GetCaption(WellOperationCategory.MeasurementStat), true);
+
+            sheet.Cell(AddressBlockBegin + (5, 1))
+               ._SetValue(GetCaption(WellOperationCategory.NormalizedWellDiameter), true);
+
+            sheet.Cell(AddressBlockBegin + (6, 1))
+               ._SetValue(GetCaption(WellOperationCategory.Building), true);
+
+            sheet.Cell(AddressBlockBegin + (7, 1))
+               ._SetValue(GetValue(WellOperationCategory.SPO), true);
+
+            sheet.Cell(AddressBlockBegin + (2, 2))
+               ._SetValue(GetValue(WellOperationCategory.Knbk));
+
+            sheet.Cell(AddressBlockBegin + (3, 2))
+               ._SetValue(GetValue(WellOperationCategory.IdMechanicalDrilling));
+
+            sheet.Cell(AddressBlockBegin + (4, 2))
+               ._SetValue(GetValue(WellOperationCategory.MeasurementStat));
+
+            sheet.Cell(AddressBlockBegin + (5, 2))
+               ._SetValue(GetValue(WellOperationCategory.NormalizedWellDiameter));
+
+            sheet.Cell(AddressBlockBegin + (6, 2))
+               ._SetValue(GetValue(WellOperationCategory.Building));
+
+            sheet.Cell(AddressBlockBegin + (7, 2))
+              ._SetValue(GetValue(WellOperationCategory.SPO));
+
+            sheet.Cell(AddressBlockBegin + (2, 3))
+               ._SetValue(GetCaption(WellOperationCategory.CasingRunning));
+
+            sheet.Cell(AddressBlockBegin + (3, 3))
+               ._SetValue(GetCaption(WellOperationCategory.Cementing));
+
+            sheet.Cell(AddressBlockBegin + (4, 3))
+               ._SetValue(GetCaption(WellOperationCategory.AuxiliaryWorkFastening));
+
+            sheet.Cell(AddressBlockBegin + (5, 3))
+               ._SetValue(GetCaption(WellOperationCategory.AssemblyOrDisassemblyGIS));
+
+            sheet.Cell(AddressBlockBegin + (6, 3))
+               ._SetValue(GetCaption(WellOperationCategory.SPO2));
+
+            sheet.Cell(AddressBlockBegin + (7, 3))
+               ._SetValue(GetCaption(WellOperationCategory.GIS));
+
+            sheet.Cell(AddressBlockBegin + (2, 4))
+               ._SetValue(GetValue(WellOperationCategory.CasingRunning));
+
+            sheet.Cell(AddressBlockBegin + (3, 4))
+               ._SetValue(GetValue(WellOperationCategory.Cementing));
+
+            sheet.Cell(AddressBlockBegin + (4, 4))
+               ._SetValue(GetValue(WellOperationCategory.AuxiliaryWorkFastening));
+
+            sheet.Cell(AddressBlockBegin + (5, 4))
+               ._SetValue(GetValue(WellOperationCategory.AssemblyOrDisassemblyGIS));
+
+            sheet.Cell(AddressBlockBegin + (6, 4))
+               ._SetValue(GetValue(WellOperationCategory.SPO2));
+
+            sheet.Cell(AddressBlockBegin + (7, 4))
+              ._SetValue(GetValue(WellOperationCategory.GIS));
+
+            sheet.Cell(AddressBlockBegin + (2, 5))
+               ._SetValue(GetCaption(WellOperationCategory.FlushingOBR));
+
+            sheet.Cell(AddressBlockBegin + (3, 5))
+               ._SetValue(GetCaption(WellOperationCategory.AuxiliaryWork));
+
+            sheet.Cell(AddressBlockBegin + (4, 5))
+               ._SetValue(GetCaption(WellOperationCategory.EquipmentRepair));
+
+            sheet.Cell(AddressBlockBegin + (5, 5))
+               ._SetValue(GetCaption(WellOperationCategory.EmergencyWork));
+
+            sheet.Cell(AddressBlockBegin + (6, 5))
+               ._SetValue(GetCaption(WellOperationCategory.Complication));
+
+            sheet.Cell(AddressBlockBegin + (7, 5))
+                ._SetValue(GetCaption(WellOperationCategory.OperationsNotIncludedGGD));
+
+            sheet.Cell(AddressBlockBegin + (2, 6))
+                ._SetValue(GetValue(WellOperationCategory.FlushingOBR));
+
+            sheet.Cell(AddressBlockBegin + (3, 6))
+               ._SetValue(GetValue(WellOperationCategory.AuxiliaryWork));
+
+            sheet.Cell(AddressBlockBegin + (4, 6))
+               ._SetValue(GetValue(WellOperationCategory.EquipmentRepair));
+
+            sheet.Cell(AddressBlockBegin + (5, 6))
+               ._SetValue(GetValue(WellOperationCategory.EmergencyWork));
+
+            sheet.Cell(AddressBlockBegin + (6, 6))
+               ._SetValue(GetValue(WellOperationCategory.Complication));
+
+            sheet.Cell(AddressBlockBegin + (7, 6))
+              ._SetValue(GetValue(WellOperationCategory.OperationsNotIncludedGGD));
+        }
+
+        private string GetValue(int categoryId)
+        {
+            if (OperationsStatistics.TryGetValue(categoryId, out double duration))
+                return $"{duration}";
+            return "0";
+        }
+
+        private string GetCaption(int categoryId)
+        {
+            var caption = OperationCategories.FirstOrDefault(o => o.Id == categoryId)?.Name ?? string.Empty;
+            return caption;
         }
     }
-
 }
 
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs
index a54a8e90..201b1341 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs
@@ -1,15 +1,21 @@
-using AsbCloudApp.Data.DailyReport;
+using AsbCloudApp.Data;
+using AsbCloudApp.Data.DailyReport;
 using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks;
 using ClosedXML.Excel;
+using System.Collections.Generic;
 using System.IO;
 namespace AsbCloudInfrastructure.Services.DailyReport
 {
     public class DailyReportMakerExcel
     {
-        public Stream MakeReportFromBlocks(DailyReportDto dto)
+        private IEnumerable<WellOperationCategoryDto> OperationCategories;
+
+        public Stream MakeReportFromBlocks(DailyReportDto dto, IEnumerable<WellOperationCategoryDto> operationCategories)
         {
+            OperationCategories = operationCategories;
+
             using var workbook = new XLWorkbook();
-            FillExampleBlocks(workbook, dto);            
+            FillExampleBlocks(workbook, dto);
             MemoryStream memoryStream = new MemoryStream();
             workbook.SaveAs(memoryStream, new SaveOptions { });
             memoryStream.Seek(0, SeekOrigin.Begin);
@@ -26,7 +32,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport
             var blockBha = new BhaBlock(addressStart, dto.Bha);
             addressStart = blockBha.AddressBlockEnd + (1, 0);
             addressStart.ColumnNumber = 2;
-            var timeBalance = new TimeBalanceBlock(addressStart, dto.TimeBalance);
+            var timeBalance = new TimeBalanceBlock(addressStart, dto.TimeBalance, OperationCategories);
             addressStart = timeBalance.AddressBlockEnd + (1, 0);
             addressStart.ColumnNumber = 2;
             var blockDimensionless = new DimensionlessBlock(addressStart, dto.NoDrilling);
@@ -47,7 +53,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport
             blockSign.Draw(sheet);
             //sheet.Columns().AdjustToContents();  // Adjust column width
             sheet.Rows().AdjustToContents();
-        }               
+        }
     }
 }
 
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs
index 5a814373..43451215 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs
@@ -180,11 +180,14 @@ namespace AsbCloudInfrastructure.Services.DailyReport
 
         public async Task<Stream?> MakeReportAsync(int idWell, DateTime date, CancellationToken token = default)
         {
+            var wellOperationCategories = wellOperationRepository.GetCategories(true);
+
             var dailyReportDto = await GetOrDefaultAsync(idWell, date, token);
             if (dailyReportDto is null)
                 return null;
 
-            var memoryStream = dailyReportMaker.MakeReportFromBlocks(dailyReportDto);
+            var memoryStream = dailyReportMaker.MakeReportFromBlocks(dailyReportDto, wellOperationCategories);
+
             return memoryStream;
         }
 
@@ -220,12 +223,15 @@ namespace AsbCloudInfrastructure.Services.DailyReport
             var dto = entity.Info.Adapt<DailyReportDto>();
             dto.StartDate = entity.StartDate;
 
-            dto.TimeBalance.OperationsStat = (factOperationsForDtos
-               .Where(o => DateOnly.FromDateTime(o.DateStart) == dto.StartDate)
-               .GroupBy(o => o.IdCategory)
-               .Select(g => new OperationStatDto() { Depth = g.Sum(o => o.DepthEnd - o.DepthStart) }));
+            var dailyFactOperation = factOperationsForDtos
+                .Where(o => DateOnly.FromDateTime(o.DateStart) == dto.StartDate)
+                .Where(o => o.IdParentCategory is not null)
+                .GroupBy(o => o.IdParentCategory!.Value)
+                .ToDictionary(g => g.Key, g => g.Sum(o => o.DurationHours));
 
-            await SetUserNamesToDailyReportDtoAsync(dto, token);
+            dto.TimeBalance.OperationsStat = dailyFactOperation;
+
+           await SetUserNamesToDailyReportDtoAsync(dto, token);
 
             return dto;
         }