/// <summary>
        /// Добавляется элемент в таблицу данных
        /// </summary>
        /// <param name="componentобавляемый агрегат</param>
        /// <param name="previousNumber">Порядковый номер агрегата</param>
        /// <param name="destinationDataSet">Таблица, в которую добавляется элемент</param>
        protected override void AddDetailToDataset(Component component, ref int previousNumber, DetailListDataSet destinationDataSet)
        {
            Lifelength remainsLifelength;
            Lifelength current;
            DateTime?  nextDateTime;

            var ataChapter             = component.ATAChapter;
            var atachapter             = ataChapter.ShortName;
            var atachapterfull         = ataChapter.FullName;
            var partNumber             = component.PartNumber;
            var description            = component.Description;
            var serialNumber           = component.SerialNumber;
            var lastTransferRecord     = component.TransferRecords.GetLast();
            var positionNumber         = lastTransferRecord.Position;
            var instalationDateTime    = lastTransferRecord.TransferDate;
            var installationLifelength = lastTransferRecord.OnLifelength;
            var remarks          = component.Remarks;
            var lifeLimit        = component.LifeLimit;
            var mpdItem          = component.MPDItem;
            var detailDirectives = new List <ComponentDirective>(component.ComponentDirectives.ToArray());

            GlobalObjects.PerformanceCalculator.GetNextPerformance(component);
            current           = GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength((BaseEntityObject)component);
            nextDateTime      = component.NextPerformanceDate;
            remainsLifelength = component.Remains;

            var instalationDate    = UsefulMethods.NormalizeDate(instalationDateTime);
            var installationTsncsn = LifelengthFormatter.GetHoursData(installationLifelength, " hrs\r\n") +
                                     LifelengthFormatter.GetCyclesData(installationLifelength, " cyc\r\n");
            var currentTsncsn = LifelengthFormatter.GetHoursData(current, " hrs\r\n") +
                                LifelengthFormatter.GetCyclesData(current, " cyc\r\n");
            var condition = UsefulMethods.GetColorName(component);
            var nextDate  = nextDateTime != null
                                  ? ((DateTime)nextDateTime).ToString(new GlobalTermsProvider()["DateFormat"].ToString())
                                  : "";
            var componentNumber = (previousNumber++).ToString();

            if (lifeLimit != Lifelength.Null)
            {
                var workType   = "RMV";
                var nextTsncsn = LifelengthFormatter.GetHoursData(lifeLimit, " hrs\r\n") +
                                 LifelengthFormatter.GetCyclesData(lifeLimit, " cyc\r\n");
                var remains = LifelengthFormatter.GetCalendarData(remainsLifelength, " d\r\n") +
                              LifelengthFormatter.GetHoursData(remainsLifelength, " h\r\n") +
                              LifelengthFormatter.GetCyclesData(remainsLifelength, " c\r\n");
                if (remains == "")
                {
                    nextDate   = "";
                    nextTsncsn = "";
                }
                destinationDataSet.ItemsTable.AddItemsTableRow(componentNumber, atachapter, atachapterfull, partNumber, description, serialNumber, positionNumber, "", instalationDate, "", "", workType, nextTsncsn, nextDate, remains, "", condition, "", "", "", "", "", "", mpdItem, installationTsncsn, remarks, currentTsncsn);
                foreach (ComponentDirective t in detailDirectives)
                {
                    AddDetailDirectiveToDatatSet("", "", "", "", "", "", "", "", "", t, ataChapter, destinationDataSet);
                }
            }
            else if (detailDirectives.Count > 0)
            {
                AddDetailDirectiveToDatatSet(componentNumber, mpdItem, partNumber, description, serialNumber, positionNumber, instalationDate, installationTsncsn, currentTsncsn, detailDirectives[0], ataChapter, destinationDataSet);
                for (int i = 1; i < detailDirectives.Count; i++)
                {
                    AddDetailDirectiveToDatatSet("", "", "", "", "", "", "", "", "", detailDirectives[i], ataChapter, destinationDataSet);
                }
            }
            else
            {
                destinationDataSet.ItemsTable.AddItemsTableRow(componentNumber, atachapter, atachapterfull, partNumber, description, serialNumber, positionNumber, "", instalationDate, "", "", "", "", "", "", "", condition, "", "", "", "", "", "", mpdItem, installationTsncsn, remarks, currentTsncsn);
            }
        }