Esempio n. 1
0
        /// <summary>Приложение</summary>
        private void Applications()
        {
            foreach (var one in selections)
            {
                Well well = one.Well;

                ISheet sheet = book.GetSheet("Приложение").CopySheet(well.PresentNumber != string.Empty ? well.PresentNumber : "без_номера");
                Substitute = new CellExchange_Class(sheet);
                //Substitute.AddExchange("{объект}", obj.Adres + ' ' + well.PresentNumber, 0);
                Substitute.AddExchange("{абонент}", client.Detail.FullName, 0);
                Substitute.AddExchange("{колодец}", $"{well.FullName} - {well.PresentNumber}", 0);
                Substitute.AddExchange("{адрес}", (client.Objects.Any() ? obj.Adres.CutAdres(false) : string.Empty), 0);
                Substitute.AddExchange("{номер отбора}", one.FormatNumber, 0);
                {
                    var works = AdditionnTable.GetSigner(data.ETypeTemplate.Extract, "Приложение");
                    Substitute.AddExchange("{должность}", works.Post, 0);
                    Substitute.AddExchange("{фио}", works.FIO, 0);
                }
                tableSelection = new TableSelection(obj, sample);
                tableSelection.CreateTable(SearchCellFromMark(sheet, "{таблица}", false), one);
                tableSelection.Signature(SearchCellFromMark(sheet, "{пример}", false), Substitute);
                Substitute.AddExchange("{полное наименование колодца}", well.FullName + ' ' + well.PresentNumber, 0);
                Substitute.Exchange();
            }
            book.RemoveSheetAt(book.GetSheetIndex("Приложение"));
        }
        private void LoadTitle(SelectionWell selectionWell)
        {
            Substitute = new CellExchange_Class(sheet);
            Accredit accredit = AdditionnTable.GetAccredit();

            Substitute.AddExchange(mark.acred, $"{accredit.Text}\nВыдан {accredit.YMDFrom}", 0);
            Worker work = AdditionnTable.GetSigner(data.ETypeTemplate.Protocol, "Протокол");

            Substitute.AddExchange(mark.fio_nac, work.FIO, 0);
            Substitute.AddExchange(mark.number_prot, selectionWell.FormatNumber, 0);
            Substitute.AddExchange(mark.abon, selectionWell.Objecte.Client.Detail.FullName, 0);
            Substitute.AddExchange(mark.yr_adr, Helpers.LogicHelper.AdresLogic.FirstModel(selectionWell.Objecte.Client.Detail.AdresLegalID).Adr.CutAdres(false), 0);
            Substitute.AddExchange(mark.type_well, G.TypeWell.Rows.Get <string>(selectionWell.Well.TypeWellID, C.TypeWell.FullName), 0);
            Substitute.AddExchange(mark.select_adr, selectionWell.Objecte.Adres.CutAdres(false), 0);
            Substitute.AddExchange(mark.date_select, MyTools.StringDate_From_YMDHMS(selectionWell.YMDHM, MyTools.EInputDate.YMDHM, MyTools.EInputDate.YMD), 0);
            Substitute.AddExchange(mark.time_select, MyTools.StringDate_From_YMDHMS(selectionWell.YMDHM, MyTools.EInputDate.YMDHM, MyTools.EInputDate.YMDHM), 0);
            Substitute.AddExchange(mark.repres, new Representative(selectionWell.Sample.RepresentativeID).Post_FIO, 0);
            Substitute.AddExchange(mark.year, DateControl_Class.SelectYear, 0);
            MonthYear();
            NumberFolder(_selectionWells.Select(x => x.Objecte.NumberFolder).ToArray());
            work = AdditionnTable.GetSigner(data.ETypeTemplate.Protocol, "Протокол");
            Substitute.AddExchange(mark.fio, work.FIO, 0);
            Substitute.AddExchange(mark.job, work.Post, 0);
            int day, month;

            MyTools.Y_M_D_From_YMD(StaticDate.SelectDate, out month, out month, out day);
            Substitute.AddExchange(mark.day, day, 0);
            Substitute.AddExchange(mark.month, MyTools.Month_From_M_C_R(month, Reg: MyTools.ERegistor.ToLower), 0);
            Substitute.AddExchange(mark._month, month.ToString("00"), 0);
            Substitute.Exchange();
        }
Esempio n. 3
0
        private void LoadTitle()
        {
            sheet      = book.GetSheet("Титульник");
            Substitute = new CellExchange_Class(sheet);
            Worker worker = AdditionnTable.GetSigner(data.ETypeTemplate.Journal, "Титульник");

            Substitute.AddExchange(mark.fio, worker.FIO, 1);
            Substitute.AddExchange(mark.job, worker.Post, 1);

            Substitute.Exchange();
        }
Esempio n. 4
0
        /// <summary>Заполнение текста из базы</summary>
        /// <param name="ListName">имя листа</param>
        protected void LoadTextTemplate(ISheet sheet, string ListName, int count = 0)
        {
            CellExchange_Class ex = new CellExchange_Class(sheet);

            foreach (var one in TemplateStorage.textFromTP.Where(x => x.ListName == ListName))
            {
                var        texts    = one.Text.Split('\n').ToList();
                ICellStyle defStyle = null;
                IRow       Defrow   = SearchRowFromMark(sheet, one.ThisTemplate);
                if (texts.FirstOrDefault(x => x.Contains(StyleTarget.DefStyle)) != null)
                {
                    defStyle = LoadStyle(texts.First(x => x.Contains(StyleTarget.DefStyle)));
                    texts.Remove(texts.First(x => x.Contains(StyleTarget.DefStyle)));
                }
                if (texts.Count > 1)
                {
                    foreach (var text in texts)
                    {
                        Defrow = Defrow.CopyRowTo(Defrow.RowNum + 1);
                        IRow   row    = sheet.GetRow(Defrow.RowNum - 1);
                        string stroka = text;
                        if (text.Contains(StyleTarget.Style))
                        {
                            ICellStyle style = LoadStyle(text.Substring(text.IndexOf(StyleTarget.Style)));
                            foreach (var cell in row.Cells)
                            {
                                cell.CellStyle = style;
                            }
                            stroka = text.Substring(0, text.IndexOf(StyleTarget.Style));
                        }
                        else if (defStyle != null)
                        {
                            foreach (var cell in row.Cells)
                            {
                                cell.CellStyle = defStyle;
                            }
                        }
                        stroka = stroka.StringDivision(80);
                        ex.AddExchange(one.ThisTemplate, (e) => e.Row.Height = (short)(300 / 11 * 12 * stroka.Split('\n').Length), 1);
                        ex.AddExchange(one.ThisTemplate, stroka, 1);
                    }
                }
                else
                {
                    ex.AddExchange(one.ThisTemplate, one.Text, count);
                }
                ex.AddExchange(one.ThisTemplate, (e) => { sheet.RemoveRow(e.Row); }, 1);
            }
            ex.Exchange();
        }
Esempio n. 5
0
        /// <summary>Обработка письма</summary>
        private void Letter()
        {
            Substitute = new CellExchange_Class(book.GetSheet("Письмо"));
            ClientName(client);
            ObjectAdres(obj, true);
            MonthYearSelect();
            NumberFolder(obj.NumberFolder);
            Substitute.AddExchange("{год месячного объёма}", DateControl_Class.SelectYear - 1, 0);
            Substitute.AddExchange("{листов}", selections.Length, 0);
            NumberFolder(obj.NumberFolder);
            var works = AdditionnTable.GetSigner(data.ETypeTemplate.Extract, "Письмо");

            Substitute.AddExchange("{должность}", works.Post, 0);
            Substitute.AddExchange("{фио}", works.FIO, 0);
            Substitute.Exchange();
        }
Esempio n. 6
0
        private void Letter()
        {
            sheet = book.GetSheet("Письмо");
            if (!R621 && !R644)
            {
                book.RemoveSheetAt(book.GetSheetIndex("Письмо"));
                return;
            }
            Substitute = new CellExchange_Class(sheet);
            ClientName(obj.Client);
            ObjectAdres(obj, true);
            MonthYearSelect();

            NumberFolder(obj.NumberFolder);

            var worker = AdditionnTable.GetSigner(data.ETypeTemplate.CalculationFees, "Письмо");

            Substitute.AddExchange(mark.job, worker.Post, 1);
            Substitute.AddExchange(mark.fio, worker.FIO, 1);

            int Radder621 = SearchRowFromMark(sheet, mark.adder621).RowNum;

            Resolution resolution = PollutionBase_Class.AllResolution.First(x => x.CurtName.Contains("621"));

            ResolutionClarify(resolution, R621);
            if (R621)
            {
                Substitute.AddExchange(mark.adder621, GetNormDoc(resolution), 1);
            }
            else
            {
                Substitute.AddExchange(mark.adder621, e => { e.Row.ZeroHeight = true; }, 1);
            }

            resolution = PollutionBase_Class.AllResolution.First(x => x.CurtName.Contains("644"));
            ResolutionClarify(resolution, R644);
            if (R644)
            {
                Substitute.AddExchange(mark.adder644, GetNormDoc(resolution), 1);
            }
            else
            {
                Substitute.AddExchange(mark.adder644, e => { e.Row.ZeroHeight = true; }, 1);
            }
            Substitute.Exchange();
            ResizeHeight(sheet, Radder621, Radder621 + 3);
        }
Esempio n. 7
0
        protected override void internalStart()
        {
            {
                CP = new Control_Print();
                CP.Elems.SetRowFromGrid(MyTools.GL_Auto);
                var DateSelect = new DateSelector(_negotiationAssistant.YMD);
                CP.Elems.SetFromGrid(DateSelect.View);
                CP.ShowDialog();

                if (_negotiationAssistant.WorkerID == 0)
                {
                    MessageBox.Show("Не выбран пробоотборщик!");
                    return;
                }

                _negotiationAssistant.YMD = MyTools.YMD_From_DateTime(DateSelect.dateTime);
            }

            Objecte  obj     = _negotiationAssistant.Objecte;
            Accredit acc     = AdditionnTable.GetAccredit();
            string   sampler = _negotiationAssistant.Worker.Post_FIO;

            foreach (var one in obj.Wells)
            {
                book       = TemplateStorage.WorkBook;
                Substitute = new CellExchange_Class(book.GetSheetAt(0));
                var Details = obj.Client.Detail;
                Substitute.AddExchange("{абонент}", Details.FullName, 0);
                if (obj.Separate)
                {
                    Substitute.AddExchange("{юридический адрес}", obj.Detail.LegalAdres, 0);
                }
                else
                {
                    Substitute.AddExchange("{юридический адрес}", Helpers.LogicHelper.AdresLogic.FirstModel(Details.AdresLegalID).Adr, 0);
                }
                Substitute.AddExchange("{тип колодца}", new TypeWell(one.TypeWellID).FullName + " " + new TypeWell(one.TypeWellID).CurtName + '-' + one.Number, 0);
                Substitute.AddExchange("{место отбора}", obj.Adres.CutAdres(false), 0);
                Substitute.AddExchange("{аккредитация}", acc.Text, 0);
                Substitute.AddExchange("{дата аккредитации}", acc.YMDFrom, 0);
                Substitute.AddExchange("{пробоотборщик}", sampler, 0);
                //Substitute.AddExchange("{представитель абонента}", sample == null ? string.empty : sample.IDRepresentative > 0 ? new Representative(sample.IDRepresentative).Post_FIO : string.empty, 0);
                Substitute.Exchange();
                Print("Акты", "акт отбора пробы " + new TypeWell(one.TypeWellID).FullName + ' ' + one.Number, EPathPrint.Documents);
            }
        }
Esempio n. 8
0
        private void LoadCap(string name)
        {
            Substitute = new CellExchange_Class(sheet);
            Substitute.AddExchange("{месяц}", MyTools.Month_From_M_C_R(MyTools.M_From_YM(DateControl_Class.SelectMonth), Reg: MyTools.ERegistor.ToLower), 0);
            Substitute.AddExchange("{год}", DateControl_Class.SelectYear, 0);
            MonthYear();

            Worker workers = AdditionnTable.GetSigner(data.ETypeTemplate.Registry, "директор");

            Substitute.AddExchange("{должность директора}", workers.Post, 0);
            Substitute.AddExchange("{фио директора}", workers.rFIO, 0);
            workers = AdditionnTable.GetSigner(data.ETypeTemplate.Registry, "подписывающий");
            Substitute.AddExchange("{должность}", workers.Post, 0);
            Substitute.AddExchange("{фио}", workers.FIO, 0);
            LoadTextTemplate(sheet, name, 1);
            Substitute.AddExchange("{итоговая сумма}", summa.ToMoney(), 0);
            Substitute.Exchange();
        }
Esempio n. 9
0
        private void LoadTable()
        {
            sheet      = book.GetSheet("Таблица");
            Substitute = new CellExchange_Class(sheet);
            IRow row = SearchRowFromMark(sheet, StaticMark.abonent, false);

            var selectionWells = Helpers.LogicHelper.SelectionWellLogic.Find(DateControl_Class.SelectMonth, 1);

            foreach (var selectionWell in selectionWells)
            {
                sheet.ShiftRows(row.RowNum + 3, sheet.LastRowNum, 0);
                row.CopyRowTo(row.RowNum + 3);
                sheet.GetRow(row.RowNum + 1).CopyRowTo(row.RowNum + 4);
                sheet.GetRow(row.RowNum + 2).CopyRowTo(row.RowNum + 5);
            }

            foreach (var selectionWell in selectionWells.OrderBy(x => x.Number))
            {
                Client client = selectionWell.Objecte.Client;

                ClientName(client, false);
                WellNumber(selectionWell);
                Substitute.AddExchange(mark.number_sample,
                                       $"{selectionWell.Number}-С-{MyTools.YearMonth_From_YM(MyTools.YM_From_YMDHM(selectionWell.YMDHM), MyTools.EDateTimeTypes.DivisionSymbol, DivisionSymbol: "/")}",
                                       1);
                row            = SearchRowFromMark(sheet, "{таблица}");
                tableSelection = new TableSelection(selectionWell.Objecte, selectionWell.Sample);
                tableSelection.CreateTable(SearchCellFromMark(sheet, "{таблица}", false), selectionWell);
            }

            tableSelection.Signature(SearchCellFromMark(sheet, "{пример}", false), Substitute);
            ResizeWidth(sheet, MyTools.ETypeFormatBook.Horizontal, tableSelection.table);
            MonthYearSelect();
            Worker worker = AdditionnTable.GetSigner(data.ETypeTemplate.Journal, "Таблица");

            Substitute.AddExchange(mark.fio, worker.FIO, 1);
            Substitute.AddExchange(mark.job, worker.Post, 1);
            Substitute.Exchange();
        }
Esempio n. 10
0
        protected override void internalStart()
        {
            Objecte obj = _negotiationAssistant.Objecte;

            book = TemplateStorage.WorkBook;

            Substitute = new CellExchange_Class(book.GetSheetAt(0));
            ClientName(_negotiationAssistant.Objecte.Client);
            NumberFolder(obj.NumberFolder);

            #region Подписывающий
            var works = AdditionnTable.GetSigner(data.ETypeTemplate.LetterNotification, "Письмо");
            Substitute.AddExchange("{должность}", works.Post, 0);
            Substitute.AddExchange("{ФИО}", works.FIO, 0);
            #endregion

            #region адрес/дата
            ObjectAdres(obj, true);
            CP = new Control_Print();
            CP.Elems.SetRowFromGrid(MyTools.GL_Auto);
            var DateSelect = new DateSelector(_negotiationAssistant.YMD);
            CP.Elems.SetFromGrid(DateSelect.View);
            CP.ShowDialog();

            if (DateSelect.dateTime == null)
            {
                return;
            }

            _negotiationAssistant.YMD = MyTools.YMD_From_DateTime(DateSelect.dateTime);
            Substitute.AddExchange("{дата отбора}", MyTools.YearMonthDay_From_YMD(DateSelect.dateTime), 0);
            #endregion

            Substitute.AddExchange("{адрес отбора}", obj.Adres, 0);
            Substitute.Exchange();
            Print("Письма", "Письмо", EPathPrint.Documents);
        }
Esempio n. 11
0
        private void LoadTitle()
        {
            Substitute = new CellExchange_Class(sheet);

            ClientName(this._selectionWell.Objecte.Client, false);
            ClientAdres(this._selectionWell.Objecte.Client, false);
            ObjectAdres(this._selectionWell.Objecte, false);
            Substitute.AddExchange(mark.period,
                                   $"{MyTools.YearMonth_From_YM(StartYM, MyTools.EDateTimeTypes.BeautifulWords)} - {MyTools.YearMonth_From_YM(StartYM + MonthCount - 1, MyTools.EDateTimeTypes.BeautifulWords)}",
                                   0);
            Worker worker = AdditionnTable.GetSigner(data.ETypeTemplate.InspectionResult, "Результат");

            Substitute.AddExchange(mark.fio, worker.FIO, 0);
            Substitute.AddExchange(mark.job, worker.Post, 0);
            sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(8, 8, 6, 8 + (MonthCount > 6 ? MonthCount / 2 : 0) + (ShowNorms ? 2 : 0)));

            Substitute.Exchange();
            int span = 2 + MonthCount + (ShowNorms ? 2 : 0);

            for (int i = 0; i < 5; i++)
            {
                sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(i, i, 0, span));
            }
        }
Esempio n. 12
0
        public static bool OtchProtokolType1(Protokols_class.SGroup_class.Protokol_class Protokol, bool CreateNew = true, bool Open = true)
        {
            {
                var MsgErr = "";

                for (int i = 0; i < Protokol.MarkCount; i++)
                {
                    var PAMIndex = -1;

                    for (int j = 0; j < Protokol.SampleCount; j++)
                    {
                        if (Protokol[j][i].LocalAlow && Protokol[j][i].Method.Length > 0)
                        {
                            if (PAMIndex < 0)
                            {
                                PAMIndex = j;
                            }
                            else if (Protokol[j][i].Method != Protokol[PAMIndex][i].Method)
                            {
                                MsgErr += '\n' + Protokol[j][i].Mark + " имеет различные методы у нормативов " + T.Object.Rows.Get <string>(Protokol[j].ObjectID, C.Object.Norm, C.Norm.Name) + " и " + T.Object.Rows.Get <string>(Protokol[PAMIndex].ObjectID, C.Object.Norm, C.Norm.Name);
                            }
                        }
                    }
                }

                if (MsgErr.Length > 0)
                {
                    MessageBox.Show(MsgErr, "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }
            }

            string NewFileName;

            {
                int Month, Year;

                ATMisc.GetYearMonthFromYM(Protokol.Parent.YM, out Year, out Month);

                {
                    NewFileName = Application.StartupPath + "\\Отчеты\\";

                    if (!Directory.Exists(NewFileName))
                    {
                        Directory.CreateDirectory(NewFileName);
                    }

                    NewFileName += T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + "\\";

                    if (!Directory.Exists(NewFileName))
                    {
                        Directory.CreateDirectory(NewFileName);
                    }

                    NewFileName += ATMisc.GetMonthName1(Month) + "\\";

                    if (!Directory.Exists(NewFileName))
                    {
                        Directory.CreateDirectory(NewFileName);
                    }
                }

                NewFileName += ProtokolFileName(Protokol);
            }

            if (CreateNew || !File.Exists(NewFileName))
            {
                var WorkBook = ATMisc.GetGenericExcel("Протокол испытаний тип 1.xls");

                if (WorkBook == null)
                {
                    return(false);
                }

                var TitleSheet = WorkBook.GetSheet("Заголовок");
                NPOI.SS.UserModel.ISheet ByPodrSheet;

                if (TitleSheet == null)
                {
                    MessageBox.Show("В шаблоне не найден лист \"Заголовок\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }

                if (Protokol.MarkCount == 0)
                {
                    MessageBox.Show("Заполненые показатели не найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }

                var Font = WorkBook.CreateFont();
                Font.Color              = NPOI.HSSF.Util.HSSFColor.OliveGreen.Index;
                Font.IsStrikeout        = false;
                Font.FontHeightInPoints = 11;
                Font.FontName           = "Times New Roman";
                Font.Color              = short.MaxValue;

                var StyleLRTD_CC = WorkBook.CreateCellStyle();
                StyleLRTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRTD_CC.SetFont(Font);
                StyleLRTD_CC.WrapText = true;

                var ExpStyle = WorkBook.CreateCellStyle();
                ExpStyle.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                ExpStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                ExpStyle.SetFont(Font);
                ExpStyle.WrapText   = true;
                ExpStyle.DataFormat = WorkBook.CreateDataFormat().GetFormat("0.00E+00");

                var StyleLRTD_LC = WorkBook.CreateCellStyle();
                StyleLRTD_LC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Left;
                StyleLRTD_LC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRTD_LC.SetFont(Font);
                StyleLRTD_LC.WrapText = true;

                var StyleLRD_CC = WorkBook.CreateCellStyle();
                StyleLRD_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRD_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLRD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRD_CC.SetFont(Font);
                StyleLRD_CC.WrapText = true;

                var StyleLRT_CC = WorkBook.CreateCellStyle();
                StyleLRT_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRT_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRT_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRT_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLRT_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRT_CC.SetFont(Font);
                StyleLRT_CC.WrapText = true;

                var StyleRTD_CC = WorkBook.CreateCellStyle();
                StyleRTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleRTD_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleRTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleRTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleRTD_CC.SetFont(Font);
                StyleRTD_CC.WrapText = true;

                var StyleLTD_CC = WorkBook.CreateCellStyle();
                StyleLTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLTD_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLTD_CC.SetFont(Font);
                StyleLTD_CC.WrapText = true;

                var StyleTD_CC = WorkBook.CreateCellStyle();
                StyleTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleTD_CC.SetFont(Font);
                StyleTD_CC.WrapText = true;

                string UnDeleteSheetName;
                var    AddInSheetName = T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.PSG, C.PSG.Name);
                var    NormID         = Protokol[0].NormID;

                var ObjectsLocations = Protokol.ObjectsLocations;

                switch (Protokol.SGroup)
                {
                case data.SGroup.Middle1:

                    UnDeleteSheetName = "Усредненный";
                    {
                        int Index = WorkBook.GetSheetIndex(UnDeleteSheetName);
                        ByPodrSheet = WorkBook.GetSheetAt(Index);
                        WorkBook.SetSheetName(Index, "Концентрации");
                    }

                    if (ByPodrSheet == null)
                    {
                        MessageBox.Show("В шаблоне не найден лист \"" + UnDeleteSheetName + "\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return(false);
                    }

                    var Exchange = new CellExchange_Class(ByPodrSheet);
                    {
                        var NumC  = new ATMisc.CellMark_struct("{номер}");
                        var NameC = new ATMisc.CellMark_struct("{имя точки отбора}");
                        var MarkC = new ATMisc.CellMark_struct("{показатели}");
                        var SMC   = new ATMisc.CellMark_struct("{концентрации}");

                        Exchange.AddExchange(NumC.Mark, (Cell) => { NumC.ColumnIndex = Cell.ColumnIndex; NumC.RowIndex = Cell.RowIndex; }, 1);
                        Exchange.AddExchange(NameC.Mark, (Cell) => { NameC.ColumnIndex = Cell.ColumnIndex; NameC.RowIndex = Cell.RowIndex; }, 1);
                        Exchange.AddExchange(MarkC.Mark, (Cell) => { MarkC.ColumnIndex = Cell.ColumnIndex; MarkC.RowIndex = Cell.RowIndex; }, 1);
                        Exchange.AddExchange(SMC.Mark, (Cell) => { SMC.ColumnIndex = Cell.ColumnIndex; SMC.RowIndex = Cell.RowIndex; }, 1);

                        Exchange.Exchange();

                        if (!NumC.Check() || !NameC.Check() || !MarkC.Check() || !SMC.Check())
                        {
                            return(false);
                        }

                        if (MarkC.ColumnIndex != SMC.ColumnIndex)
                        {
                            MessageBox.Show("Метки показатели и концентрации должны распологаться в одной колонке", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            return(false);
                        }

                        if (MarkC.RowIndex > SMC.RowIndex)
                        {
                            MessageBox.Show("Метка показателей добжна распологаться выше метки концентраций", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            return(false);
                        }

                        if (NumC.RowIndex != NameC.RowIndex || NameC.RowIndex != SMC.RowIndex)
                        {
                            MessageBox.Show("Метки номер, имя точки отбора и концентрации, должны распологаться на одной строке", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            return(false);
                        }

                        if (Protokol.MarkCount > 1)
                        {
                            var MRow  = ByPodrSheet.GetRow(MarkC.RowIndex);
                            var SMRow = ByPodrSheet.GetRow(SMC.RowIndex);

                            var MStyle  = MRow.GetCell(MarkC.ColumnIndex).CellStyle;
                            var SMStyle = SMRow.GetCell(SMC.ColumnIndex).CellStyle;

                            ATMisc.BreakColumn(ByPodrSheet, MarkC.ColumnIndex, Protokol.MarkCount);

                            for (int i = 0; i < ByPodrSheet.NumMergedRegions; i++)
                            {
                                var mrg = ByPodrSheet.GetMergedRegion(i);

                                if ((mrg.FirstRow <= SMC.RowIndex && mrg.LastRow >= SMC.RowIndex ||
                                     (mrg.FirstRow <= MarkC.RowIndex && mrg.LastRow >= MarkC.RowIndex)) &&
                                    mrg.FirstColumn <= MarkC.ColumnIndex && mrg.LastColumn >= MarkC.ColumnIndex)
                                {
                                    ByPodrSheet.RemoveMergedRegion(i);
                                    i--;
                                }
                            }


                            for (int i = 0; i < Protokol.MarkCount; i++)
                            {
                                {
                                    var Cell = MRow.GetCell(MarkC.ColumnIndex + i);

                                    if (Cell == null)
                                    {
                                        Cell = MRow.CreateCell(MarkC.ColumnIndex + i);
                                    }

                                    Cell.CellStyle = MStyle;
                                }
                                {
                                    var Cell = SMRow.GetCell(SMC.ColumnIndex + i);

                                    if (Cell == null)
                                    {
                                        Cell = SMRow.CreateCell(SMC.ColumnIndex + i);
                                    }

                                    Cell.CellStyle = MStyle;
                                }
                            }
                        }

                        Exchange.AddColumn(NumC.RowIndex, NumC.ColumnIndex);
                        Exchange.AddColumn(NameC.RowIndex, NameC.ColumnIndex);

                        var Row = ByPodrSheet.GetRow(MarkC.RowIndex);

                        for (int i = 0; i < Protokol.MarkCount; i++)
                        {
                            Row.GetCell(MarkC.ColumnIndex + i).SetCellValue(Protokol.GetMarkName(i) + ", " + Protokol.GetMarkEdType(i));

                            Exchange.AddColumn(SMC.RowIndex, SMC.ColumnIndex + i);
                        }

                        Exchange.CheckTableColumns();
                    }

                    for (int i = 0; i < Protokol.TableCount; i++)
                    {
                        var Values = new object[2 + Protokol.MarkCount];

                        Values[0] = i + 1;
                        Values[1] = Protokol.GetTableName(i);

                        for (int j = 0; j < Protokol.MarkCount; j++)
                        {
                            if (Protokol.IsSpetialOut(j, i, false))
                            {
                                Values[2 + j] = Protokol.GetSpetialOut(j, i);
                            }
                            else
                            {
                                Values[2 + j] = Protokol.GetMarkAmount(j, i);
                            }
                        }

                        Exchange.SetRow(Values);
                    }
                    break;

                case data.SGroup.NotGroup1:
                {
                    ObjectsLocations = Protokol[0].SPointName;

                    UnDeleteSheetName = "Изначальный";
                    {
                        int Index = WorkBook.GetSheetIndex(UnDeleteSheetName);
                        ByPodrSheet = WorkBook.GetSheetAt(Index);
                        WorkBook.SetSheetName(Index, "Концентрации");
                    }

                    if (ByPodrSheet == null)
                    {
                        MessageBox.Show("В шаблоне не найден лист \"" + UnDeleteSheetName + "\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return(false);
                    }

                    var OEdTypeIndex   = new SColumn_struct(-1, null);
                    var OMethodIndex   = new SColumn_struct(-1, null);
                    var OMarkNameIndex = new SColumn_struct(-1, null);
                    var NumberIndex    = new SColumn_struct(-1, null);
                    var ResultIndex    = new SColumn_struct(-1, null);
                    var LimitIndex     = new SColumn_struct(-1, null);

                    int RowIndex = -1;
                    {
                        var OEdTypeRowIndex   = -1;
                        var OMethodRowIndex   = -1;
                        var OMarkNameRowIndex = -1;
                        var NumberRowIndex    = -1;
                        var ResultRowIndex    = -1;
                        var LimitRowIndex     = -1;

                        var ExistColumn = new CellExchange_Class(ByPodrSheet);

                        ExistColumn.AddExchange("{Метка пробы}", "№ " + T.Sample.Rows.Get <string>(Protokol[0].SampleID, C.Sample.Number), 5);
                        if (NormID > 0)
                        {
                            ExistColumn.AddExchange("{Норматив}", T.Norm.Rows.Get <string>(NormID, C.Norm.Name), 5);
                        }
                        ExistColumn.AddExchange("{номер п/п}", (Cell) =>
                            {
                                NumberRowIndex = Cell.RowIndex;
                                NumberIndex    = new SColumn_struct(Cell);
                            }, 5);
                        ExistColumn.AddExchange("{показатель}", (Cell) =>
                            {
                                OMarkNameRowIndex = Cell.RowIndex;
                                OMarkNameIndex    = new SColumn_struct(Cell);
                            }, 5);
                        ExistColumn.AddExchange("{ед.изм.}", (Cell) =>
                            {
                                OEdTypeRowIndex = Cell.RowIndex;
                                OEdTypeIndex    = new SColumn_struct(Cell);
                            }, 5);
                        ExistColumn.AddExchange("{методика}", (Cell) =>
                            {
                                OMethodRowIndex = Cell.RowIndex;
                                OMethodIndex    = new SColumn_struct(Cell);
                            }, 5);
                        ExistColumn.AddExchange("{результат}", (Cell) =>
                            {
                                ResultRowIndex = Cell.RowIndex;
                                ResultIndex    = new SColumn_struct(Cell);

                                CopyStyleFromCell(ExpStyle, Cell);
                            }, 5);
                        ExistColumn.AddExchange("{лимит}", (Cell) =>
                            {
                                LimitRowIndex = Cell.RowIndex;
                                LimitIndex    = new SColumn_struct(Cell);
                            }, 5);


                        ExistColumn.Exchange(0, 25, 0, 25);

                        if (NumberRowIndex == -1 || OMarkNameRowIndex == -1 || OEdTypeRowIndex == -1 || OMethodRowIndex == -1 || ResultRowIndex == -1)
                        {
                            MessageBox.Show("Не все табличные метки найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            return(false);
                        }

                        if (LimitRowIndex > -1 && LimitRowIndex != NumberRowIndex || NumberRowIndex != OMarkNameRowIndex || OMarkNameRowIndex != OEdTypeRowIndex || OEdTypeRowIndex != OMethodRowIndex || OMethodRowIndex != ResultRowIndex)
                        {
                            MessageBox.Show("Все табличные метки должны распологаться в одной строке.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            return(false);
                        }

                        if (NormID == 0 && LimitRowIndex > -1)
                        {
                            ByPodrSheet.SetColumnWidth(ResultIndex.Index, ByPodrSheet.GetColumnWidth(ResultIndex.Index) + ByPodrSheet.GetColumnWidth(LimitIndex.Index));
                            ByPodrSheet.SetColumnHidden(LimitIndex.Index, true);
                        }

                        RowIndex = NumberRowIndex;
                    }

                    ByPodrSheet.ShiftRows(RowIndex, ByPodrSheet.LastRowNum, Protokol.MarkCount - 1);

                    int ONumber = 0;

                    for (int i = 0; i < Protokol.MarkCount; i++)
                    {
                        var Row = ByPodrSheet.CreateRow(RowIndex++);

                        if (RowIndex > -1)
                        {
                            ATMisc.SetValue(Row, ++ONumber, NumberIndex.Index, NumberIndex.Style);
                        }

                        if (LimitIndex.Index > -1)
                        {
                            var Norm = RCache.Marks[Protokol.GetMarkID(i)].GetNorm(Protokol[0].NormID);

                            switch (Norm.NType)
                            {
                            case data.NType.Mark:
                                ATMisc.SetValue(Row, Norm.Range.Range, LimitIndex.Index, LimitIndex.Style);
                                break;

                            case data.NType.PodrV:
                            case data.NType.PodrK:
                            case data.NType.PodrAll:
                                var PIndex = RCache.Marks.Norms.GetPodrIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Podr));
                                ATMisc.SetValue(Row, Norm.Station(PIndex).Range, LimitIndex.Index, LimitIndex.Style);
                                break;

                            case data.NType.Volume:
                                var VIndex = RCache.Marks.Norms.GetVolumeIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Object, C.Object.OLocationFrom));
                                ATMisc.SetValue(Row, Norm.Volume(VIndex).Range, LimitIndex.Index, LimitIndex.Style);
                                break;
                            }
                        }

                        if (Protokol.IsSpetialOut(i))
                        {
                            ATMisc.SetValue(Row, Protokol.GetSpetialOut(i), ResultIndex.Index, ResultIndex.Style);
                        }
                        else
                        {
                            ATMisc.SetValue(Row, Protokol.GetMarkAmount(i), ResultIndex.Index, ResultIndex.Style);
                        }

                        ATMisc.SetValue(Row, Protokol.GetMethod(i), OMethodIndex.Index, OMethodIndex.Style);
                        ATMisc.SetValue(Row, Protokol.GetMarkName(i), OMarkNameIndex.Index, OMarkNameIndex.Style);
                        ATMisc.SetValue(Row, Protokol.GetMarkEdType(i), OEdTypeIndex.Index, OEdTypeIndex.Style);
                    }
                }
                break;

                case data.SGroup.Group1:
                {
                    UnDeleteSheetName = "Изначальный";
                    {
                        int Index = WorkBook.GetSheetIndex(UnDeleteSheetName);
                        ByPodrSheet = WorkBook.GetSheetAt(Index);
                        WorkBook.SetSheetName(Index, "Концентрации");
                    }

                    if (ByPodrSheet == null)
                    {
                        MessageBox.Show("В шаблоне не найден лист \"" + UnDeleteSheetName + "\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return(false);
                    }

                    var OEdTypeIndex   = new SColumn_struct(-1, null);
                    var OMethodIndex   = new SColumn_struct(-1, null);
                    var OMarkNameIndex = new SColumn_struct(-1, null);
                    var NumberIndex    = new SColumn_struct(-1, null);
                    var ResultIndex    = new SColumn_struct(-1, null);
                    var ProbeIndex     = new SColumn_struct(-1, null);
                    var LimitIndex     = new SColumn_struct(-1, null);
                    int ProbeRowIndex  = -1;
                    int RowIndex       = -1;
                    {
                        var OEdTypeRowIndex   = -1;
                        var OMethodRowIndex   = -1;
                        var OMarkNameRowIndex = -1;
                        var NumberRowIndex    = -1;
                        var ResultRowIndex    = -1;
                        var LimitRowIndex     = -1;

                        var ExistColumn = new CellExchange_Class(ByPodrSheet);

                        if (NormID > 0)
                        {
                            ExistColumn.AddExchange("{Норматив}", T.Norm.Rows.Get <string>(NormID, C.Norm.Name), 5);
                        }
                        ExistColumn.AddExchange("{Метка пробы}", (Cell) =>
                            {
                                ProbeRowIndex = Cell.RowIndex;
                                ProbeIndex    = new SColumn_struct(Cell);
                            }, 5);
                        ExistColumn.AddExchange("{номер п/п}", (Cell) =>
                            {
                                NumberRowIndex = Cell.RowIndex;
                                NumberIndex    = new SColumn_struct(Cell);
                            }, 5);
                        ExistColumn.AddExchange("{показатель}", (Cell) =>
                            {
                                OMarkNameRowIndex = Cell.RowIndex;
                                OMarkNameIndex    = new SColumn_struct(Cell);
                            }, 5);
                        ExistColumn.AddExchange("{ед.изм.}", (Cell) =>
                            {
                                OEdTypeRowIndex = Cell.RowIndex;
                                OEdTypeIndex    = new SColumn_struct(Cell);
                            }, 5);
                        ExistColumn.AddExchange("{методика}", (Cell) =>
                            {
                                OMethodRowIndex = Cell.RowIndex;
                                OMethodIndex    = new SColumn_struct(Cell);
                            }, 5);
                        ExistColumn.AddExchange("{результат}", (Cell) =>
                            {
                                ResultRowIndex = Cell.RowIndex;
                                ResultIndex    = new SColumn_struct(Cell);

                                CopyStyleFromCell(ExpStyle, Cell);

                                ExpStyle.DataFormat = WorkBook.CreateDataFormat().GetFormat("0.00E+00");
                            }, 5);
                        ExistColumn.AddExchange("{лимит}", (Cell) =>
                            {
                                LimitRowIndex = Cell.RowIndex;
                                LimitIndex    = new SColumn_struct(Cell);
                            }, 5);

                        ExistColumn.Exchange(0, 25, 0, 25);

                        if (ProbeRowIndex == -1 || NumberRowIndex == -1 || OMarkNameRowIndex == -1 || OEdTypeRowIndex == -1 || OMethodRowIndex == -1 || ResultRowIndex == -1)
                        {
                            MessageBox.Show("Не все табличные метки найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            return(false);
                        }

                        if (LimitRowIndex > -1 && LimitRowIndex != NumberRowIndex || NumberRowIndex != OMarkNameRowIndex || OMarkNameRowIndex != OEdTypeRowIndex || OEdTypeRowIndex != OMethodRowIndex || OMethodRowIndex != ResultRowIndex)
                        {
                            MessageBox.Show("Все табличные метки должны распологаться в одной строке.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            return(false);
                        }

                        if (LimitRowIndex > -1)
                        {
                            ByPodrSheet.SetColumnWidth(ResultIndex.Index, ByPodrSheet.GetColumnWidth(ResultIndex.Index) + ByPodrSheet.GetColumnWidth(LimitIndex.Index));
                            ByPodrSheet.SetColumnHidden(LimitIndex.Index, true);
                        }

                        RowIndex = NumberRowIndex;
                    }

                    ByPodrSheet.ShiftRows(RowIndex, ByPodrSheet.LastRowNum, Protokol.MarkCount - 1);

                    int Width = ByPodrSheet.GetColumnWidth(ResultIndex.Index) / Protokol.SampleCount;
                    ByPodrSheet.AddMergedRegion(new CellRangeAddress(RowIndex - 2, RowIndex - 2, ResultIndex.Index, ResultIndex.Index + Protokol.SampleCount - 1));

                    {
                        var Row = ByPodrSheet.GetRow(ProbeRowIndex);

                        //проверяю одинаковые ли типы воды, если да, тогда проверяю одинаковые ли места, если нет то пишу места, если да, то пишу тип

                        for (int j = 1; j < Protokol.SampleCount; j++)
                        {
                            if (T.Object.Rows.Get_UnShow <uint>(Protokol[j].ObjectID, C.Object.OType) != T.Object.Rows.Get_UnShow <uint>(Protokol[0].ObjectID, C.Object.OType))
                            {
                                goto UseOType;
                            }
                        }

                        for (int j = 1; j < Protokol.SampleCount; j++)
                        {
                            if (T.Object.Rows.Get_UnShow <uint>(Protokol[j].ObjectID, C.Object.OLocationTo) == T.Object.Rows.Get_UnShow <uint>(Protokol[0].ObjectID, C.Object.OLocationTo))
                            {
                                goto UseOType;
                            }
                        }

                        for (int j = 0; j < Protokol.SampleCount; j++)
                        {
                            ByPodrSheet.SetColumnWidth(ResultIndex.Index + j, Width);
                            ATMisc.SetValue(Row, T.Object.Rows.Get <string>(Protokol[j].ObjectID, C.Object.OLocationTo, C.OLocation.Name), ProbeIndex.Index + j, ProbeIndex.Style);
                        }

                        goto IFilled;

                        UseOType :;

                        for (int j = 0; j < Protokol.SampleCount; j++)
                        {
                            ByPodrSheet.SetColumnWidth(ResultIndex.Index + j, Width);
                            ATMisc.SetValue(Row, T.Object.Rows.Get <string>(Protokol[j].ObjectID, C.Object.OType, C.OType.Name) + " №" + Protokol[j].Number.ToString(), ProbeIndex.Index + j, ProbeIndex.Style);
                        }

                        IFilled :;

                        {           //костыльности вот прям тут. т.к. не особенно общая вещь делается: клепается объединение ячеек там где сейчас "результаты испытаний"
                            var PrevRow = ByPodrSheet.GetRow(RowIndex - 2);

                            PrevRow.GetCell(ResultIndex.Index).CellStyle = StyleLTD_CC;

                            for (int j = Protokol.SampleCount - 2; j > 0; j--)
                            {
                                PrevRow.CreateCell(ResultIndex.Index + j).CellStyle = StyleTD_CC;
                            }

                            PrevRow.CreateCell(ResultIndex.Index + Protokol.SampleCount - 1).CellStyle = StyleRTD_CC;
                        }

                        int MergeCount = ByPodrSheet.NumMergedRegions;
                        for (int i = 0; i < MergeCount; i++)
                        {
                            var Merge = ByPodrSheet.GetMergedRegion(i);

                            if (Merge.LastColumn == ResultIndex.Index)
                            {
                                ByPodrSheet.RemoveMergedRegion(i);

                                MergeCount--; i--;

                                ByPodrSheet.AddMergedRegion(new CellRangeAddress(Merge.FirstRow, Merge.LastRow, Merge.FirstColumn, ResultIndex.Index + Protokol.SampleCount - 1));
                            }
                        }
                    }

                    int TNumber = 0;

                    for (int i = 0; i < Protokol.MarkCount; i++)
                    {
                        var Row = ByPodrSheet.CreateRow(RowIndex++);

                        if (LimitIndex.Index > -1)
                        {
                            var Norm = RCache.Marks[Protokol.GetMarkID(i)].GetNorm(Protokol.GetNormID(i));

                            switch (Norm.NType)
                            {
                            case data.NType.Mark:
                                ATMisc.SetValue(Row, Norm.Range.Range, LimitIndex.Index, LimitIndex.Style);
                                break;

                            case data.NType.PodrV:
                            case data.NType.PodrK:
                            case data.NType.PodrAll:
                                var PIndex = RCache.Marks.Norms.GetPodrIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Podr));
                                ATMisc.SetValue(Row, Norm.Station(PIndex).Range, LimitIndex.Index, LimitIndex.Style);
                                break;

                            case data.NType.Volume:
                                var VIndex = RCache.Marks.Norms.GetVolumeIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Object, C.Object.OLocationTo));
                                ATMisc.SetValue(Row, Norm.Volume(VIndex).Range, LimitIndex.Index, LimitIndex.Style);
                                break;
                            }

                            for (int j = 0; j < Protokol.TableCount; j++)
                            {
                                if (Protokol.IsSpetialOut(i, j, true))
                                {
                                    ATMisc.SetValue(Row, Protokol.GetSpetialOut(i, j), ResultIndex.Index + j, ResultIndex.Style);
                                }
                                else
                                {
                                    ATMisc.SetValue(Row, Protokol.GetMarkAmount(i, j), ResultIndex.Index + j, ResultIndex.Style);
                                }
                            }
                        }
                        else
                        {
                            for (int j = 0; j < Protokol.TableCount; j++)
                            {
                                if (Protokol.IsSpetialOut(i, j))
                                {
                                    ATMisc.SetValue(Row, Protokol.GetSpetialOut(i, j), ResultIndex.Index + j, ResultIndex.Style);
                                }
                                else
                                {
                                    ATMisc.SetValue(Row, Protokol.GetMarkAmount(i, j), ResultIndex.Index + j, ResultIndex.Style);
                                }
                            }
                        }


                        ATMisc.SetValue(Row, ++TNumber, NumberIndex.Index, NumberIndex.Style);
                        ATMisc.SetValue(Row, Protokol.GetMethod(i), OMethodIndex.Index, OMethodIndex.Style);
                        ATMisc.SetValue(Row, Protokol.GetMarkName(i), OMarkNameIndex.Index, OMarkNameIndex.Style);
                        ATMisc.SetValue(Row, Protokol.GetMarkEdType(i), OEdTypeIndex.Index, OEdTypeIndex.Style);
                    }
                }
                break;

                default: throw new Exception("Неизвестный тип протокола");
                }

                for (int i = 0; i < WorkBook.NumberOfSheets; i++)
                {
                    if (WorkBook.GetSheetAt(i).SheetName.ToLower() != "заголовок" && WorkBook.GetSheetAt(i).SheetName.ToLower() != "концентрации")
                    {
                        WorkBook.RemoveSheetAt(i);
                        i--;
                    }
                }

                string PeopleNames;

                {
                    var Ppls = new List <uint>();

                    for (int i = 0; i < Protokol.SampleCount; i++)
                    {
                        for (int j = 0; j < Ppls.Count; j++)
                        {
                            if (Ppls[j] == Protokol[i].PeopleID)
                            {
                                goto Finded;
                            }
                        }

                        Ppls.Add(Protokol[i].PeopleID);

                        Finded :;
                    }

                    PeopleNames = Misc.GetShortFIO(Ppls[0]);

                    for (int i = 1; i < Ppls.Count; i++)
                    {
                        PeopleNames += ", " + Misc.GetShortFIO(Ppls[i]);
                    }
                }

                string DateO;
                string DateP;
                var    DTMin = T.Sample.Rows.Get <int>(Protokol[0].SampleID, C.Sample.CYMD);
                for (int i = 1; i < Protokol.SampleCount; i++)
                {
                    if (DTMin > T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.CYMD))
                    {
                        DTMin = T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.CYMD);
                    }
                }

                var DTMax = T.Sample.Rows.Get <int>(Protokol[0].SampleID, C.Sample.CYMD);
                for (int i = 1; i < Protokol.SampleCount; i++)
                {
                    if (DTMax < T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.CYMD))
                    {
                        DTMax = T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.CYMD);
                    }
                }
                if (DTMax == DTMin)
                {
                    DateO = ATMisc.GetDateTime(DTMax).ToShortDateString();
                }
                else
                {
                    DateO = ATMisc.GetDateTime(DTMin).ToShortDateString() + " - " + ATMisc.GetDateTime(DTMax).ToShortDateString();
                }

                DTMin = T.Sample.Rows.Get <int>(Protokol[0].SampleID, C.Sample.AYMD);
                for (int i = 1; i < Protokol.SampleCount; i++)
                {
                    if (DTMin > T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.AYMD))
                    {
                        DTMin = T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.AYMD);
                    }
                }

                DTMax = T.Sample.Rows.Get <int>(Protokol[0].SampleID, C.Sample.AYMD);
                for (int i = 1; i < Protokol.SampleCount; i++)
                {
                    if (DTMax < T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.AYMD))
                    {
                        DTMax = T.Sample.Rows.Get <int>(Protokol[i].SampleID, C.Sample.AYMD);
                    }
                }
                if (DTMax == DTMin)
                {
                    DateP = ATMisc.GetDateTime(DTMax).ToShortDateString();
                }
                else
                {
                    DateP = ATMisc.GetDateTime(DTMin).ToShortDateString() + " - " + ATMisc.GetDateTime(DTMax).ToShortDateString();
                }

                var DT = Protokol.Date;

                GetProtokolsExchanges(TitleSheet
                                      , ATMisc.GetDateTimeFromYM(Protokol.Parent.YM).Year
                                      , Protokol.Number.ToString() + "-" + T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + " - " + DT.Month.ToString() + "/" + DT.Year.ToString()
                                      , Protokol.Objects
                                      , Protokol.Objects
                                      , Protokol.PTypes
                                      , ObjectsLocations
                                      , DateO
                                      , DateP
                                      , Protokol.StrTime
                                      , PeopleNames
                                      , Protokol.Causes
                                      , Protokol.Numbers
                                      , DT.Day.ToString()
                                      , ATMisc.GetMonthName2(DT.Month)
                                      , DT.Month.ToString()
                                      , RCache.PSG.GetMethodName(Protokol.PodrID)
                                      , T.PaPoS.Rows.Get <string>(Protokol.PaPoSID, C.PaPoS.Name)
                                      , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.FllName)
                                      , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName)
                                      , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.Contact)
                                      , Protokol.Act).Exchange(0, 25, 0, 25);
                {
                    var Exchanges = new CellExchange_Class(TitleSheet);

                    Exchanges.ClearExchanges();

                    Exchanges.AddColumn("{имя свойства}");
                    Exchanges.AddColumn("{ед. свойства}");
                    Exchanges.AddColumn("{значение свойства}");
                }
                {
                    var Exchanges = new CellExchange_Class(ByPodrSheet);

                    Exchanges.AddExchange("{должность ответственного}", T.People.Rows.Get <string>(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG)), C.People.Prfssn, C.Prfssn.Name), 5);
                    Exchanges.AddExchange("{ФИО ответственного}", Misc.GetShortFIO(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG))), 5);
                    Exchanges.AddExchange("{Номер протокола}", Protokol.Number.ToString() + "-" + T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + " - " + DT.Month.ToString() + "/" + DT.Year.ToString(), 5);
                    Exchanges.AddExchange("{Дата}", DT.ToShortDateString(), 5);

                    SetResp(Exchanges, Protokol.PodrID, data.TResp.LaboratoryProtokol);
                }

                return(SaveExcel(WorkBook, NewFileName, Open));
            }
            else
            {
                if (Open)
                {
                    System.Diagnostics.Process.Start(NewFileName);
                }

                return(true);
            }
        }
Esempio n. 13
0
        protected override void internalStart()
        {
            book = TemplateStorage.WorkBook;
            if (!CreateStyle())
            {
                return;
            }
            string ListName = "621";

            #region 621
            Resolution resolution = PollutionBase_Class.AllResolution.First(x => x.CurtName.Contains(ListName));
            if (obj.CanResolution(resolution.ID))
            {
                GeneralSumma = new List <decimal>();

                var index = book.GetSheetIndex("Расчёт");

                sheet = book.CloneSheet(index);

                book.SetSheetName(book.NumberOfSheets - 1, ListName);
                Substitute = new CellExchange_Class(sheet);
                LoadTextTemplate(sheet, ListName);
                ClientLoad();
                Table621_1(resolution);
                if (!Table621_2(resolution))
                {
                    Substitute.AddExchange(mark.blok2, e => e.Row.ZeroHeight = true, 0);
                }
                else
                {
                    Substitute.AddExchange(mark.blok2, "", 0);
                }
                ResizeHeight(sheet, 3, sheet.LastRowNum);
                Substitute.AddExchange(mark.pay, GeneralSumma.Sum().ToMoney(), 1);
                R621 = GeneralSumma.Sum() > AdditionnTable.GetPeriod.MinLimits;
                Substitute.Exchange();
                ClearRowFromMark(sheet, mark.job);
            }
            #endregion
            #region 644
            ListName   = "644";
            resolution = PollutionBase_Class.AllResolution.First(x => x.CurtName.Contains(ListName));
            if (obj.CanResolution(resolution.ID))
            {
                GeneralSumma = new List <decimal>();
                sheet        = book.CloneSheet(book.GetSheetIndex("Расчёт"));
                book.SetSheetName(book.NumberOfSheets - 1, ListName);
                Substitute = new CellExchange_Class(sheet);
                LoadTextTemplate(sheet, ListName);
                ClientLoad();
                if (Table644(resolution))
                {
                    Substitute.AddExchange(mark.pay, GeneralSumma.Sum().ToMoney(), 1);
                    R644 = GeneralSumma.Sum() > AdditionnTable.GetPeriod.MinLimits;
                    Substitute.Exchange();
                    ClearRowFromMark(sheet, mark.job);
                }
                else
                {
                    book.RemoveSheetAt(book.NumberOfSheets - 1);
                }
            }
            #endregion
            book.RemoveSheetAt(book.GetSheetIndex("Расчёт"));
            Letter();
            Print("Расчёты платы", "Расчёт платы", EPathPrint.Documents);
        }
Esempio n. 14
0
        public static bool OtchProtokolToxicity1(Protokols_class.SGroup_class.Protokol_class Protokol, bool CreateNew = true, bool Open = true)
        {
            if (Protokol.SampleCount != 1)
            {
                MessageBox.Show("Не верное количество замеров в протоколе:" + Protokol.SampleCount.ToString() + ". Должен быть 1", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return(false);
            }

            string NewFileName;

            {
                int Month, Year;

                ATMisc.GetYearMonthFromYM(Employe_Form.SPoints.YM, out Year, out Month);

                {
                    NewFileName = Application.StartupPath + "\\Отчеты\\";

                    if (!Directory.Exists(NewFileName))
                    {
                        Directory.CreateDirectory(NewFileName);
                    }

                    NewFileName += T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + "\\";

                    if (!Directory.Exists(NewFileName))
                    {
                        Directory.CreateDirectory(NewFileName);
                    }

                    NewFileName += ATMisc.GetMonthName1(Month) + "\\";

                    if (!Directory.Exists(NewFileName))
                    {
                        Directory.CreateDirectory(NewFileName);
                    }
                }

                NewFileName += ProtokolFileName(Protokol);
            }

            if (CreateNew || !File.Exists(NewFileName))
            {
                var WorkBook = ATMisc.GetGenericExcel(Protokol.TemplateFileName());

                if (WorkBook == null)
                {
                    return(false);
                }

                var TitleSheet = WorkBook.GetSheet("Заголовок");
                NPOI.SS.UserModel.ISheet ByPodrSheet;

                if (TitleSheet == null)
                {
                    MessageBox.Show("В шаблоне не найден лист \"Заголовок\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }

                if (Protokol.MarkCount == 0)
                {
                    MessageBox.Show("Заполненые показатели не найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }

                if (Protokol.MarkCount != 2)
                {
                    MessageBox.Show("Не верное количество показателей.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }

                var Font = WorkBook.CreateFont();
                Font.Color              = NPOI.HSSF.Util.HSSFColor.OliveGreen.Index;
                Font.IsStrikeout        = false;
                Font.FontHeightInPoints = 11;
                Font.FontName           = "Times New Roman";
                Font.Color              = short.MaxValue;

                var StyleLRTD_CC = WorkBook.CreateCellStyle();
                StyleLRTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRTD_CC.SetFont(Font);
                StyleLRTD_CC.WrapText = true;

                var ExpStyle = WorkBook.CreateCellStyle();
                ExpStyle.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                ExpStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                ExpStyle.SetFont(Font);
                ExpStyle.WrapText   = true;
                ExpStyle.DataFormat = WorkBook.CreateDataFormat().GetFormat("0.00E+00");

                var StyleLRTD_LC = WorkBook.CreateCellStyle();
                StyleLRTD_LC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Left;
                StyleLRTD_LC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRTD_LC.SetFont(Font);
                StyleLRTD_LC.WrapText = true;

                var StyleLRD_CC = WorkBook.CreateCellStyle();
                StyleLRD_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRD_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLRD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRD_CC.SetFont(Font);
                StyleLRD_CC.WrapText = true;

                var StyleLRT_CC = WorkBook.CreateCellStyle();
                StyleLRT_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRT_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRT_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRT_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLRT_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRT_CC.SetFont(Font);
                StyleLRT_CC.WrapText = true;

                var StyleRTD_CC = WorkBook.CreateCellStyle();
                StyleRTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleRTD_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleRTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleRTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleRTD_CC.SetFont(Font);
                StyleRTD_CC.WrapText = true;

                var StyleLTD_CC = WorkBook.CreateCellStyle();
                StyleLTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLTD_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLTD_CC.SetFont(Font);
                StyleLTD_CC.WrapText = true;

                var StyleTD_CC = WorkBook.CreateCellStyle();
                StyleTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleTD_CC.SetFont(Font);
                StyleTD_CC.WrapText = true;

                var Objects   = Protokol.Objects;
                var ProbeType = T.PType.Rows.Get <string>(Protokol[0].PTypeID, C.PType.Name);
                var Location  = Protokol.ObjectsLocations;

                var    Cause = Protokol.SCause;
                string UnDeleteSheetName;
                var    AddInSheetName = T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.PSG, C.PSG.Name);

                Location = T.SPoint.Rows.Get <string>(Protokol[0].SPointID, C.SPoint.Name);

                var Probes = Protokol.Numbers;
                var NormID = Protokol[0].NormID;

                UnDeleteSheetName = "Концентрации";
                {
                    int Index = WorkBook.GetSheetIndex(UnDeleteSheetName);
                    ByPodrSheet = WorkBook.GetSheetAt(Index);
                    WorkBook.SetSheetName(Index, "Концентрации");
                }

                if (ByPodrSheet == null)
                {
                    MessageBox.Show("В шаблоне не найден лист \"" + UnDeleteSheetName + "\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }

                var Cells = new ATMisc.CellMark_struct[Protokol.MarkCount];

                var Exchange = new CellExchange_Class(ByPodrSheet);

                /*for (int i = 0; i < Protokol.MarkCount; i++)
                 * {
                 *  Cells[i] = new ATMisc.CellMark_struct("{Оценка " + Protokol.GetMarkName(i) + '}');
                 *
                 *  int Index = i;
                 *  Exchange.AddExchange(Cells[i].Mark, (Cell) =>
                 *  { Cells[Index].ColumnIndex = Cell.ColumnIndex; Cells[Index].RowIndex = Cell.RowIndex; }, 1);
                 * }*/

                Cells[0] = new ATMisc.CellMark_struct("{4 дня " + Protokol.GetMarkName(0) + '}');

                Exchange.AddExchange(Cells[0].Mark, (Cell) =>
                                     { Cells[0].ColumnIndex = Cell.ColumnIndex; Cells[0].RowIndex = Cell.RowIndex; }, 1);

                Cells[1] = new ATMisc.CellMark_struct("{3 дня " + Protokol.GetMarkName(1) + '}');

                Exchange.AddExchange(Cells[1].Mark, (Cell) =>
                                     { Cells[1].ColumnIndex = Cell.ColumnIndex; Cells[1].RowIndex = Cell.RowIndex; }, 1);

                if (Exchange.Exchange())
                {
                    for (int i = 0; i < Cells.Length; i++)
                    {
                        if (!Cells[i].Check())
                        {
                            return(false);
                        }
                    }

                    var tmpDT = ATMisc.GetDateTime(Protokol[0].AYMD);

                    var Tm = new DataBase.Time(Protokol.Time);

                    tmpDT = tmpDT.AddDays(4).AddHours(Tm.Hours).AddMinutes((Protokol.SGroup == data.SGroup.Toxicity2 ? Tm.Minutes + 4 * 60 : Tm.Minutes));

                    //if (tmpDT.DayOfWeek == DayOfWeek.Saturday || tmpDT.DayOfWeek == DayOfWeek.Sunday)
                    //{ throw new Exception("День окончания проведения испытаний приходится на выходной."); }

                    ByPodrSheet.GetRow(Cells[0].RowIndex).GetCell(Cells[0].ColumnIndex).SetCellValue(ATMisc.GetDateTime(Protokol[0].AYMD).ToShortDateString() + '-' + tmpDT.ToShortDateString() + ' ' + (tmpDT.Hour > 9 ? tmpDT.Hour.ToString() : '0' + tmpDT.Hour.ToString()) + ':' + (tmpDT.Minute > 9 ? tmpDT.Minute.ToString() : '0' + tmpDT.Minute.ToString()));

                    tmpDT = ATMisc.GetDateTime(Protokol[0].AYMD).AddDays(3).AddHours(Tm.Hours).AddMinutes((Protokol.SGroup == data.SGroup.Toxicity2 ? Tm.Minutes + 4 * 60 : Tm.Minutes));

                    //if (tmpDT.DayOfWeek == DayOfWeek.Saturday || tmpDT.DayOfWeek == DayOfWeek.Sunday)
                    //{ throw new Exception("День окончания проведения испытаний приходится на выходной."); }

                    ByPodrSheet.GetRow(Cells[1].RowIndex).GetCell(Cells[1].ColumnIndex).SetCellValue(ATMisc.GetDateTime(Protokol[0].AYMD).ToShortDateString() + '-' + tmpDT.ToShortDateString() + ' ' + (tmpDT.Hour > 9 ? tmpDT.Hour.ToString() : '0' + tmpDT.Hour.ToString()) + ':' + (tmpDT.Minute > 9 ? tmpDT.Minute.ToString() : '0' + tmpDT.Minute.ToString()));
                }

                for (int i = WorkBook.NumberOfSheets - 1; i > -1; i--)
                {
                    if (WorkBook.GetSheetAt(i).SheetName.ToLower() != "заголовок" && WorkBook.GetSheetAt(i).SheetName.ToLower() != "концентрации")
                    {
                        WorkBook.RemoveSheetAt(i);
                    }
                }

                string PeopleNames;

                {
                    var Ppls = new List <uint>();

                    for (int i = 0; i < Protokol.SampleCount; i++)
                    {
                        for (int j = 0; j < Ppls.Count; j++)
                        {
                            if (Ppls[j] == Protokol[i].PeopleID)
                            {
                                goto Finded;
                            }
                        }

                        Ppls.Add(Protokol[i].PeopleID);

                        Finded :;
                    }

                    PeopleNames = Misc.GetShortFIO(Ppls[0]);

                    for (int i = 1; i < Ppls.Count; i++)
                    {
                        PeopleNames += ", " + Misc.GetShortFIO(Ppls[i]);
                    }
                }

                var DT = Protokol.Date;

                var ProtokolNum = ProtokolNumber(Protokol);

                GetProtokolsExchanges(TitleSheet
                                      , DT.Year
                                      , ProtokolNum
                                      , Objects
                                      , Objects
                                      , ProbeType
                                      , Location
                                      , Protokol.DateOstr
                                      , Protokol.DateP
                                      , Protokol.StrTime
                                      , PeopleNames
                                      , Cause
                                      , Probes
                                      , DT.Day.ToString()
                                      , ATMisc.GetMonthName2(DT.Month)
                                      , DT.Month.ToString()
                                      , RCache.PSG.GetMethodName(data.PSG.Income)
                                      , T.PaPoS.Rows.Get <string>(Protokol.PaPoSID, C.PaPoS.Name)
                                      , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.FllName)
                                      , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName)
                                      , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.Contact)
                                      , Protokol.Act).Exchange(0, 25, 0, 25);

                var Exchanges = new CellExchange_Class(TitleSheet);

                Exchanges.ClearExchanges();

                Exchanges.AddColumn("{имя свойства}");
                Exchanges.AddColumn("{ед. свойства}");
                Exchanges.AddColumn("{значение свойства}");

                if (Exchanges.CheckTableColumns())
                {
                    for (int i = 0; i < Protokol[0].TCSCount; i++)
                    {
                        var Values = new object[3];

                        Values[0] = Protokol[0].TCSName(i);
                        Values[1] = Protokol[0].TCSEdType(i);
                        Values[2] = Protokol[0].TCSValue(i);

                        Exchanges.SetRow(Values);
                    }
                }

                Exchanges = new CellExchange_Class(ByPodrSheet);

                Exchanges.AddExchange("{должность ответственного}", T.People.Rows.Get <string>(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG)), C.People.Prfssn, C.Prfssn.Name), 5);
                Exchanges.AddExchange("{ФИО ответственного}", Misc.GetShortFIO(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG))), 5);
                Exchanges.AddExchange("{Номер протокола}", ProtokolNum, 5);
                Exchanges.AddExchange("{Дата}", DT.ToShortDateString(), 5);

                SetResp(Exchanges, Protokol.PodrID, data.TResp.LaboratoryProtokol);

                return(SaveExcel(WorkBook, NewFileName, Open));
            }
            else
            {
                if (Open)
                {
                    System.Diagnostics.Process.Start(NewFileName);
                }

                return(true);
            }
        }
Esempio n. 15
0
        /// <summary>Получить ответственных по типу ответственности для подразделения</summary>
        static void SetResp(CellExchange_Class Exchange, uint PodrID, data.TResp RespType)
        {
            var Prffn = new SColumn_struct(-1, null);
            var FIO   = new SColumn_struct(-1, null);
            int RowIndex;

            {
                int PrffnRowIndex = -1;
                int FIORowIndex   = -1;

                Exchange.AddExchange("{Профессии ответственных по подразделению}", Cell =>
                {
                    Prffn         = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    PrffnRowIndex = Cell.RowIndex;
                }, 5);
                Exchange.AddExchange("{ФИО ответственных по подразделению}", Cell =>
                {
                    FIO         = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    FIORowIndex = Cell.RowIndex;
                }, 5);
                Exchange.Exchange(0, 50, 0, Exchange.sheet.LastRowNum + 1);

                if (PrffnRowIndex == FIORowIndex && FIORowIndex < 0)
                {
                    return;
                }

                if (PrffnRowIndex > -1 && FIORowIndex > -1 && FIORowIndex != PrffnRowIndex)
                {
                    return;
                }

                RowIndex = PrffnRowIndex;
            }

            CellRangeAddress FIOMerge   = null;
            CellRangeAddress PrffnMerge = null;

            G.Resp.QUERRY()
            .SHOW.WHERE
            .ARC(C.Resp.PodrPpl, C.PodrPpl.Podr).EQUI.BV(PodrID)
            .AND.C(C.Resp.TResp, (uint)RespType)
            .DO();

            if (G.Resp.Rows.Count > 0)
            {
                for (int i = 0; i < Exchange.sheet.NumMergedRegions; i++)
                {
                    var Merge = Exchange.sheet.GetMergedRegion(i);
                    if (Merge.FirstRow <= RowIndex && Merge.LastRow >= RowIndex)
                    {
                        if (Merge.FirstColumn <= FIO.Index && Merge.LastColumn >= FIO.Index)
                        {
                            FIOMerge = Merge;
                        }
                        else if (Merge.FirstColumn <= Prffn.Index && Merge.LastColumn >= Prffn.Index)
                        {
                            PrffnMerge = Merge;
                        }
                    }
                }

                Exchange.sheet.ShiftRows(RowIndex + 1, Exchange.sheet.LastRowNum, G.Resp.Rows.Count - 1);

                G.Resp.Sort((it1, it2) =>
                {
                    var ret1 = T.Resp.Rows.Get_UnShow <uint>(it1.ID, C.Resp.PodrPpl, C.PodrPpl.People, C.People.Prfssn, C.Prfssn.PnMean)
                               .CompareTo(T.Resp.Rows.Get_UnShow <uint>(it2.ID, C.Resp.PodrPpl, C.PodrPpl.People, C.People.Prfssn, C.Prfssn.PnMean));

                    return(ret1 == 0 ? it1.ID.CompareTo(it2.ID) : ret1);
                });

                if (Prffn.Index > -1)
                {
                    var Row  = Exchange.sheet.GetRow(RowIndex);
                    var Cell = Row.GetCell(Prffn.Index);

                    Cell.SetCellValue(G.Resp.Rows.Get <string>(0, C.Resp.PodrPpl, C.PodrPpl.People, C.People.Prfssn, C.Prfssn.Name));
                }

                if (FIO.Index > -1)
                {
                    var Row  = Exchange.sheet.GetRow(RowIndex);
                    var Cell = Row.GetCell(FIO.Index);

                    Cell.SetCellValue(Misc.GetShortFIO(G.Resp.Rows.Get_UnShow <uint>(0, C.Resp.PodrPpl, C.PodrPpl.People)));
                }

                for (int i = 1; i < G.Resp.Rows.Count; i++)
                {
                    var Row = Exchange.sheet.CreateRow(RowIndex + i);

                    if (Prffn.Index > -1)
                    {
                        var Cell = Row.CreateCell(Prffn.Index);
                        Cell.CellStyle = Prffn.Style;
                        Cell.SetCellValue(G.Resp.Rows.Get <string>(i, C.Resp.PodrPpl, C.PodrPpl.People, C.People.Prfssn, C.Prfssn.Name));

                        if (PrffnMerge != null)
                        {
                            Exchange.sheet.AddMergedRegion(new CellRangeAddress(Row.RowNum, Row.RowNum, PrffnMerge.FirstColumn, PrffnMerge.LastColumn));
                        }
                    }

                    if (FIO.Index > -1)
                    {
                        var Cell = Row.CreateCell(FIO.Index);
                        Cell.CellStyle = FIO.Style;
                        Cell.SetCellValue(Misc.GetShortFIO(G.Resp.Rows.Get_UnShow <uint>(i, C.Resp.PodrPpl, C.PodrPpl.People)));

                        if (FIOMerge != null)
                        {
                            Exchange.sheet.AddMergedRegion(new CellRangeAddress(Row.RowNum, Row.RowNum, FIOMerge.FirstColumn, FIOMerge.LastColumn));
                        }
                    }
                }
            }
            else
            {
                Exchange.sheet.ShiftRows(RowIndex + 1, Exchange.sheet.LastRowNum, G.Resp.Rows.Count - 1);
            }
        }
Esempio n. 16
0
        public static bool OtchProtokolAquaAurat_KOCA(Protokols_class.SGroup_class.Protokol_class Protokol, bool CreateNew = true, bool Open = true)
        {
            if (Protokol.SampleCount != 1)
            {
                MessageBox.Show("Не верное количество замеров в протоколе:" + Protokol.SampleCount.ToString() + ". Должен быть 1", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return(false);
            }

            {
                var MsgErr = "";

                for (int i = 0; i < Protokol.MarkCount; i++)
                {
                    var PAMIndex = -1;

                    for (int j = 0; j < Protokol.SampleCount; j++)
                    {
                        if (Protokol[j][i].LocalAlow && Protokol[j][i].Method.Length > 0)
                        {
                            if (PAMIndex < 0)
                            {
                                PAMIndex = j;
                            }
                            else if (Protokol[j][i].Method != Protokol[PAMIndex][i].Method)
                            {
                                MsgErr += '\n' + Protokol[j][i].Mark + " имеет различные методы у нормативов " + T.Object.Rows.Get <string>(Protokol[j].ObjectID, C.Object.Norm, C.Norm.Name) + " и " + T.Object.Rows.Get <string>(Protokol[PAMIndex].ObjectID, C.Object.Norm, C.Norm.Name);
                            }
                        }
                    }
                }

                if (MsgErr.Length > 0)
                {
                    MessageBox.Show(MsgErr, "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }
            }

            string NewFileName;

            {
                int Month, Year;

                ATMisc.GetYearMonthFromYM(Employe_Form.SPoints.YM, out Year, out Month);

                {
                    NewFileName = Application.StartupPath + "\\Отчеты\\";

                    if (!Directory.Exists(NewFileName))
                    {
                        Directory.CreateDirectory(NewFileName);
                    }

                    NewFileName += T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + "\\";

                    if (!Directory.Exists(NewFileName))
                    {
                        Directory.CreateDirectory(NewFileName);
                    }

                    NewFileName += ATMisc.GetMonthName1(Month) + "\\";

                    if (!Directory.Exists(NewFileName))
                    {
                        Directory.CreateDirectory(NewFileName);
                    }
                }

                NewFileName += ProtokolFileName(Protokol);
            }

            if (CreateNew || !File.Exists(NewFileName))
            {
                var WorkBook = ATMisc.GetGenericExcel(Protokol.TemplateFileName());

                if (WorkBook == null)
                {
                    return(false);
                }

                var TitleSheet = WorkBook.GetSheet("Заголовок");
                NPOI.SS.UserModel.ISheet ByPodrSheet;

                if (TitleSheet == null)
                {
                    MessageBox.Show("В шаблоне не найден лист \"Заголовок\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }

                if (Protokol.MarkCount == 0)
                {
                    MessageBox.Show("Заполненые показатели не найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }

                var Font = WorkBook.CreateFont();
                Font.Color              = NPOI.HSSF.Util.HSSFColor.OliveGreen.Index;
                Font.IsStrikeout        = false;
                Font.FontHeightInPoints = 11;
                Font.FontName           = "Times New Roman";
                Font.Color              = short.MaxValue;

                var StyleLRTD_CC = WorkBook.CreateCellStyle();
                StyleLRTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRTD_CC.SetFont(Font);
                StyleLRTD_CC.WrapText = true;

                var ExpStyle = WorkBook.CreateCellStyle();
                ExpStyle.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                ExpStyle.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                ExpStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                ExpStyle.SetFont(Font);
                ExpStyle.WrapText   = true;
                ExpStyle.DataFormat = WorkBook.CreateDataFormat().GetFormat("0.00E+00");

                var StyleLRTD_LC = WorkBook.CreateCellStyle();
                StyleLRTD_LC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRTD_LC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Left;
                StyleLRTD_LC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRTD_LC.SetFont(Font);
                StyleLRTD_LC.WrapText = true;

                var StyleLRD_CC = WorkBook.CreateCellStyle();
                StyleLRD_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRD_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLRD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRD_CC.SetFont(Font);
                StyleLRD_CC.WrapText = true;

                var StyleLRT_CC = WorkBook.CreateCellStyle();
                StyleLRT_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRT_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRT_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLRT_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLRT_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLRT_CC.SetFont(Font);
                StyleLRT_CC.WrapText = true;

                var StyleRTD_CC = WorkBook.CreateCellStyle();
                StyleRTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleRTD_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleRTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleRTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleRTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleRTD_CC.SetFont(Font);
                StyleRTD_CC.WrapText = true;

                var StyleLTD_CC = WorkBook.CreateCellStyle();
                StyleLTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLTD_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLTD_CC.SetFont(Font);
                StyleLTD_CC.WrapText = true;

                var StyleTD_CC = WorkBook.CreateCellStyle();
                StyleTD_CC.BorderTop         = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleTD_CC.BorderBottom      = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleTD_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleTD_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleTD_CC.SetFont(Font);
                StyleTD_CC.WrapText = true;

                var Objects   = Protokol[0].SPointName + ", " + Protokol.Objects;
                var ProbeType = T.PType.Rows.Get <string>(Protokol[0].PTypeID, C.PType.Name);
                var Location  = Protokol.ObjectsLocations;

                var    Cause = Protokol.SCause;
                string UnDeleteSheetName;
                var    AddInSheetName = T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.PSG, C.PSG.Name);

                //Location = T.Object.Rows.Get<string>(Protokol[0].ObjectID, C.Object.OLocationFrom, C.OLocation.Name);
                Location = T.SPoint.Rows.Get <string>(Protokol[0].SPointID, C.SPoint.Name);

                var Probes = Protokol.Numbers;
                var NormID = Protokol[0].NormID;

                UnDeleteSheetName = "Концентрации";
                {
                    int Index = WorkBook.GetSheetIndex(UnDeleteSheetName);
                    ByPodrSheet = WorkBook.GetSheetAt(Index);
                    WorkBook.SetSheetName(Index, "Концентрации");
                }

                if (ByPodrSheet == null)
                {
                    MessageBox.Show("В шаблоне не найден лист \"" + UnDeleteSheetName + "\", вывод невозможен.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }

                var OEdTypeIndex   = new SColumn_struct(-1, null);
                var OMethodIndex   = new SColumn_struct(-1, null);
                var OMarkNameIndex = new SColumn_struct(-1, null);
                var NumberIndex    = new SColumn_struct(-1, null);
                var ResultIndex    = new SColumn_struct(-1, null);
                var LimitIndex     = new SColumn_struct(-1, null);

                int RowIndex = -1;
                {
                    var OEdTypeRowIndex   = -1;
                    var OMethodRowIndex   = -1;
                    var OMarkNameRowIndex = -1;
                    var NumberRowIndex    = -1;
                    var ResultRowIndex    = -1;
                    var LimitRowIndex     = -1;

                    var ExistColumn = new CellExchange_Class(ByPodrSheet);

                    ExistColumn.AddExchange("{Метка пробы}", "№ " + T.Sample.Rows.Get <string>(Protokol[0].SampleID, C.Sample.Number), 5);
                    if (NormID > 0)
                    {
                        ExistColumn.AddExchange("{Норматив}", T.Norm.Rows.Get <string>(NormID, C.Norm.Name), 5);
                    }
                    ExistColumn.AddExchange("{номер п/п}", (Cell) =>
                    {
                        NumberRowIndex = Cell.RowIndex;
                        NumberIndex    = new SColumn_struct(Cell);
                    }, 5);
                    ExistColumn.AddExchange("{показатель}", (Cell) =>
                    {
                        OMarkNameRowIndex = Cell.RowIndex;
                        OMarkNameIndex    = new SColumn_struct(Cell);
                    }, 5);
                    ExistColumn.AddExchange("{ед.изм.}", (Cell) =>
                    {
                        OEdTypeRowIndex = Cell.RowIndex;
                        OEdTypeIndex    = new SColumn_struct(Cell);
                    }, 5);
                    ExistColumn.AddExchange("{методика}", (Cell) =>
                    {
                        OMethodRowIndex = Cell.RowIndex;
                        OMethodIndex    = new SColumn_struct(Cell);
                    }, 5);
                    ExistColumn.AddExchange("{результат}", (Cell) =>
                    {
                        ResultRowIndex = Cell.RowIndex;
                        ResultIndex    = new SColumn_struct(Cell);

                        CopyStyleFromCell(ExpStyle, Cell);
                    }, 5);
                    ExistColumn.AddExchange("{лимит}", (Cell) =>
                    {
                        LimitRowIndex = Cell.RowIndex;
                        LimitIndex    = new SColumn_struct(Cell);
                    }, 5);


                    ExistColumn.Exchange(0, 25, 0, 25);

                    if (NumberRowIndex == -1 || OMarkNameRowIndex == -1 || OEdTypeRowIndex == -1 || OMethodRowIndex == -1 || ResultRowIndex == -1)
                    {
                        MessageBox.Show("Не все табличные метки найдены.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return(false);
                    }

                    if (LimitRowIndex > -1 && LimitRowIndex != NumberRowIndex || NumberRowIndex != OMarkNameRowIndex || OMarkNameRowIndex != OEdTypeRowIndex || OEdTypeRowIndex != OMethodRowIndex || OMethodRowIndex != ResultRowIndex)
                    {
                        MessageBox.Show("Все табличные метки должны распологаться в одной строке.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return(false);
                    }

                    if (NormID == 0 && LimitRowIndex > -1)
                    {
                        ByPodrSheet.SetColumnWidth(ResultIndex.Index, ByPodrSheet.GetColumnWidth(ResultIndex.Index) + ByPodrSheet.GetColumnWidth(LimitIndex.Index));
                        ByPodrSheet.SetColumnHidden(LimitIndex.Index, true);
                    }

                    RowIndex = NumberRowIndex;
                }

                ByPodrSheet.ShiftRows(RowIndex, ByPodrSheet.LastRowNum, Protokol.MarkCount - 1);

                int ONumber = 0;

                for (int i = 0; i < Protokol.MarkCount; i++)
                {
                    var Row = ByPodrSheet.CreateRow(RowIndex++);

                    if (RowIndex > -1)
                    {
                        ATMisc.SetValue(Row, ++ONumber, NumberIndex.Index, NumberIndex.Style);
                    }

                    if (LimitIndex.Index > -1)
                    {
                        var Norm = RCache.Marks[Protokol.GetMarkID(i)].GetNorm(Protokol.GetNormID(i));

                        switch (Norm.NType)
                        {
                        case data.NType.Mark:
                            ATMisc.SetValue(Row, Norm.Range.Range, LimitIndex.Index, LimitIndex.Style);
                            break;

                        case data.NType.PodrV:
                        case data.NType.PodrK:
                        case data.NType.PodrAll:
                            var PIndex = RCache.Marks.Norms.GetPodrIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Podr));
                            ATMisc.SetValue(Row, Norm.Station(PIndex).Range, LimitIndex.Index, LimitIndex.Style);
                            break;

                        case data.NType.Volume:
                            var VIndex = RCache.Marks.Norms.GetVolumeIndex(Norm.NormID, T.SPoint.Rows.Get_UnShow <uint>(Protokol[0].SPointID, C.SPoint.Object, C.Object.OLocationFrom));
                            ATMisc.SetValue(Row, Norm.Volume(VIndex).Range, LimitIndex.Index, LimitIndex.Style);
                            break;
                        }

                        ATMisc.SetValue(Row, Protokol.GetMarkAmount(i), ResultIndex.Index, ResultIndex.Style);
                    }
                    else
                    {
                        if (Protokol.IsSpetialOut(i))
                        {
                            ATMisc.SetValue(Row, Protokol.GetSpetialOut(i), ResultIndex.Index, ResultIndex.Style);
                        }
                        else
                        {
                            ATMisc.SetValue(Row, Protokol.GetMarkAmount(i), ResultIndex.Index, ResultIndex.Style);
                        }
                    }

                    ATMisc.SetValue(Row, Protokol.GetMethod(i), OMethodIndex.Index, OMethodIndex.Style);
                    ATMisc.SetValue(Row, Protokol.GetMarkName(i), OMarkNameIndex.Index, OMarkNameIndex.Style);
                    ATMisc.SetValue(Row, Protokol.GetMarkEdType(i), OEdTypeIndex.Index, OEdTypeIndex.Style);

                    //Вывожу концентрацию как есть
                }

                for (int i = 0; i < WorkBook.NumberOfSheets; i++)
                {
                    if (WorkBook.GetSheetAt(i).SheetName.ToLower() != "заголовок" && WorkBook.GetSheetAt(i).SheetName.ToLower() != "концентрации")
                    {
                        WorkBook.RemoveSheetAt(i);
                        i--;
                    }
                }

                string PeopleNames;

                {
                    var Ppls = new List <uint>();

                    for (int i = 0; i < Protokol.SampleCount; i++)
                    {
                        for (int j = 0; j < Ppls.Count; j++)
                        {
                            if (Ppls[j] == Protokol[i].PeopleID)
                            {
                                goto Finded;
                            }
                        }

                        Ppls.Add(Protokol[i].PeopleID);

                        Finded :;
                    }

                    PeopleNames = Misc.GetShortFIO(Ppls[0]);

                    for (int i = 1; i < Ppls.Count; i++)
                    {
                        PeopleNames += ", " + Misc.GetShortFIO(Ppls[i]);
                    }
                }

                DateTime DT;
                {
                    int Year, Month;

                    ATMisc.GetYearMonthFromYM(Protokol.YM, out Year, out Month);

                    DT = new DateTime(Year, Month, Protokol.Day);
                }

                var ProtokolNum = ProtokolNumber(Protokol);

                GetProtokolsExchanges(TitleSheet
                                      , DT.Year
                                      , ProtokolNum
                                      , Objects
                                      , Objects
                                      , ProbeType
                                      , Location
                                      , Protokol.DateOstr
                                      , Protokol.DateP
                                      , Protokol.StrTime
                                      , PeopleNames
                                      , Cause
                                      , Probes
                                      , DT.Day.ToString()
                                      , ATMisc.GetMonthName2(DT.Month)
                                      , DT.Month.ToString()
                                      , RCache.PSG.GetMethodName(Protokol.PodrID)
                                      , T.PaPoS.Rows.Get <string>(Protokol.PaPoSID, C.PaPoS.Name)
                                      , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.FllName)
                                      , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName)
                                      , T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.Contact)
                                      , Protokol.Act).Exchange(0, 25, 0, 25);
                {
                    var Exchanges = new CellExchange_Class(TitleSheet);

                    Exchanges.ClearExchanges();

                    Exchanges.AddColumn("{имя свойства}");
                    Exchanges.AddColumn("{ед. свойства}");
                    Exchanges.AddColumn("{значение свойства}");
                }
                {
                    var Exchanges = new CellExchange_Class(ByPodrSheet);

                    Exchanges.AddExchange("{должность ответственного}", T.People.Rows.Get <string>(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG)), C.People.Prfssn, C.Prfssn.Name), 5);
                    Exchanges.AddExchange("{ФИО ответственного}", Misc.GetShortFIO(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Protokol[0].PodrID, C.Podr.PSG))), 5);
                    Exchanges.AddExchange("{Номер протокола}", ProtokolNum, 5);
                    Exchanges.AddExchange("{Дата}", DT.ToShortDateString(), 5);

                    SetResp(Exchanges, Protokol.PodrID, data.TResp.LaboratoryProtokol);
                }

                return(SaveExcel(WorkBook, NewFileName, Open));
            }
            else
            {
                if (Open)
                {
                    System.Diagnostics.Process.Start(NewFileName);
                }

                return(true);
            }
        }