Exemple #1
0
        void SelectCurrentSPool()
        {
            Period_combo.Items.Clear();

            int YMTo;

            _synchPoolManager.GetDiapPeriods(out YMStart, out YMTo);

            for (int i = YMStart; i <= YMTo; i++)
            {
                var DT = ATMisc.GetDateTimeFromYM(i);
                Period_combo.Items.Add(ATMisc.GetMonthName1(DT.Month) + ' ' + DT.Year.ToString());
            }

            int YM = ATMisc.GetYMFromDateTime(T.SPool.Rows.Get <DateTime>(_synchPoolManager.LastPoolID, C.SPool.Date));

            if (Period_combo.SelectedIndex == YM - YMStart)
            {
                Period_combo_SelectedIndexChanged(null, null);
            }
            else
            {
                Period_combo.SelectedIndex = YM - YMStart;
            }
        }
        /// <summary>Распечатать</summary>
        /// <param name="OutFolder">Путь начиная с местаположения программы</param>
        /// <param name="Name">Имя файла</param>
        /// <param name="pathPrint">Тип пути</param>
        protected void Print(string OutFolder, string Name, EPathPrint pathPrint)
        {
            string path = Directory.GetCurrentDirectory().ToString();

            switch (pathPrint)
            {
            case EPathPrint.Documents:
            {
                path += "\\Документы";
                break;
            }

            case EPathPrint.Arhives:
            {
                path += "\\Архив";
                break;
            }
            }
            path += "\\" + OutFolder;
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            path += "\\" + Name + ".xls";
            ATMisc.SaveExcel(book, path, true);
        }
Exemple #3
0
        public void GetDiapPeriods(out int YMFrom, out int YMTo)
        {
            var DTMax = (DateTime)_sPool.QUERRY().GET.C(C.SPool.Date).Max(C.SPool.Date).By().DO()[0].Value;
            var DTMin = (DateTime)_sPool.QUERRY().GET.C(C.SPool.Date).Min(C.SPool.Date).By().DO()[0].Value;

            YMFrom = ATMisc.GetYMFromDateTime(DTMin);
            YMTo   = ATMisc.GetYMFromDateTime(DTMax);
        }
Exemple #4
0
        public BasePorting_Class(Grid grid)
        {
            this.grid = grid;
            var OFD = new MyTools.C_OFD_Def(new MyTools.C_Setting_OpenFileDialog("Выберите книгу", MyTools.ETypeFileFilter.BookExcel_xls_xlsx));

            WorkBook = ATMisc.GetExcel(OFD.FileName, true);
            LoadColumn();
            LoadRow();
        }
Exemple #5
0
    private void Continue_button_Click(object sender, EventArgs e)
    {
        int NewYM = ATMisc.GetYMFromYearMonth(Date_Picker.Value.Year, Date_Picker.Value.Month);

        if (Employe_Form.WorkYM != NewYM)
        {
            data.User <bool>(C.User.CNP, true);

            Employe_Form.WorkYM = NewYM;

            this.Close();
        }
    }
Exemple #6
0
        private void Protoks_button_Click(object sender, EventArgs e)
        {
            int YM;

            if (Period_Box.Text.Length == 7)
            {
                int Y, M;
                Y = Convert.ToInt32(Period_Box.Text.Substring(3, 4));
                M = Convert.ToInt32(Period_Box.Text.Substring(0, 2));

                YM = ATMisc.GetYMFromYearMonth(Y, M);

                new Protok_Form(YM, 0, false, true, true).ShowDialog();
            }
        }
Exemple #7
0
        public MassOutgo_Form(uint PodrID, uint OTypeID)
        {
            InitializeComponent();

            CreateNew_check.Checked = Employe_Form.SPoints.YM == Employe_Form.WorkYM;

            for (int i = 0; i < ATMisc.MonthesCount; i++)
            {
                Month_combo.Items.Add(ATMisc.GetMonthName1(i + 1));
            }

            int Month;

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

            Month_combo.SelectedIndex = Month - 1;

            From_Picker.MinDate = To_Picker.MinDate = new DateTime(Year, 1, 1);
            From_Picker.MaxDate = To_Picker.MaxDate = new DateTime(Year, 12, DateTime.DaysInMonth(Year, 12));

            Podr_combo.Items.Add("Все");

            for (int i = 0; i < G.Podr.Rows.Count; i++)
            {
                Podr_combo.Items.Add(G.Podr.Rows.Get <string>(i, C.Podr.ShrName));
            }

            if ((data.UType)data.User <uint>(C.User.UType) == data.UType.MainEmploye)
            {
                Podr_combo.Enabled = true;
            }
            else
            {
                Podr_combo.SelectedIndex = G.Podr.Rows.GetIndex(data.User <uint>(C.User.Podr)) + 1;
                Podr_combo.Enabled       = false;
            }

            for (int i = 0; i < G.OType.Rows.Count; i++)
            {
                OType_combo.Items.Add(G.OType.Rows.Get <string>(i, C.OType.Name));
            }

            Podr_combo.SelectedIndex  = G.Podr.Rows.GetIndex(PodrID) + 1;
            OType_combo.SelectedIndex = G.OType.Rows.GetIndex(OTypeID);

            CheckExist(null, null);
        }
Exemple #8
0
        public AdminPanel()
        {
            InitializeComponent();

            RCache.Marks = new RCache.Marks_class();
            RCache.Marks.Update();

            RCache.PSG     = new RCache.PSG_class();
            RCache.Volumes = new RCache.Volumes_class();

            SubTables = new DataBase.ISTable[data.T1.Tables.Count];

            for (int i = 0; i < SubTables.Length; i++)
            {
                var Table = data.T1.Tables[i];

                if (Table.GetSubTable.Count == 0)
                {
                    SubTables[i] = Table.CreateSubTable();
                }
                else
                {
                    SubTables[i] = Table.GetSubTable[0];
                }
            }

            Array.Sort(SubTables, (it1, it2) =>
            {
                var ret1 = it1.Parent.DataSource.Type.CompareTo(it2.Parent.DataSource.Type);

                if (ret1 == 0)
                {
                    return(it1.Name.CompareTo(it2.Name));
                }
                else
                {
                    return(ret1);
                }
            });

            {
                int Y, M;
                ATMisc.GetYearMonthFromYM(data.User <int>(C.User.YM), out Y, out M);
                Period_Box.Text = M.ToString() + '.' + Y.ToString();
            }
        }
Exemple #9
0
        void UpdateIncome()
        {
            if (RCache.PSG.GetIncomeID() == 0)
            {
                IncomeD_label.Text = "Добавление";
            }
            else
            {
                IncomeD_label.Text = "Редактирование";
            }

            Income_Box.Text         = RCache.PSG.GetMethodName(data.PSG.Income);
            IncomePeopleID          = RCache.PSG.GetPeopleID(data.PSG.Income);
            IncomePeople_label.Text = Misc.GetShortFIO(IncomePeopleID);
            var DT = RCache.PSG.DateOfCreateIncome();

            toolTip1.SetToolTip(Income_Box, "Дата создания - " + ATMisc.GetMonthName1(DT.Month) + ' ' + DT.Year.ToString());
        }
Exemple #10
0
        void UpdateOutgo()
        {
            if (RCache.PSG.GetOutgoID() == 0)
            {
                OutgoD_label.Text = "Добавление";
            }
            else
            {
                OutgoD_label.Text = "Редактирование";
            }

            Outgo_Box.Text         = RCache.PSG.GetMethodName(data.PSG.Outgo);
            OutgoPeopleID          = RCache.PSG.GetPeopleID(data.PSG.Outgo);
            OutgoPeople_label.Text = Misc.GetShortFIO(OutgoPeopleID);
            var DT = RCache.PSG.DateOfCreateOutgo();

            toolTip1.SetToolTip(Outgo_Box, "Дата создания - " + ATMisc.GetMonthName1(DT.Month) + ' ' + DT.Year.ToString());
        }
Exemple #11
0
        public uint[] GetSynches(int YM)
        {
            var DTFrom = ATMisc.GetDateTimeFromYM(YM).AddMilliseconds(-1);
            var DTTo   = ATMisc.GetDateTimeFromYM(YM + 1).AddMilliseconds(1);

            _sPool.QUERRY().SHOWL(C.SPool.Date).WHERE
            .AC(C.SPool.Date).More.BV(DTFrom)
            .AND.AC(C.SPool.Date).Less.BV(DTTo)
            .DO();

            var Synches = new uint[_sPool.Rows.Count];

            for (int i = 0; i < _sPool.Rows.Count; i++)
            {
                Synches[i] = _sPool.Rows.GetID(i);
            }

            return(Synches);
        }
Exemple #12
0
        public static bool OtchProtokolType2(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(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("Протокол испытаний тип 2.xls");

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

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

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

                var DT = Protokol.Date;

                GetProtokolsExchanges(TitleSheet
                                      , ATMisc.GetDateTimeFromYM(Employe_Form.SPoints.YM).Year
                                      , Protokol.Number.ToString() + "-АВ-" + DT.Month.ToString() + "/" + DT.Year.ToString()
                                      , Protokol.Objects + ' ' + T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName)
                                      , Protokol.Objects
                                      , Protokol.ProtoType
                                      , Protokol.ObjectsLocations
                                      , Protokol.DateOstr
                                      , Protokol.DateP
                                      , Protokol.StrTime
                                      , Protokol.Peoples
                                      , Protokol.Causes
                                      , Protokol.Numbers
                                      , Protokol.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)
                                      , 0).Exchange();

                {
                    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);
                        }
                    }
                }

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

                string UnDeleteSheetName;

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

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

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

                    var SPointIndex    = new SColumn_struct(-1, null);
                    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);
                    int RowIndex       = -1;

                    var SPStyle = new NPOI.SS.UserModel.ICellStyle[3];     //верх, середина, низ
                    var PStyle  = new NPOI.SS.UserModel.ICellStyle[3];     //верх, середина, низ
                    {
                        var OEdTypeRowIndex   = -1;
                        var OMethodRowIndex   = -1;
                        var OMarkNameRowIndex = -1;
                        var NumberRowIndex    = -1;
                        var SPointRowIndex    = -1;
                        var ResultRowIndex    = -1;
                        var ProbeRowIndex     = -1;

                        var ExistColumn = new CellExchange_Class(Sheet1);

                        ExistColumn.AddExchange("{номер п/п}", (Cell) =>
                        {
                            NumberRowIndex = Cell.RowIndex;
                            NumberIndex    = new SColumn_struct(Cell);
                        }, 5);
                        ExistColumn.AddExchange("{место отбора}", (Cell) =>
                        {
                            SPointRowIndex = Cell.RowIndex;
                            SPointIndex    = new SColumn_struct(Cell);

                            SPStyle[0] = Sheet1.Workbook.CreateCellStyle();     //верх
                            CopyStyleFromCell(SPStyle[0], Cell); SPStyle[0].BorderBottom = NPOI.SS.UserModel.BorderStyle.None;
                            SPStyle[1] = Sheet1.Workbook.CreateCellStyle();     //середина
                            CopyStyleFromCell(SPStyle[1], Cell); SPStyle[1].BorderBottom = SPStyle[1].BorderTop = NPOI.SS.UserModel.BorderStyle.None;
                            SPStyle[2] = Sheet1.Workbook.CreateCellStyle();     //низ
                            CopyStyleFromCell(SPStyle[2], Cell); SPStyle[2].BorderTop = NPOI.SS.UserModel.BorderStyle.None;
                        }, 5);
                        ExistColumn.AddExchange("{показатель}", (Cell) =>
                        {
                            OMarkNameRowIndex = Cell.RowIndex;
                            OMarkNameIndex    = new SColumn_struct(Cell);
                        }, 5);
                        ExistColumn.AddExchange("{проба}", (Cell) =>
                        {
                            ProbeRowIndex = Cell.RowIndex;
                            ProbeIndex    = new SColumn_struct(Cell);

                            PStyle[0] = Sheet1.Workbook.CreateCellStyle();     //верх
                            CopyStyleFromCell(PStyle[0], Cell); PStyle[0].BorderBottom = NPOI.SS.UserModel.BorderStyle.None;
                            PStyle[1] = Sheet1.Workbook.CreateCellStyle();     //середина
                            CopyStyleFromCell(PStyle[1], Cell); PStyle[1].BorderBottom = PStyle[1].BorderTop = NPOI.SS.UserModel.BorderStyle.None;
                            PStyle[2] = Sheet1.Workbook.CreateCellStyle();     //низ
                            CopyStyleFromCell(PStyle[2], Cell); PStyle[2].BorderTop = NPOI.SS.UserModel.BorderStyle.None;
                        }, 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);
                        }, 5);
                        ExistColumn.AddExchange("{Дата}", DT.ToShortDateString(), 5);
                        ExistColumn.AddExchange("{Номер протокола}", Protokol.Number.ToString() + "-АВ-" + DT.Month.ToString() + "/" + DT.Year.ToString(), 5);

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

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

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

                        RowIndex = SPointRowIndex;
                    }

                    Sheet1.ShiftRows(RowIndex, Sheet1.LastRowNum, Protokol.TableCount * Protokol.MarkCount - 1);

                    int ONumber = 0;

                    for (int i = 0; i < Protokol.TableCount; i++)
                    {
                        NPOI.SS.UserModel.IRow Row;

                        for (int j = 0; j < Protokol.MarkCount; j++)
                        {
                            Row = Sheet1.CreateRow(RowIndex++);

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

                            if (ProbeIndex.Index > -1)
                            {
                                ATMisc.SetValue(Row, Protokol[i].Number, ProbeIndex.Index, ProbeIndex.Style);
                            }

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

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

                        Row = Sheet1.GetRow(RowIndex - Protokol.MarkCount);

                        switch (Protokol.MarkCount)
                        {
                        case 1:
                            ATMisc.SetValue(Row, Protokol.GetTableName(i), SPointIndex.Index, SPointIndex.Style);
                            break;

                        case 2:
                            Sheet1.AddMergedRegion(new CellRangeAddress(RowIndex - Protokol.MarkCount, RowIndex - 1, SPointIndex.Index, SPointIndex.Index));
                            ATMisc.SetValue(Row, Protokol.GetTableName(i), SPointIndex.Index, SPStyle[0]);
                            Sheet1.GetRow(RowIndex - 1).CreateCell(SPointIndex.Index).CellStyle = SPStyle[2];

                            if (ProbeIndex.Index > -1)
                            {
                                Sheet1.GetRow(RowIndex - 1).CreateCell(ProbeIndex.Index).CellStyle = PStyle[2];
                                Sheet1.AddMergedRegion(new CellRangeAddress(RowIndex - Protokol.MarkCount, RowIndex - 1, ProbeIndex.Index, ProbeIndex.Index));
                            }
                            break;

                        default:
                            Sheet1.AddMergedRegion(new CellRangeAddress(RowIndex - Protokol.MarkCount, RowIndex - 1, SPointIndex.Index, SPointIndex.Index));

                            ATMisc.SetValue(Row, Protokol.GetTableName(i), SPointIndex.Index, SPStyle[0]);

                            if (ProbeIndex.Index > -1)
                            {
                                Sheet1.GetRow(RowIndex - 1).CreateCell(ProbeIndex.Index).CellStyle  = PStyle[2];
                                Sheet1.GetRow(RowIndex - 1).CreateCell(SPointIndex.Index).CellStyle = PStyle[2];
                                Sheet1.AddMergedRegion(new CellRangeAddress(RowIndex - Protokol.MarkCount, RowIndex - 1, ProbeIndex.Index, ProbeIndex.Index));

                                for (int s = Protokol.MarkCount - 2; s > 1; s--)
                                {
                                    Sheet1.GetRow(RowIndex - 1 - s).GetCell(ProbeIndex.Index).CellStyle = PStyle[1];
                                    //Sheet1.GetRow(RowIndex - 1 - s).GetCell(SPointIndex.Index).CellStyle = SPStyle[1];    //это тут лишнее
                                }

                                Sheet1.GetRow(RowIndex - 1).CreateCell(ProbeIndex.Index).CellStyle = PStyle[2];
                                Sheet1.GetRow(RowIndex - 1).GetCell(SPointIndex.Index).CellStyle   = SPStyle[2];
                            }
                            else
                            {
                                for (int s = Protokol.MarkCount - 2; s > 1; s--)
                                {
                                    Sheet1.GetRow(RowIndex - 1 - s).GetCell(SPointIndex.Index).CellStyle = SPStyle[1];
                                }

                                Sheet1.GetRow(RowIndex - 1).GetCell(SPointIndex.Index).CellStyle = SPStyle[2];
                            }
                            break;
                        }
                    }
                    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--;
                    }
                }

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

                return(true);
            }
        }
Exemple #13
0
            public MiddleMarks_class(int Year, uint PodrID, uint ObjectID)
            {
                this.Year     = Year;
                this.PodrID   = PodrID;
                this.ObjectID = ObjectID;

                var SM     = T.SM.CreateSubTable(false);
                var SMS    = T.SMS.CreateSubTable(false);
                var Sample = T.Sample.CreateSubTable(false);
                var SPoint = T.SPoint.CreateSubTable(false);

                var Mark = T.Mark.CreateSubTable(false);

                int DayFrom = ATMisc.GetYMDFromYearMonth(Year, 1) - 1;
                int DayTo   = ATMisc.GetYMDFromYearMonth(Year + 1, 1);
                var Union   = data.User <uint>(C.User.UType) == (uint)data.UType.Union;

                var SMQ = SM.QUERRY()
                          .SHOW
                          .WHERE
                          .AC(C.SM.Amount).More.BV <double>(0)
                          .AND.ARC(C.SM.Sample, C.Sample.CYMD).More.BV(DayFrom)
                          .AND.ARC(C.SM.Sample, C.Sample.CYMD).Less.BV(DayTo)
                          .AND.ARC(C.SM.Sample, C.Sample.Number).More.BV(0)
                          .AND.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.YMDS).Less.BV(DayTo)
                          .AND
                          .OB()
                          .ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.YMDE).More.BV(DayFrom)
                          .OR.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.YMDE).EQUI.BV(0)
                          .CB()
                          .AND.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.Union).EQUI.BV(Union);

                var SMSQ = SMS.QUERRY()
                           .SHOW
                           .WHERE
                           .ARC(C.SMS.SPoint, C.SPoint.YMDS).Less.BV(DayTo)
                           .AND
                           .OB()
                           .ARC(C.SMS.SPoint, C.SPoint.YMDE).More.BV(DayFrom)
                           .OR.ARC(C.SMS.SPoint, C.SPoint.YMDE).EQUI.BV(0)
                           .CB()
                           .AND.ARC(C.SMS.SPoint, C.SPoint.Union).EQUI.BV(Union);

                var SPQ = SPoint.QUERRY()
                          .SHOW
                          .WHERE
                          .AC(C.SPoint.YMDS).Less.BV(DayTo)
                          .AND
                          .OB()
                          .AC(C.SPoint.YMDE).More.BV(DayFrom)
                          .OR.AC(C.SPoint.YMDE).EQUI.BV(0)
                          .CB()
                          .AND.C(C.SPoint.Union, Union);

                var SQ = Sample.QUERRY()
                         .SHOW
                         .WHERE
                         .AC(C.Sample.Number).More.BV <int>(0)
                         .AND.ARC(C.Sample.SPoint, C.SPoint.YMDS).Less.BV(DayTo)
                         .AND
                         .OB()
                         .ARC(C.Sample.SPoint, C.SPoint.YMDE).More.BV(DayFrom)
                         .OR.ARC(C.Sample.SPoint, C.SPoint.YMDE).EQUI.BV(0)
                         .CB()
                         .AND.AC(C.Sample.CYMD).More.BV(DayFrom)
                         .AND.AC(C.Sample.CYMD).Less.BV(DayTo)
                         .AND.ARC(C.Sample.SPoint, C.SPoint.Union).EQUI.BV(Union);

                if (PodrID > 0)
                {
                    SMQ.AND.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.Podr).EQUI.BV(PodrID);
                    SMSQ.AND.ARC(C.SMS.SPoint, C.SPoint.Podr).EQUI.BV(PodrID);
                    SPQ.AND.AC(C.SPoint.Podr).EQUI.BV(PodrID);
                    SQ.AND.ARC(C.Sample.SPoint, C.SPoint.Podr).EQUI.BV(PodrID);
                }

                if (ObjectID > 0)
                {
                    SMQ.AND.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.Object).EQUI.BV(ObjectID);
                    SMSQ.AND.ARC(C.SMS.SPoint, C.SPoint.Object).EQUI.BV(ObjectID);
                    SPQ.AND.AC(C.SPoint.Object).EQUI.BV(ObjectID);
                    SQ.AND.ARC(C.Sample.SPoint, C.SPoint.Object).EQUI.BV(ObjectID);
                }


                SMQ.DO();
                SMSQ.DO();
                SPQ.DO();
                SQ.DO();

                Mark.QUERRY().SHOW.WHERE.AC(C.Mark.Number).More.BV(0).DO();

                var MarkPerSP     = new bool[SPoint.Rows.Count, Mark.Rows.Count];
                var SPSampleCount = new int[SPoint.Rows.Count, 12];
                var MarkIndexes   = new int[Mark.Rows.Count];

                for (int i = 0; i < MarkIndexes.Length; i++)
                {
                    MarkIndexes[i] = -1;
                }

                for (int i = 0; i < SMS.Rows.Count; i++)    //получаю список доступных показателей, по спискам показателей для точек отбора
                {
                    var SPRI = SPoint.Rows.GetIndex(SMS.Rows.Get_UnShow <uint>(i, C.SMS.SPoint));
                    var MID  = SMS.Rows.Get_UnShow <uint>(i, C.SMS.Mark);

                    if (SPRI > -1)
                    {
                        var MRI = Mark.Rows.GetIndex(SMS.Rows.Get_UnShow <uint>(i, C.SMS.Mark));

                        if (MRI > -1)
                        {
                            MarkPerSP[SPRI, MRI] = true;
                            MarkIndexes[MRI]     = 1;
                        }
                    }
                }

                for (int i = 0; i < SPoint.Rows.Count; i++) //получаю показатели по настройке точек отбора "Игнорировать список показателей"
                {
                    if (SPoint.Rows.Get <bool>(i, C.SPoint.IMLst))
                    {
                        for (int j = 0; j < MarkIndexes.Length; j++)
                        {
                            MarkIndexes[j]  = 1;
                            MarkPerSP[i, j] = true;
                        }
                    }
                }

                {   //определяю список показателей вывода
                    int count = 0;

                    for (int i = 0; i < MarkIndexes.Length; i++)
                    {
                        if (MarkIndexes[i] > 0)
                        {
                            MarkIndexes[i] = count++;
                        }
                    }

                    Marks = new Mark_struct[count];
                }

                //определяю показатели, которые в любом случае надо выводить
                for (int i = 0; i < MarkIndexes.Length; i++)
                {
                    if (MarkIndexes[i] > -1 &&
                        ((data.VarType)Mark.Rows.Get_UnShow <uint>(i, C.Mark.VarType) == data.VarType.Bool || Mark.Rows.Get <bool>(i, C.Mark.ShowZr))) //булевый тип или настройка показателя
                    {
                        Marks[MarkIndexes[i]] = new Mark_struct(Mark.Rows.GetID(i));
                    }
                }

                //считаю кол-во замеров по месяцам и точкам отборов
                for (int i = 0; i < Sample.Rows.Count; i++)
                {
                    if (Sample.Rows.Get <int>(i, C.Sample.Number) > 0)
                    {
                        var SPRI = SPoint.Rows.GetIndex(Sample.Rows.Get_UnShow <uint>(i, C.Sample.SPoint));

                        if (SPRI > -1)
                        {
                            int tmpYear, tmpMonth, tmpDay;

                            ATMisc.GetYearMonthDayFromYMD(Sample.Rows.Get <int>(i, C.Sample.CYMD), out tmpYear, out tmpMonth, out tmpDay);

                            SPSampleCount[SPRI, tmpMonth - 1]++;
                        }
                    }
                }

                //заношу концентрации
                for (int i = 0; i < SM.Rows.Count; i++)
                {
                    var SMID = SM.Rows.GetID(i);

                    var SPRI = SPoint.Rows.GetIndex(SM.Rows.Get_UnShow <uint>(i, C.SM.Sample, C.Sample.SPoint));

                    var MID = SM.Rows.Get_UnShow <uint>(i, C.SM.Mark);

                    if (SPRI > -1)
                    {
                        var SRI = Sample.Rows.GetIndex(SM.Rows.Get_UnShow <uint>(i, C.SM.Sample));

                        if (SRI > -1)
                        {
                            var MIndex = Mark.Rows.GetIndex(MID);

                            if (MIndex > -1 && MarkPerSP[SPRI, MIndex])
                            {
                                MIndex = MarkIndexes[MIndex];

                                if (!Marks[MIndex].Existed)
                                {
                                    Marks[MIndex] = new Mark_struct(MID);
                                }

                                int tmpYear, tmpMonth, tmpDay;

                                ATMisc.GetYearMonthDayFromYMD(SM.Rows.Get <int>(i, C.SM.Sample, C.Sample.CYMD), out tmpYear, out tmpMonth, out tmpDay);

                                Marks[MIndex].AddAmount(tmpMonth - 1, (data.VarType)SM.Rows.Get_UnShow <uint>(i, C.SM.Mark, C.Mark.VarType), SM.Rows.Get <double>(i, C.SM.Amount));
                            }
                        }
                    }
                }

                //указываю кол-во замеров по месяцам и убираю не использованые показатели
                if (Marks.Length > 0)
                {
                    for (int i = 0; i < MarkIndexes.Length; i++)
                    {
                        if (MarkIndexes[i] > -1 && Marks[MarkIndexes[i]].Existed)
                        {
                            var SMRepMonth = new int[12];

                            for (int j = 0; j < SPoint.Rows.Count; j++)
                            {
                                if (MarkPerSP[j, i])
                                {
                                    for (int m = 0; m < 12; m++)    //месяцы
                                    {
                                        SMRepMonth[m] += SPSampleCount[j, m];
                                    }
                                }
                            }

                            for (int j = 0; j < SMRepMonth.Length; j++)
                            {
                                Marks[MarkIndexes[i]].SetMarksCount(SMRepMonth[j], j);
                            }
                        }
                    }

                    int RemoveCount = 0;

                    for (int i = Marks.Length - 2; i > -1; i--)
                    {
                        if (!Marks[i].Existed)
                        {
                            Array.Copy(Marks, i + 1, Marks, i, Marks.Length - i - 1);
                            RemoveCount++;
                        }
                    }

                    if (!Marks[Marks.Length - 1].Existed)
                    {
                        RemoveCount++;
                    }

                    Array.Resize(ref Marks, Marks.Length - RemoveCount);
                }

                Array.Sort(Marks, (it1, it2) => it1.Number.CompareTo(it2.Number));
            }
Exemple #14
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);
            }
        }
Exemple #15
0
        public static bool OtchMassOutgo(uint PodrID, int YMFrom, Podrs_class.PeriodType pt, uint OTypeID, bool ShowErrorMessage = true, bool CreateNew = true, bool Open = true)
        {
            bool Returning = false;

            RCache.Podrs = new RCache.Podrs_class();
            var Podrs = new Podrs_class(PodrID, pt, YMFrom, OTypeID);

            int Year, Month;

            ATMisc.GetYearMonthFromYM(YMFrom, out Year, out Month);
            if (Podrs.MarksCount == 0)
            {
                if (ShowErrorMessage)
                {
                    MessageBox.Show("Показатели не обнаружены", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                return(false);
            }

            {
                int tMCount = 0;

                for (int i = 0; i < Podrs.MarkCount; i++)
                {
                    if (Podrs.ShowMark(i))
                    {
                        tMCount++;
                    }
                }

                if (tMCount == 0)
                {
                    if (ShowErrorMessage)
                    {
                        MessageBox.Show("Показатели не обнаружены", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                    return(false);
                }
            }

            G.OPType.QUERRY().SHOW.DO();

            var StylesEDType = new NPOI.SS.UserModel.ICellStyle[G.OPType.Rows.Count];

            if (!Directory.Exists(Application.StartupPath + "\\Отчеты"))
            {
                Directory.CreateDirectory(Application.StartupPath + "\\Отчеты");
            }

            for (int i = 0; i < Podrs.Count; i++)   //подразделения
            {
                if (Podrs[i].MarksCount > 0)
                {
                    var NewFileName = Application.StartupPath + "\\Отчеты\\Расчет массы " + Podrs.PeriodName() + ' ' + Year.ToString() + ' ' + T.Podr.Rows.Get <string>(Podrs[i].PodrID, C.Podr.ShrName) + ".xls";

                    if (CreateNew || !File.Exists(NewFileName))
                    {
                        var WorkBook = ATMisc.GetGenericExcel("Расчет массы.xls");

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

                        var Sheet1 = WorkBook.GetSheet("Таблица");

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

                        var Exchanges = new CellExchange_Class(Sheet1);

                        NPOI.SS.UserModel.ICellStyle NumberStyle = null
                        , NameStyle   = null
                        , EdTypeStyle = null
                        , CodeStyle   = null
                        , FactStyle   = null
                        , BackStyle   = null
                        , CalcStyle   = null
                        , MassStyle   = null;

                        var Podr = RCache.Podrs[Podrs[i].PodrID];

                        Exchanges.AddExchange("{сооружение}", Podr.ShortName, 2);

                        for (int s = 0; s < Podrs[i].Count; s++)
                        {
                            if (Podrs[i][s].ObjectID > 0)
                            {
                                Exchanges.AddExchange("{объект}", T.Object.Rows.Get <string>(Podrs[i][s].ObjectID, C.Object.OType, C.OType.Name).ToLower(), 2);
                                break;
                            }
                        }

                        if (Podr.Ppls.Count == 0 || (data.PnMean)Podr.Ppls[0].PnMeanID != data.PnMean.Nachalnic)
                        {
                            if (ShowErrorMessage)
                            {
                                MessageBox.Show("У сооружения " + Podr.ShortName + " нет начальника.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            }
                            return(false);
                        }

                        Exchanges.AddExchange("{начальник сооружения}", Podr.Ppls[0].PeopleName, 2);
                        Exchanges.AddExchange("{профессия начальника}", Podr.Ppls[0].Profession, 2);
                        {
                            var PeopleID = RCache.PSG.GetPeopleID(Podr.PSG);

                            Exchanges.AddExchange("{профессия ответственного}", T.People.Rows.Get <string>(PeopleID, C.People.Prfssn, C.Prfssn.Name), 2);
                            Exchanges.AddExchange("{ФИО ответственного}", Misc.GetShortFIO(PeopleID), 2);
                        }
                        Exchanges.AddExchange("{год}", Year.ToString(), 5);

                        int NumberIndex = -1, NameIndex = -1, EdTypeIndex = -1, CodeIndex = -1, FactIndex = -1, BackIndex = -1, CalcIndex = -1, MassIndex = -1, RowIndex = -1;
                        {
                            int NumberRowIndex = -1, NameRowIndex = -1, EdTypeRowIndex = -1, CodeRowIndex = -1, FactRowIndex = -1, BackRowIndex = -1, CalcRowIndex = -1, MassRowIndex = -1;

                            Exchanges.AddExchange("{выпуск}", Cell =>
                            {
                                NumberIndex    = Cell.ColumnIndex;
                                NumberRowIndex = Cell.RowIndex;
                                NumberStyle    = Cell.CellStyle;
                            }, 1);
                            Exchanges.AddExchange("{имя}",
                                                  Cell =>
                            {
                                NameIndex    = Cell.ColumnIndex;
                                NameRowIndex = Cell.RowIndex;
                                NameStyle    = Cell.CellStyle;
                            }, 1);
                            Exchanges.AddExchange("{едизм}",
                                                  Cell =>
                            {
                                EdTypeIndex    = Cell.ColumnIndex;
                                EdTypeRowIndex = Cell.RowIndex;
                                EdTypeStyle    = Cell.CellStyle;
                            }, 1);
                            Exchanges.AddExchange("{код}",
                                                  Cell =>
                            {
                                CodeIndex    = Cell.ColumnIndex;
                                CodeRowIndex = Cell.RowIndex;
                                CodeStyle    = Cell.CellStyle;
                            }, 1);
                            Exchanges.AddExchange("{факт}",
                                                  Cell =>
                            {
                                FactIndex    = Cell.ColumnIndex;
                                FactRowIndex = Cell.RowIndex;
                                FactStyle    = Cell.CellStyle;
                            }, 1);
                            Exchanges.AddExchange("{фон}",
                                                  Cell =>
                            {
                                BackIndex    = Cell.ColumnIndex;
                                BackRowIndex = Cell.RowIndex;
                                BackStyle    = Cell.CellStyle;
                            }, 1);
                            Exchanges.AddExchange("{расчет}",
                                                  Cell =>
                            {
                                CalcIndex    = Cell.ColumnIndex;
                                CalcRowIndex = Cell.RowIndex;
                                CalcStyle    = Cell.CellStyle;
                            }, 1);
                            Exchanges.AddExchange("{масса}",
                                                  Cell =>
                            {
                                MassIndex    = Cell.ColumnIndex;
                                MassRowIndex = Cell.RowIndex;

                                MassStyle = Cell.CellStyle;

                                for (int j = 0; j < StylesEDType.Length; j++)
                                {
                                    StylesEDType[j] = WorkBook.CreateCellStyle();
                                    CopyStyleFromCell(StylesEDType[j], Cell);
                                    StylesEDType[j].DataFormat = WorkBook.CreateDataFormat().GetFormat("#,##0.000\" " + G.OPType.Rows.Get <string>(j, C.OPType.EdTypeT, C.EdType.Name) + "\"");
                                }
                            }, 1);

                            Exchanges.AddExchange("{период}", Podrs.PeriodName(), 2);

                            SetResp(Exchanges, Podr.ID, data.TResp.LaboratoryProtokol);

                            if (NameRowIndex == NumberRowIndex && NumberRowIndex == FactRowIndex && NumberRowIndex == BackRowIndex && BackRowIndex == CalcRowIndex && NumberRowIndex == MassRowIndex)
                            {
                                if (MassRowIndex == -1)
                                {
                                    if (ShowErrorMessage)
                                    {
                                        MessageBox.Show("Критически важные колонки таблицы не найдены(выпуск,наименование, факт, фон, расчет, масса).", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                    }
                                    return(false);
                                }
                            }
                            else
                            {
                                if (ShowErrorMessage)
                                {
                                    MessageBox.Show("Метки всех колонок должны находиться на одной строке.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                }
                                return(false);
                            }

                            RowIndex = NumberRowIndex;

                            Sheet1.ShiftRows(RowIndex + 1, Sheet1.LastRowNum, -1);
                        }

                        Sheet1.SetColumnHidden(BackIndex, !Podrs.AllowBack);
                        Sheet1.SetColumnHidden(CalcIndex, !Podrs.AllowBack);

                        if (!Podrs.AllowBack)
                        {
                            int NewWidth = Sheet1.GetColumnWidth(BackIndex) + Sheet1.GetColumnWidth(FactIndex) + Sheet1.GetColumnWidth(CalcIndex);
                            Sheet1.SetColumnWidth(FactIndex, NewWidth);
                        }

                        for (int j = 0; j < Podrs[i].Count; j++)   //выпуск
                        {
                            Sheet1.ShiftRows(RowIndex, Sheet1.LastRowNum, Podrs[i][j].Count + 2);

                            var LastRow = Sheet1.CreateRow(RowIndex + Podrs[i][j].Count);

                            if (EdTypeIndex > -1)
                            {
                                ATMisc.SetValue(LastRow, "тыс.м3", EdTypeIndex, EdTypeStyle);
                            }

                            ATMisc.SetValue(LastRow, T.Object.Rows.Get <string>(Podrs[i][j].ObjectID, C.Object.OLocationTo, C.OLocation.Name), MassIndex, MassStyle);

                            if (Podrs[i][j].Count > 0)
                            {
                                for (int k = 0; k < Podrs[i][j].Count; k++)
                                {
                                    var MarkID = Podrs[i][j].MarkID(k);

                                    var Row = Sheet1.CreateRow(RowIndex++);
                                    if (NameIndex > -1)
                                    {
                                        ATMisc.SetValue(Row, T.Mark.Rows.Get <string>(MarkID, C.Mark.Name), NameIndex, NameStyle);
                                    }
                                    if (EdTypeIndex > -1)
                                    {
                                        ATMisc.SetValue(Row, T.Mark.Rows.Get <string>(MarkID, C.Mark.EdType, C.EdType.Name), EdTypeIndex, EdTypeStyle);
                                    }
                                    if (CodeIndex > -1)
                                    {
                                        ATMisc.SetValue(Row, T.Mark.Rows.Get <int>(MarkID, C.Mark.Code), CodeIndex, CodeStyle);
                                    }

                                    double Front = RCache.Marks[MarkID].GetRound(Podrs[i][j][k].FMiddle)
                                    , Back       = RCache.Marks[MarkID].GetRound(Podrs[i][j][k].BMiddle);

                                    ATMisc.SetValue(Row, Front, FactIndex, FactStyle);

                                    ATMisc.SetValue(Row, Back, BackIndex, BackStyle);

                                    ATMisc.SetFormula(Row, "if(" + GetColCharName(FactIndex) + RowIndex.ToString() + "<=" + GetColCharName(BackIndex) + RowIndex.ToString() + ", \"<=фон\", " + GetColCharName(FactIndex) + RowIndex.ToString() + "-" + GetColCharName(BackIndex) + RowIndex.ToString() + ")", CalcIndex, CalcStyle);
                                    ATMisc.SetFormula(Row, "if(" + GetColCharName(CalcIndex) + RowIndex.ToString() + "=\"<=фон\",\"\", " + GetColCharName(CalcIndex) + RowIndex.ToString() + "*" + GetColCharName(FactIndex) + (LastRow.RowNum + 1).ToString() + "*" + DTSF(RCache.Marks[MarkID].Multyply) + ")", MassIndex, StylesEDType[G.OPType.Rows.GetIndex(RCache.Marks[MarkID].OPTypeID)]);

                                    if (NumberIndex > -1)
                                    {
                                        ATMisc.SetValue(Row, "", NumberIndex, NumberStyle);
                                    }
                                }

                                if (NumberIndex > -1)
                                {
                                    ATMisc.SetValue(Sheet1.GetRow(RowIndex - Podrs[i][j].Count), Podrs[i][j].VShortName + " [" + (j + 1).ToString() + "]", NumberIndex, NumberStyle);
                                }

                                if (NumberIndex > -1)
                                {
                                    ATMisc.SetValue(LastRow, "", NumberIndex, NumberStyle);
                                }
                            }
                            else
                            {
                                if (NumberIndex > -1)
                                {
                                    ATMisc.SetValue(LastRow, Podrs[i][j].VShortName + " [" + (j + 1).ToString() + "]", NumberIndex, NumberStyle);
                                }
                            }
                            RowIndex++;

                            ATMisc.SetValue(LastRow, Podrs[i][j].VolumeSumm, FactIndex, FactStyle);
                            ATMisc.SetValue(LastRow, "Объём сброшеных вод", NameIndex, NameStyle);

                            if (EdTypeIndex > -1)
                            {
                                ATMisc.SetValue(LastRow, "тыс.м3", EdTypeIndex, EdTypeStyle);
                            }

                            if (CodeIndex > -1)
                            {
                                ATMisc.SetValue(LastRow, "", CodeIndex, CodeStyle);
                            }

                            ATMisc.SetValue(LastRow, "", BackIndex, BackStyle);
                            ATMisc.SetValue(LastRow, "", CalcIndex, CalcStyle);

                            Sheet1.CreateRow(RowIndex++).Height = 50;
                        }

                        Returning = Returning || SaveExcel(WorkBook, NewFileName, Open);
                    }
                    else if (Open && File.Exists(NewFileName))
                    {
                        System.Diagnostics.Process.Start(NewFileName);
                        Returning = true;
                    }
                }
            }

            return(Returning);
        }
Exemple #16
0
 private void Show_button_Click(object sender, EventArgs e)
 {
     if (period == Misc.Podrs_class.PeriodType.None)
     {
         MessageBox.Show(this, "Не указан тип периода", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
     }
     else
     {
         if (OType_combo.SelectedIndex > -1)
         {
             if (Podr_combo.SelectedIndex == 0)
             {
                 Misc.OtchMassOutgo(0, ATMisc.GetYMFromDateTime(From_Picker.Value), period, G.OType.Rows.GetID(OType_combo.SelectedIndex), true, CreateNew_check.Checked);
             }
             else
             {
                 Misc.OtchMassOutgo(G.Podr.Rows.GetID(Podr_combo.SelectedIndex - 1), ATMisc.GetYMFromDateTime(From_Picker.Value), period, G.OType.Rows.GetID(OType_combo.SelectedIndex), true, CreateNew_check.Checked);
             }
         }
         else
         {
             MessageBox.Show(this, "Не указан тип воды", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
         }
     }
 }
Exemple #17
0
        public static bool OtchMiddleMarks(MiddleMarks_class Marks, bool ShowErrorMessage = true, bool Open = true)
        {
            var WorkBook = ATMisc.GetGenericExcel("Средние концентрации за год.xls");

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

            var Sheet = WorkBook.GetSheet("печать");

            if (Sheet == null)
            {
                if (ShowErrorMessage)
                {
                    MessageBox.Show("В шаблоне не найден лист с именем \"печать\"", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                return(false);
            }

            var Exchange = new CellExchange_Class(Sheet);

            if (Marks.PodrID == 0)
            {
                Exchange.AddExchange("{подразделение}", "Все подразделения", 5);
            }
            else
            {
                Exchange.AddExchange("{подразделение}", T.Podr.Rows.Get <string>(Marks.PodrID, C.Podr.ShrName), 5);
            }

            var ObjectName = (Marks.ObjectID == 0 ? T.Object.Rows.Get <string>(Marks.ObjectID, C.Object.Name) : "Все");

            Exchange.AddExchange("{объект}", ObjectName, 5);

            Exchange.AddExchange("{год}", Marks.Year.ToString(), 5);

            var MarkNameIndex       = new SColumn_struct(-1, null);
            var VGIndex             = new SColumn_struct(-1, null);
            var EdTypeIndex         = new SColumn_struct(-1, null);
            var MiddlesMonthIndexes = new SColumn_struct[12];
            var MiddlesQIndexes     = new SColumn_struct[4];
            var MiddleYearMarkIndex = new SColumn_struct(-1, null);

            int MarkRowIndex = -1;
            int VGRowIndex   = -1;

            {
                int MarkNameRowIndex       = -1;
                int EdTypeRowIndex         = -1;
                var MiddlesMonthRowIndexes = new int[12];
                var MiddlesQRowIndexes     = new int[4];
                int MiddleYearMarkRowIndex = -1;

                var MiddlesMonthVGRowIndexes = new int[12];
                var MiddlesQVGRowIndexes     = new int[4];

                Exchange.AddExchange("{показатель}", Cell =>
                {
                    MarkNameIndex    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MarkNameRowIndex = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{выпуск}", Cell =>
                {
                    VGIndex    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    VGRowIndex = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{едизм}", Cell =>
                {
                    EdTypeIndex    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    EdTypeRowIndex = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Январь}", Cell =>
                {
                    MiddlesMonthIndexes[0]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[0] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Февраль}", Cell =>
                {
                    MiddlesMonthIndexes[1]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[1] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Март}", Cell =>
                {
                    MiddlesMonthIndexes[2]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[2] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за 1 кв.}", Cell =>
                {
                    MiddlesQIndexes[0]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesQRowIndexes[0] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Апрель}", Cell =>
                {
                    MiddlesMonthIndexes[3]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[3] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Май}", Cell =>
                {
                    MiddlesMonthIndexes[4]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[4] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Июнь}", Cell =>
                {
                    MiddlesMonthIndexes[5]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[5] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за 2 кв.}", Cell =>
                {
                    MiddlesQIndexes[1]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesQRowIndexes[1] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Июль}", Cell =>
                {
                    MiddlesMonthIndexes[6]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[6] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Август}", Cell =>
                {
                    MiddlesMonthIndexes[7]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[7] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Сентябрь}", Cell =>
                {
                    MiddlesMonthIndexes[8]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[8] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за 3 кв.}", Cell =>
                {
                    MiddlesQIndexes[2]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesQRowIndexes[2] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Октябрь}", Cell =>
                {
                    MiddlesMonthIndexes[9]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[9] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Ноябрь}", Cell =>
                {
                    MiddlesMonthIndexes[10]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[10] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за Декабрь}", Cell =>
                {
                    MiddlesMonthIndexes[11]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesMonthRowIndexes[11] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за 4 кв.}", Cell =>
                {
                    MiddlesQIndexes[3]    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddlesQRowIndexes[3] = Cell.RowIndex;
                }, 1);

                Exchange.AddExchange("{средний за За год}", Cell =>
                {
                    MiddleYearMarkIndex    = new SColumn_struct(Cell.ColumnIndex, Cell.CellStyle);
                    MiddleYearMarkRowIndex = Cell.RowIndex;
                }, 1);

                if (Marks.PodrID > 0)
                {
                    Exchange.AddExchange("{должность ответственного}", T.People.Rows.Get <string>(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Marks.PodrID, C.Podr.PSG)), C.People.Prfssn, C.Prfssn.Name), 5);
                    Exchange.AddExchange("{ФИО ответственного}", Misc.GetShortFIO(RCache.PSG.GetPeopleID((data.PSG)T.Podr.Rows.Get_UnShow <uint>(Marks.PodrID, C.Podr.PSG))), 5);
                }
                else
                {
                    Exchange.AddExchange("{должность ответственного}", "", 5);
                    Exchange.AddExchange("{ФИО ответственного}", "", 5);
                }

                SetResp(Exchange, Marks.PodrID, data.TResp.LaboratoryProtokol);

                if (MarkNameRowIndex == EdTypeRowIndex &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[0] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[1] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[2] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[3] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[4] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[5] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[6] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[7] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[8] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[9] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[10] &&
                    EdTypeRowIndex == MiddlesMonthRowIndexes[11] &&
                    EdTypeRowIndex == MiddlesQRowIndexes[0] &&
                    EdTypeRowIndex == MiddlesQRowIndexes[1] &&
                    EdTypeRowIndex == MiddlesQRowIndexes[2] &&
                    EdTypeRowIndex == MiddlesQRowIndexes[3] &&
                    EdTypeRowIndex == MiddleYearMarkRowIndex)
                {
                    MarkRowIndex = EdTypeRowIndex;
                }
                else
                {
                    if (ShowErrorMessage)
                    {
                        MessageBox.Show("Не все колонки показателей были найдены или не все из них расположены на одной строке.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                    return(false);
                }
            }

            Sheet.ShiftRows(MarkRowIndex + 1, Sheet.LastRowNum, -1);  //затираю метки

            int RowIndex = MarkRowIndex;

            for (int i = 0; i < Marks.MarkCount; i++)
            {
                var Mark = RCache.Marks[Marks.MarkID(i)];

                if (Marks.GetMarkEnabled(i) && (Marks.YearSumm(i) > 0 || Mark.ShowZero))
                {
                    Sheet.ShiftRows(RowIndex, Sheet.LastRowNum, 1);

                    var Row = Sheet.CreateRow(RowIndex++);
                    //выпуск
                    ATMisc.SetValue(Row, "", VGIndex.Index, VGIndex.Style);
                    //наименование
                    ATMisc.SetValue(Row, Marks.MarkName(i), MarkNameIndex.Index, MarkNameIndex.Style);
                    //едизм
                    ATMisc.SetValue(Row, Marks.EdName(i), EdTypeIndex.Index, EdTypeIndex.Style);
                    //месяцы
                    for (byte j = 0; j < MiddlesMonthIndexes.Length; j++)
                    {
                        ATMisc.SetValue(Row, Mark.GetRoundedVolume(Marks.MonthSumm(i, j)), MiddlesMonthIndexes[j].Index, MiddlesMonthIndexes[j].Style);
                    }
                    //кварталы
                    for (byte j = 0; j < MiddlesQIndexes.Length; j++)
                    {
                        ATMisc.SetValue(Row, Mark.GetRoundedVolume(Marks.QuartalSumm(i, j)), MiddlesQIndexes[j].Index, MiddlesQIndexes[j].Style);
                    }
                    //за год
                    ATMisc.SetValue(Row, Mark.GetRoundedVolume(Marks.YearSumm(i)), MiddleYearMarkIndex.Index, MiddleYearMarkIndex.Style);
                }
            }

            string PodrName;

            if (Marks.PodrID > 0)
            {
                PodrName = ' ' + T.Podr.Rows.Get <string>(Marks.PodrID, C.Podr.ShrName);
            }
            else
            {
                PodrName = "все";
            }

            if (!Directory.Exists(Application.StartupPath + "\\Отчеты"))
            {
                Directory.CreateDirectory(Application.StartupPath + "\\Отчеты");
            }

            return(SaveExcel(WorkBook, Application.StartupPath + "\\Отчеты\\СП " + PodrName + ", " + ObjectName + ", " + Marks.Year.ToString() + ".xls", Open, ShowErrorMessage));
        }
Exemple #18
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);
            }
        }
Exemple #19
0
    public PeriodChange_Form()
    {
        InitializeComponent();

        Date_Picker.Value = ATMisc.GetDateTimeFromYM(Employe_Form.WorkYM);
    }
Exemple #20
0
        private void Protoks_Grid_CellValuePushed(object sender, DataGridViewCellValueEventArgs e)
        {
            switch (e.ColumnIndex)
            {
            case Columns.DateCr:
                if (e.Value != null)
                {
                    DateTime DateCr;

                    if (DateTime.TryParse((string)e.Value, out DateCr))
                    {
                        Protokols[e.RowIndex].YM  = ATMisc.GetYMFromDateTime(DateCr);
                        Protokols[e.RowIndex].Day = DateCr.Day;
                    }
                }
                break;

            case Columns.Act:
                if (e.Value != null)
                {
                    int ActNumber;

                    if (int.TryParse((string)e.Value, out ActNumber))
                    {
                        Protokols[e.RowIndex].Act = ActNumber;
                    }
                }
                break;

            case Columns.Time:
                if (e.Value != null)
                {
                    var value = ((string)e.Value).Replace('-', ':');

                    Protokols[e.RowIndex].StrTime = value;
                }
                break;

            case Columns.Number:
                if (IsInPeriod && AllowGeneration)
                {
                    if (e.Value != null)
                    {
                        int Number;

                        if (int.TryParse((string)e.Value, out Number))
                        {
                            if (Number == 0)
                            {
                                MessageBox.Show(this, "Номер протокола должен быть больше нуля.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            }
                            else
                            {
                                Protokols[e.RowIndex].Number = Number;
                            }
                        }
                    }
                }
                break;
            }
        }
Exemple #21
0
        private void Protoks_Grid_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
        {
            switch (e.ColumnIndex)
            {
            case Columns.ID:
                e.Value = Protokols[e.RowIndex].PrtID;
                break;

            case Columns.Act:
                if (Protokols[e.RowIndex].Act > 0)
                {
                    e.Value = Protokols[e.RowIndex].Act;
                }
                break;

            case Columns.Time:
                e.Value = Protokols[e.RowIndex].StrTime;
                break;

            case Columns.Samples:
                e.Value = Protokols[e.RowIndex].SampleCount;
                break;

            case Columns.Date:
                e.Value = Protokols[e.RowIndex].DateOstr;
                break;

            case Columns.DateCr:
                e.Value = ATMisc.GetDateTimeFromYM(Protokols[e.RowIndex].YM).AddDays(Protokols[e.RowIndex].Day - 1).ToShortDateString();
                break;

            case Columns.Type:
                e.Value = Protokols[e.RowIndex].ProtoType;
                break;

            case Columns.Podr:
                e.Value = T.Podr.Rows.Get <string>(Protokols[e.RowIndex].PodrID, C.Podr.ShrName);
                break;

            case Columns.Number:
                if (Protokols[e.RowIndex].Number == 0)
                {
                    Protoks_Grid[Columns.Number, e.RowIndex].Style.BackColor = Color.Red;
                }
                else
                {
                    Protoks_Grid[Columns.Number, e.RowIndex].Style.BackColor = Color.White;
                }

                if (Protokols[e.RowIndex].PrtID == 0)
                {
                    Protoks_Grid[Columns.Samples, e.RowIndex].Style.BackColor = Protoks_Grid[Columns.ID, e.RowIndex].Style.BackColor = Color.LightGreen;
                }
                else
                {
                    Protoks_Grid[Columns.Samples, e.RowIndex].Style.BackColor = Protoks_Grid[Columns.ID, e.RowIndex].Style.BackColor = Color.White;
                }

                e.Value = Protokols[e.RowIndex].Number;
                break;
            }
        }
Exemple #22
0
        public static bool OtchProtokolType4(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(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("Протокол испытаний тип 4.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 StyleLR_CC = WorkBook.CreateCellStyle();
                StyleLR_CC.BorderLeft        = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLR_CC.BorderRight       = NPOI.SS.UserModel.BorderStyle.Thin;
                StyleLR_CC.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
                StyleLR_CC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                StyleLR_CC.SetFont(Font);
                StyleLR_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;
                string AddInSheetName = T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.PSG, C.PSG.Name);

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

                    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);
                    }

                    //ищу метку
                    int TableLocation = -1;
                    int ColumnsCount  = 0;
                    for (int i = 0; i < ByPodrSheet.LastRowNum + 1; i++)
                    {
                        var R = ByPodrSheet.GetRow(i);

                        if (R != null)
                        {
                            if (ColumnsCount < R.LastCellNum)
                            {
                                ColumnsCount = R.LastCellNum;
                            }

                            for (int j = 0; j < R.LastCellNum + 1; j++)
                            {
                                var Col = R.GetCell(j);
                                if (Col != null)
                                {
                                    if (Col.CellType == NPOI.SS.UserModel.CellType.String && Col.StringCellValue.ToLower() == "{таблица}")
                                    {
                                        if (j > 0)
                                        {
                                            MessageBox.Show("В листе \"" + UnDeleteSheetName + "\", положение метки таблицы не находится в первой ячейке", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                            return(false);
                                        }
                                        TableLocation = i;

                                        goto FindIt;
                                    }
                                }
                            }
                        }
                    }

                    MessageBox.Show("В листе \"" + UnDeleteSheetName + "\", не найдена метка таблицы", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);

                    FindIt :;

                    var SGrps = new List <List <Protokols_class.SGroup_class.Protokol_class.Sample_class> >();
                    SGrps.Add(new List <Protokols_class.SGroup_class.Protokol_class.Sample_class>());
                    SGrps[0].Add(Protokol[0]);

                    for (int i = 1; i < Protokol.SampleCount; i++)
                    {
                        for (int j = 0; j < SGrps.Count; j++)
                        {
                            if (SGrps[j][0].OLocationToID == Protokol[i].OLocationToID)
                            {
                                SGrps[j].Add(Protokol[i]);
                                goto FindedIt;
                            }
                        }

                        SGrps.Add(new List <Protokols_class.SGroup_class.Protokol_class.Sample_class>());
                        SGrps[SGrps.Count - 1].Add(Protokol[i]);

                        FindedIt :;
                    }

                    var Grps = new Grp_class[SGrps.Count];

                    for (int i = 0; i < Grps.Length; i++)
                    {
                        Grps[i] = new Grp_class(SGrps[i], ByPodrSheet.GetColumnWidth(4));
                    }
                    {       //Разбиватель ячеек
                            //Нужно посчитать длины и объединения такого количество ячеек, чтобы их объединения умещались друг под другом как цельное кол-во ячеек
                            //к примеру 1 и 3: первую нужно распилить на три одинаковые по длине

                        /*
                         |__.___._|
                         |__|__|__|
                         * 2 и 3
                         |__._|_.__|
                         |__|_._|__|
                         * при условии ограниченной суммарной длины ячеек и равной длины ячеек каждой группы
                         */
                        //в принципе алгоритм обобщенный, можно задавать их произвольное количество

                        int StartCell = 0;

                        while (true)
                        {
                            int MinWidth = 0;
                            for (int i = 1; i < Grps.Length; i++)
                            {
                                if (Grps[i].CellWidth(StartCell) < Grps[MinWidth].CellWidth(StartCell))
                                {
                                    MinWidth = i;
                                }
                            }
                            for (int i = 0; i < Grps.Length; i++)
                            {
                                if (Grps[i].CellCount - 1 != StartCell)
                                {
                                    goto TryNext;
                                }
                            }
                            break;
                            TryNext :;

                            for (int i = 0; i < Grps.Length; i++)
                            {
                                if (i != MinWidth)
                                {
                                    Grps[i].CellSplit(StartCell, Grps[MinWidth].CellWidth(StartCell));
                                }
                            }

                            StartCell++;
                        }
                    }
                    {
                        //заношу полученные длины колонок

                        for (int i = 0; i < Grps[0].CellCount; i++)
                        {
                            ByPodrSheet.SetColumnWidth(4 + i, Grps[0].CellWidth(i));
                        }

                        {
                            int LastColumnIndex = 4 + Grps[0].CellCount;

                            for (int i = ByPodrSheet.NumMergedRegions - 1; i > -1; i--)
                            {
                                var Merged = ByPodrSheet.GetMergedRegion(i);

                                if (Merged.FirstColumn > 3 && Merged.LastColumn > 3)
                                {
                                    ByPodrSheet.AddMergedRegion(
                                        new CellRangeAddress(Merged.FirstRow
                                                             , Merged.LastRow
                                                             , NewColumnIndex(Merged.FirstColumn, ColumnsCount, LastColumnIndex)
                                                             , NewColumnIndex(Merged.LastColumn, ColumnsCount, LastColumnIndex)));

                                    ByPodrSheet.RemoveMergedRegion(i);
                                }
                                else if (Merged.LastColumn > 3)
                                {
                                    ByPodrSheet.AddMergedRegion(
                                        new CellRangeAddress(Merged.FirstRow
                                                             , Merged.LastRow
                                                             , Merged.FirstColumn
                                                             , NewColumnIndex(Merged.LastColumn, ColumnsCount, LastColumnIndex)));

                                    ByPodrSheet.RemoveMergedRegion(i);
                                }
                            }

                            for (int i = 0; i < ByPodrSheet.LastRowNum + 1; i++)
                            {
                                var R = ByPodrSheet.GetRow(i);

                                if (R != null)
                                {
                                    for (int j = R.LastCellNum - 1; j > 3; j--)
                                    {
                                        var Col = R.GetCell(j);

                                        if (Col != null)
                                        {
                                            int NewIndex = NewColumnIndex(Col.ColumnIndex, ColumnsCount, LastColumnIndex);

                                            if (NewIndex != Col.ColumnIndex)
                                            {
                                                var TCell = R.GetCell(NewIndex);      //баг в библиотеке
                                                if (TCell == null)
                                                {
                                                    TCell = R.CreateCell(NewIndex);
                                                }

                                                R.RemoveCell(TCell);

                                                R.MoveCell(Col, NewIndex);
                                            }
                                        }
                                    }
                                }
                            }

                            ByPodrSheet.ShiftRows(TableLocation, ByPodrSheet.LastRowNum, Protokol.MarkCount * SGrps.Count + 3 * SGrps.Count + SGrps.Count - 2);      //количество показателей в таблицах + заголовки и расстояния между таблицами
                        }

                        int StartRowIndex = TableLocation;

                        for (int i = 0; i < Grps.Length; i++)
                        {
                            var Row = ByPodrSheet.CreateRow(StartRowIndex);
                            //Основной заголовок
                            ATMisc.SetValue(Row, "№ п/п", 0, StyleLRT_CC);
                            ByPodrSheet.AddMergedRegion(new CellRangeAddress(StartRowIndex, StartRowIndex + 2, 0, 0));

                            ATMisc.SetValue(Row, "Показатели", 1, StyleLRT_CC);
                            ByPodrSheet.AddMergedRegion(new CellRangeAddress(StartRowIndex, StartRowIndex + 2, 1, 1));

                            ATMisc.SetValue(Row, "Ед.изм.", 2, StyleLRT_CC);
                            ByPodrSheet.AddMergedRegion(new CellRangeAddress(StartRowIndex, StartRowIndex + 2, 2, 2));

                            ATMisc.SetValue(Row, "НД на методику", 3, StyleLRT_CC);
                            ByPodrSheet.AddMergedRegion(new CellRangeAddress(StartRowIndex, StartRowIndex + 2, 3, 3));

                            ATMisc.SetValue(Row, "Результаты испытаний", 4, Grps[i].CellCount + 3, StyleLTD_CC, StyleTD_CC, StyleRTD_CC);

                            Row = ByPodrSheet.CreateRow(++StartRowIndex);
                            ATMisc.SetValue(Row, "", 0, StyleLR_CC);
                            ATMisc.SetValue(Row, "", 1, StyleLR_CC);
                            ATMisc.SetValue(Row, "", 2, StyleLR_CC);
                            ATMisc.SetValue(Row, "", 3, StyleLR_CC);
                            ATMisc.SetValue(Row, Grps[i].OLocationName, 4, Grps[i].CellCount + 3, StyleLTD_CC, StyleTD_CC, StyleRTD_CC);

                            Row = ByPodrSheet.CreateRow(++StartRowIndex);
                            ATMisc.SetValue(Row, "", 0, StyleLR_CC);
                            ATMisc.SetValue(Row, "", 1, StyleLR_CC);
                            ATMisc.SetValue(Row, "", 2, StyleLR_CC);
                            ATMisc.SetValue(Row, "", 3, StyleLR_CC);

                            {    //Заголовки замеров
                                int s = 0;

                                for (int k = 0; k < Grps[i].SampleCount; k++)
                                {
                                    int KNum = s;

                                    for (s = KNum + 1; s < Grps[i].CellCount; s++)
                                    {
                                        if (Grps[i].GetSetIn(s))
                                        {
                                            break;
                                        }
                                    }

                                    if (KNum < s - 1)
                                    {
                                        ATMisc.SetValue(Row, "№ " + Grps[i].GetSample(k).Number.ToString(), 4 + KNum, 3 + s, StyleLTD_CC, StyleTD_CC, StyleRTD_CC);
                                    }
                                    else
                                    {
                                        ATMisc.SetValue(Row, "№ " + Grps[i].GetSample(k).Number.ToString(), 4 + KNum, StyleLRTD_CC);
                                    }
                                }
                            }
                            int MarkNumber = 0;

                            for (int j = 0; j < Protokol.TotalMarkCount; j++)
                            {
                                if (Protokol.GetTotalAlowedMark(j))
                                {
                                    MarkNumber++;
                                    Row = ByPodrSheet.CreateRow(++StartRowIndex);
                                    int s = 0;

                                    for (int k = 0; k < Grps[i].SampleCount; k++)
                                    {
                                        //заношу данные показателя
                                        ATMisc.SetValue(Row, MarkNumber, 0, StyleLRTD_CC);
                                        ATMisc.SetValue(Row, Protokol.GetTotalMarkName(j), 1, StyleLRTD_CC);
                                        ATMisc.SetValue(Row, Protokol.GetTotalMarkEdType(j), 2, StyleLRTD_CC);
                                        ATMisc.SetValue(Row, RCache.Marks[Protokol.GetTotalMarkID(j)].GetNorm(Grps[i].GetSample(k).NormID).MethodName, 3, StyleLRTD_CC);

                                        //заношу данные концентраций
                                        int KNum = s;

                                        for (s = KNum + 1; s < Grps[i].CellCount; s++)
                                        {
                                            if (Grps[i].GetSetIn(s))
                                            {
                                                break;
                                            }
                                        }

                                        if (KNum < s - 1)
                                        {
                                            ATMisc.SetValue(Row, Grps[i].GetSample(k)[j].Amount, 4 + KNum, 3 + s, StyleLTD_CC, StyleTD_CC, StyleRTD_CC);
                                        }
                                        else
                                        {
                                            ATMisc.SetValue(Row, Grps[i].GetSample(k)[j].Amount, 4 + KNum, StyleLRTD_CC);
                                        }
                                    }
                                }
                            }

                            StartRowIndex += 2;
                        }
                    }

                    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--;
                    }
                }

                var         DT      = Protokol.Date;
                SelectHuman _shuman = new SelectHuman();
                Dictionary <string, int> _prtObject = new Dictionary <string, int>(); // Нужно для сверки имя объекта
                G.Object.QUERRY().SHOW.DO();
                int    _objC    = G.Object.Rows.Count;
                string _Papos   = string.Empty;
                string _Address = string.Empty;
                string _objName = string.Empty;
                string _object  = string.Empty;
                string _norm    = string.Empty;
                int    OTypeID  = 0;
                int    count    = 0;
                for (int i = 0; i < _objC; i++)
                {
                    _prtObject.Add(G.Object.Rows.Get_UnShow <string>(i, C.Object.Name).ToLower(),
                                   G.Object.Rows.Get_UnShow <int>(i, C.Object.OType)
                                   );
                    if (Protokol.ProtoType == "Колодец\\Шламонакопитель")
                    {
                        _objName = Protokol.Objects.Remove(Protokol.Objects.IndexOf(','));
                    }
                    if (_prtObject.ContainsKey(_objName))
                    {
                        OTypeID = _prtObject[_objName];
                    }
                    if (OTypeID == 6)
                    {
                        G.PlaceSelection.QUERRY().SHOW.
                        WHERE.
                        C(C.PlaceSelection.OType, OTypeID).AND.
                        C(C.PlaceSelection.Object, Protokol.ObjectID).AND.
                        C(C.PlaceSelection.Podr, Protokol.PodrID).DO();
                        count    = G.PlaceSelection.Rows.Count;
                        _Address = G.PlaceSelection.Rows.Get_UnShow <string>(0, C.PlaceSelection.Adress);
                        _Papos   = G.PaPoS.Rows.Get_UnShow <string>(G.PlaceSelection.Rows.Get_UnShow <int>(0, C.PlaceSelection.PaPoS) - 1, C.PaPoS.Name);
                        _norm    = G.Norm.Rows.Get_UnShow <string>(G.PlaceSelection.Rows.Get_UnShow <int>(0, C.PlaceSelection.Norm) - 1, C.Norm.Name);
                    }
                }
                _shuman.ShowDialog();
                if (_object == "")
                {
                    _object = G.Object.Rows.Get_UnShow <string>(Protokol.ObjectID, C.Object.OType, C.OType.Name);
                }
                GetProtokolsExchanges(TitleSheet
                                      , ATMisc.GetDateTimeFromYM(Employe_Form.SPoints.YM).Year
                                      , Protokol.Number.ToString() + "-" + T.Podr.Rows.Get <string>(Protokol.PodrID, C.Podr.ShrName) + " - " + DT.Month.ToString() + "/" + DT.Year.ToString()
                                      , _object.ToLower()
                                      , _object.ToLower()
                                      , Protokol.PTypes.ToLower()
                                      , _Address
                                      , Protokol.DateOstr
                                      , Protokol.DateP
                                      , Protokol.StrTime
                                      , _probsHuman
                                      , Protokol.Causes
                                      , Protokol.Numbers
                                      , DT.Day.ToString()
                                      , ATMisc.GetMonthName2(DT.Month)
                                      , DT.Month.ToString()
                                      , _norm
                                      , _Papos
                                      , 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)
                                      , 0).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);
                    Exchanges.AddExchange("{должность ответственного 2}", _secondSubsPosition, 5);
                    Exchanges.AddExchange("{ФИО ответственного 2}", _secondSubsPFIO, 5);

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

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

                return(true);
            }
        }
Exemple #23
0
 public override string ToString()
 {
     return($"{ATMisc.GetDateTimeFromYM(YM).ToString("yyyy.MM")}, НДС={NDS}, тариф={Price}");
 }
Exemple #24
0
        public static void DataBaseLoad(DataBase db, StartupLogo_Form.Loading_class Loading)
        {
            if (Loading != null)
            {
                Loading.LoadingComment = "SPool";
            }

            if (data.SynchPool != null)
            {
                data.SynchPool.Prepare();
            }

            /*
             *  река(речные нормы)
             *  питьевая(питьевые нормы)
             *  разводящая(питьевые нормы)
             *  промывочная(промывочные нормы)
             *  река выше стока(речные нормы)
             *  река ниже стока(речные нормы)
             *  поступило на очистку(пдк)
             *  очищенное в воду(нормы на очищенное)
             */

            if (!AddRemote(db, Loading, "Prfssn", "Професия", ref T.Prfssn, ref G.Prfssn,
                           newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 85);
                newTable.Columns.AddRelation(T.PnMean.GetColumn(C.PnMean.Name));

                newTable.Columns.Add_Unique("Name");
            }, false))
            {
                return;
            }

            if (!AddRemote(db, Loading, "People", "Сотрудник", ref T.People, ref G.People,
                           newTable =>
            {
                newTable.Columns.AddString("Name1", "Фамилия", 30);
                newTable.Columns.AddString("Name2", "Имя", 30);
                newTable.Columns.AddString("Name3", "Отчество", 30);
                newTable.Columns.AddRelation(T.Prfssn.GetColumn(C.Prfssn.Name));

                //newTable.Columns.Add_Unique(C.People.name1, C.People.name2, C.People.name3, C.People.Prfssn);
            }, false))
            {
                return;
            }

            if (!AddRemote(db, Loading, "PSGM", "Метод для группы", ref T.PSGM, ref G.PSGM,
                           newTable =>
            {
                newTable.Columns.AddInt32("YM", "Период начала использования");
                newTable.Columns.AddRelation(T.PSG.GetColumn(C.PSG.Name));
                newTable.Columns.AddString("Name", "Наименование", 200);
                newTable.Columns.AddRelation(T.People.GetColumn(C.People.name1));

                newTable.Columns.Add_Unique(C.PSGM.YM, C.PSGM.PSG);
            }, false))
            {
                return;
            }

            if (!AddRemote(db, Loading, "PodrPpl", "Сотрудник в подразделении", ref T.PodrPpl, ref G.PodrPpl,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.Podr.GetColumn(C.Podr.ShrName));       //
                newTable.Columns.AddRelation(T.People.GetColumn(C.People.name1));     //

                newTable.Columns.Add_Unique(C.PodrPpl.People, C.PodrPpl.Podr);
            }, false))
            {
                return;
            }

            G.PodrPpl.Rows.SetEditForm(C.PodrPpl.GetEdit);
            G.PodrPpl.Rows.SetAddForm(C.PodrPpl.GetEdit);

            T.PodrPpl.Add("Сотрудник", 2, true, true,
                          (R) => { return(Misc.GetPWP(T.PodrPpl.Rows.Get_UnShow <uint>(R.ID, C.PodrPpl.People))); });
            T.PodrPpl.Add(C.PodrPpl.Podr);

            if (!AddRemote(db, Loading, "Resp", "Ответственность", ref T.Resp, ref G.Resp,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.PodrPpl.GetColumn(C.PodrPpl.People)); //
                newTable.Columns.AddRelation(T.TResp.GetColumn(C.TResp.Name));       //

                newTable.Columns.Add_Unique(C.Resp.PodrPpl, C.Resp.TResp);
            }, false))
            {
                return;
            }

            T.Resp.Add("Подразделение", (R) => { return(T.Resp.Rows.Get <string>(R.ID, C.Resp.PodrPpl, C.PodrPpl.Podr, C.Podr.ShrName)); });
            T.Resp.Add("Сотрудник", (R) => { return(Misc.GetShortFIO(T.Resp.Rows.Get_UnShow <uint>(R.ID, C.Resp.PodrPpl, C.PodrPpl.People))); });
            T.Resp.Add(C.Resp.TResp);

            if (!AddSynch(db, Loading, "EdType", "Единица измерений", ref T.EdType, ref G.EdType,
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 25);
                newTable.Columns.AddString("MZero", "Значит пусто", 25);

                newTable.Columns.Add_Unique(C.EdType.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "BackGrd", "Группа фона", ref T.BackGrd, ref G.BackGrd,
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 25);

                newTable.Columns.Add_Unique(C.BackGrd.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "OPType", "Единица измерений вывода", ref T.OPType, ref G.OPType,
                          newTable =>
            {
                newTable.Columns.AddDOUBLE("Multy", "Множитель");
                newTable.Columns.AddRelation(T.EdType.GetColumn(C.EdType.Name), "T", "Единица измерений ввода");
                newTable.Columns.AddRelation(T.EdType.GetColumn(C.EdType.Name), "F", "Единица измерений вывода");

                newTable.Columns.Add_Unique(C.OPType.EdTypeT, C.OPType.EdTypeF);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "Mark", "Показатель", ref T.Mark, ref G.Mark,
                          newTable =>
            {
                newTable.Columns.AddInt32("Code", "Код");
                newTable.Columns.AddString("Name", "Наименование", 55);
                newTable.Columns.AddByte("Round", "Округление", 1);
                newTable.Columns.AddBool("Exp", "Экспотенциальный");
                newTable.Columns.AddRelation(T.VarType.GetColumn(C.VarType.Name));
                newTable.Columns.AddRelation(T.EdType.GetColumn(C.EdType.Name));
                newTable.Columns.AddRelation(T.OPType.GetColumn(C.OPType.EdTypeF));
                newTable.Columns.AddByte("Number", "Номер");           //позиция показателя
                newTable.Columns.AddBool("ShowZr", "Показывать ноль"); //Show Zero

                newTable.Columns.Add_Unique(C.Mark.Name);
            }, false))
            {
                return;
            }

            T.Mark.Rows.SetAddForm(C.Mark.GetEdit);
            T.Mark.Rows.SetEditForm(C.Mark.GetEdit);

            if (!AddSynch(db, Loading, "PType", "Тип пробы", ref T.PType, ref G.PType, //Probe Type
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 50);

                newTable.Columns.Add_Unique(C.PType.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "SCause", "Цель испытания", ref T.SCause, ref G.SCause, //Probe Cause
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 200);

                newTable.Columns.Add_Unique(C.SCause.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "Norm", "Норматив", ref T.Norm, ref G.Norm,
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 50);
                newTable.Columns.AddDATE("DFrom", "Действует от");
                newTable.Columns.AddDATE("DTo", "Действует до");
                newTable.Columns.AddRelation(T.NType.GetColumn(C.NType.Name));
                newTable.Columns.AddBool("Enabled", "Задействовать");
                newTable.Columns.AddBool("Show", "Развернуто");

                newTable.Columns.Add_Unique(C.Norm.Name);
            }, false))
            {
                return;
            }

            T.Norm.Add(C.Norm.Name);
            T.Norm.Add(C.Norm.NType);
            T.Norm.Add(C.Norm.DFrom);
            T.Norm.Add(T.Norm.GetColumn(C.Norm.DTo).AlterName, (R) =>
            {
                if (T.Norm.Rows.Get <DateTime>(R.ID, C.Norm.DTo).Ticks == 0)
                {
                    return("");
                }
                else
                {
                    return(T.Norm.Rows.Get <string>(R.ID, C.Norm.DTo));
                }
            });
            T.Norm.Add(C.Norm.Enabled);

            if (!AddSynch(db, Loading, "Method", "Метод", ref T.Method, ref G.Method,
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 55);
                newTable.Columns.AddRelation(T.Norm.GetColumn(C.Norm.Name));
                newTable.Columns.AddRelation(T.Mark.GetColumn(C.Mark.Name));

                newTable.Columns.Add_Unique(C.Method.Norm, C.Method.Mark);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "MError", "Точность измерений", ref T.MError, ref G.MError,
                          newTable =>
            {
                newTable.Columns.AddRelation(T.Norm.GetColumn(C.Norm.Name));
                newTable.Columns.AddRelation(T.Mark.GetColumn(C.Mark.Name));
                newTable.Columns.AddDOUBLE("From", "Значение от");
                newTable.Columns.AddDOUBLE("To", "Значение до");
                newTable.Columns.AddDOUBLE("Volume", "Значение");
                newTable.Columns.AddBool("Percent", "Это процент");

                newTable.Columns.Add_Unique(C.MError.Norm, C.MError.Mark, C.MError.From, C.MError.To);
            }, false))
            {
                return;
            }
            G.MError.Get_Default();

            if (!AddSynch(db, Loading, "OLocation", "Место", ref T.OLocation, ref G.OLocation,   //Object location
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 50);
                newTable.Columns.AddString("ShrName", "Краткое наименование", 5);
                newTable.Columns.AddBool("Volumed", "Использовать объём");

                newTable.Columns.Add_Unique(C.OLocation.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "OType", "Тип объекта", ref T.OType, ref G.OType,   //Object Type
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 25);

                newTable.Columns.Add_Unique(C.OType.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "Object", "Объект испытания", ref T.Object, ref G.Object,   //Object Type
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 100);
                newTable.Columns.AddRelation(T.OType.GetColumn(C.OType.Name));
                newTable.Columns.AddRelation(T.OLocation.GetColumn(C.OLocation.Name), "From", "Источник");
                newTable.Columns.AddRelation(T.OLocation.GetColumn(C.OLocation.Name), "To", "Сброс");
                newTable.Columns.AddRelation(T.Norm.GetColumn(C.Norm.Name));

                newTable.Columns.Add_Unique(C.Object.Name);
                newTable.Columns.Add_Unique(C.Object.Name, C.Object.OLocationFrom, C.Object.OLocationTo);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "PMNorm", "Значение нормы", ref T.PMNorm, ref G.PMNorm, //Podr Mark
                          newTable =>
            {
                newTable.Columns.AddRelation(T.Norm.GetColumn(C.Norm.Name));
                newTable.Columns.AddRelation(T.Mark.GetColumn(C.Mark.Name));
                newTable.Columns.AddRelation(T.Podr.GetColumn(C.Podr.ShrName));
                newTable.Columns.AddRelation(T.OLocation.GetColumn(C.OLocation.ShrName));
                newTable.Columns.AddDOUBLE("LFrom", "От");
                newTable.Columns.AddDOUBLE("LTo", "До");
                //newTable.Columns.AddBool("BckGrnd", "+ Фон");

                newTable.Columns.Add_Unique(C.PMNorm.Norm, C.PMNorm.Mark, C.PMNorm.Podr, C.PMNorm.OLocation);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "Area", "Район", ref T.Area, ref G.Area,
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 50);

                newTable.Columns.Add_Unique(C.Area.Name);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "MVolume", "Объём выпуска", ref T.MVolume, ref G.MVolume, //Month Group
                          newTable =>
            {
                newTable.Columns.AddRelation(T.OLocation.GetColumn(C.OLocation.Name));
                newTable.Columns.AddInt32("YM", "Номер периода");
                newTable.Columns.AddDOUBLE("Volume", "Объём");

                newTable.Columns.Add_Unique(C.MVolume.OLocation, C.MVolume.YM);
            }, false))
            {
                return;
            }

            T.MVolume.Rows.SetEditForm(C.MVolume.GetEdit);
            T.MVolume.Rows.SetAddForm(C.MVolume.GetEdit);

            T.MVolume.Add(C.MVolume.OLocation);
            T.MVolume.Add(T.MVolume.GetColumn(C.MVolume.YM).AlterName, (R) => ATMisc.GetDateTimeFromYM(G.MVolume.Rows.Get <int>(R, C.MVolume.YM)).ToShortDateString());
            T.MVolume.Add(C.MVolume.Volume);

            if (!AddSynch(db, Loading, "PaPoS", "План и место отбора образцов", ref T.PaPoS, ref G.PaPoS, //Plan and place of sampling
                          newTable =>
            {
                newTable.Columns.AddString("Name", "Наименование", 75);

                newTable.Columns.Add_Unique(C.PaPoS.Name);
            }, false))
            {
                return;
            }

            if (!AddRemote(db, Loading, "SPoint", "Точка отбора", ref T.SPoint, ref G.SPoint, //Sample point
                           newTable =>
            {                                                                                 //
                newTable.Columns.AddInt32("Number", "Номер");
                newTable.Columns.AddString("Name", "Наименование", 500);
                newTable.Columns.AddRelation(T.Area.GetColumn(C.Area.Name));
                newTable.Columns.AddBool("BckGnd", "Фоновый");         //Background
                newTable.Columns.AddBool("UsBckGnd", "Применять фон"); //Use Background
                newTable.Columns.AddRelation(T.PType.GetColumn(C.PType.Name));
                newTable.Columns.AddRelation(T.Object.GetColumn(C.Object.Name));
                newTable.Columns.AddRelation(T.Podr.GetColumn(C.Podr.ShrName));
                newTable.Columns.AddInt32("YMDS", "Начало действия");                 //Year Month Day Start
                newTable.Columns.AddInt32("YMDE", "Окончание действия");              //Year Month Day End
                newTable.Columns.AddBool("IMLst", "Игнорировать список показателей"); //Ignore Mark List
                newTable.Columns.AddRelation(T.SGroup.GetColumn(C.SGroup.Name));      //One of Two
                newTable.Columns.AddInt32("SGNum", "Номер группы");                   //Sample Point Group Name
                newTable.Columns.AddRelation(T.BackGrd.GetColumn(C.BackGrd.Name));
                newTable.Columns.AddBool("Union", "Объединена");                      //Union
                newTable.Columns.AddRelation(T.PaPoS.GetColumn(C.PaPoS.Name));
                //newTable.Columns.AddBool("CanChange", "Можно редактировать", DataBase.ColLocation.Local, true, true);

                //newTable.Columns.Add_Unique(C.SPoint.Union, C.SPoint.Name, C.SPoint.Podr, C.SPoint.YMDS);
            }, false))
            {
                return;
            }
            T.SPoint.Rows.SetEditForm(C.SPoint.GetEdit);
            T.SPoint.Rows.SetAddForm(C.SPoint.GetEdit);

            if (!AddRemote(db, Loading, "Sample", "Замер", ref T.Sample, ref G.Sample,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.SPoint.GetColumn(C.SPoint.Name));
                newTable.Columns.AddInt32("Number", "Номер");                //
                newTable.Columns.AddInt32("Loc", "Порядок создания");        //
                newTable.Columns.AddInt32("CYMD", "Дата отбора");            //Creation YearMonthDay
                newTable.Columns.AddInt32("AYMD", "Дата(начала) испытаний"); //Analis YearMonthDay
                newTable.Columns.AddRelation(T.Resp.GetColumn(C.Resp.PodrPpl), "", "Пробоотборщик");
                newTable.Columns.AddRelation(T.SCause.GetColumn(C.SCause.Name));

                //newTable.Columns.Add_Unique(C.Sample.SPoint, C.Sample.Loc);
            }, false))
            {
                return;
            }

            if (!AddSynch(db, Loading, "TestCond", "Тип условия испытания", ref T.TestCond, ref G.TestCond, //Test condition
                          newTable =>
            {
                newTable.Columns.AddRelation(T.SPoint.GetColumn(C.SPoint.Name));
                newTable.Columns.AddString("Name", "Наименование", 20);
                newTable.Columns.AddRelation(T.EdType.GetColumn(C.EdType.Name));

                newTable.Columns.Add_Unique(C.TestCond.SPoint, C.TestCond.Name);
            }, false))
            {
                return;
            }

            T.TestCond.Rows.SetAddForm(C.TestCond.GetEdit);
            T.TestCond.Rows.SetEditForm(C.TestCond.GetEdit);

            if (!AddSynch(db, Loading, "TCS", "Условие испытания", ref T.TCS, ref G.TCS, //Test condition sample
                          newTable =>
            {
                newTable.Columns.AddRelation(T.Sample.GetColumn(C.Sample.CYMD));
                newTable.Columns.AddRelation(T.TestCond.GetColumn(C.TestCond.Name));
                newTable.Columns.AddString("Value", "Значение свойства", 100);

                newTable.Columns.Add_Unique(C.TCS.Sample, C.TCS.TestCond);
            }, false))
            {
                return;
            }

            T.TCS.Rows.SetAddForm(C.TCS.GetEdit);
            T.TCS.Rows.SetEditForm(C.TCS.GetEdit);

            if (!AddRemote(db, Loading, "SMS", "Показатель к точке отбора", ref T.SMS, ref G.SMS,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.SPoint.GetColumn(C.SPoint.Name));
                newTable.Columns.AddRelation(T.Mark.GetColumn(C.Mark.Name));

                newTable.Columns.Add_Unique(C.SMS.SPoint, C.SMS.Mark);
            }, false))
            {
                return;
            }

            T.Sample.Rows.SetAddForm(C.Sample.GetEdit);
            T.Sample.Rows.SetEditForm(C.Sample.GetEdit);

            if (!AddRemote(db, Loading, "SM", "Концентрация к показателю", ref T.SM, ref G.SM,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.Sample.GetColumn(C.Sample.AYMD));
                newTable.Columns.AddRelation(T.Mark.GetColumn(C.Mark.Name));
                newTable.Columns.AddDOUBLE("Amount", "Значение");

                newTable.Columns.Add_Unique(C.SM.Sample, C.SM.Mark);
            }, false))
            {
                return;
            }

            T.SM.Add(T.Sample.AlterName, (R) => R.ID);
            T.SM.Add(C.SM.Mark);
            T.SM.Add(C.SM.Amount);

            G.SMMiddle = T.SM.CreateSubTable();

            if (!AddRemote(db, Loading, "Prt", "Протокол", ref T.Prt, ref G.Prt,
                           newTable =>
            {
                newTable.Columns.AddInt32("YM", "Месяц");
                newTable.Columns.AddInt32("Time", "Время");
                newTable.Columns.AddInt32("Number", "Номер протокола");
                newTable.Columns.AddBool("Union", "Объединение");
                newTable.Columns.AddRelation(T.OLocation.GetColumn(C.OLocation.Name));
                newTable.Columns.AddRelation(T.Podr.GetColumn(C.Podr.ShrName));
                newTable.Columns.AddRelation(T.Area.GetColumn(C.Area.Name));
                newTable.Columns.AddRelation(T.Object.GetColumn(C.Object.Name));
                newTable.Columns.AddInt32("SCount", "Количество за период");
                newTable.Columns.AddRelation(T.SGroup.GetColumn(C.SGroup.Name));
                newTable.Columns.AddRelation(T.PaPoS.GetColumn(C.PaPoS.Name));
                newTable.Columns.AddInt32("Taos", "Акт отбора");      //the act of selection
                newTable.Columns.AddByte("Day", "День сохранения");   //

                //newTable.Columns.Add_Unique(C.Prt.YM, C.Prt.Number);
            }, false))
            {
                return;
            }

            if (!AddRemote(db, Loading, "PrtS", "Отборы протокола", ref T.PrtS, ref G.PrtS,
                           newTable =>
            {
                newTable.Columns.AddRelation(T.Prt.GetColumn(C.Prt.Number));
                newTable.Columns.AddRelation(T.Sample.GetColumn(C.Sample.CYMD));

                newTable.Columns.Add_Unique(C.PrtS.Prt, C.PrtS.Sample);
            }, false))
            {
                return;
            }

            T.PrtS.Add(T.Prt.GetColumn(C.Prt.Number).AlterName, (R) => T.PrtS.Rows.Get <int>(R.ID, C.PrtS.Prt, C.Prt.Number));
            T.PrtS.Add(T.Prt.GetColumn(C.Prt.YM).AlterName, (R) => ATMisc.GetDateTimeFromYM(T.PrtS.Rows.Get <int>(R.ID, C.PrtS.Prt, C.Prt.YM)).ToShortDateString());
            T.PrtS.Add(T.Podr.AlterName, (R) => T.PrtS.Rows.Get <string>(R.ID, C.PrtS.Prt, C.Prt.Podr, C.Podr.ShrName));
            T.PrtS.Add(T.SPoint.AlterName, (R) => T.PrtS.Rows.Get <string>(R.ID, C.PrtS.Sample, C.Sample.SPoint, C.SPoint.Name));
            T.PrtS.Add("Номер отбора", (R) => T.PrtS.Rows.Get <string>(R.ID, C.PrtS.Sample, C.Sample.Number));
            T.PrtS.Add(T.Sample.GetColumn(C.Sample.CYMD).AlterName, (R) => ATMisc.GetDateTime(T.PrtS.Rows.Get <int>(R.ID, C.PrtS.Sample, C.Sample.CYMD)).ToShortDateString());

            if (data.SynchPool != null)
            {
                data.SynchPool.Invalidate(G.UTable);
            }
        }
Exemple #25
0
        public MiddleMarks_Form()
        {
            InitializeComponent();

            Marks_Grid.Columns.Add("Name", "Наименование"); Marks_Grid.Columns[0].Width = 130;
            Marks_Grid.Columns.Add("EdType", "Ед.изм"); Marks_Grid.Columns[1].Width     = 50;
            Marks_Grid.Columns.Add("VGroup", "Выпуск"); Marks_Grid.Columns[2].Width     = 60;

            Marks_Grid.Columns[(int)Columns.EdType].DividerWidth = 2;

            for (int i = 0; i < ATMisc.MonthesCount; i++)
            {
                Marks_Grid.Columns.Add("m" + i.ToString(), ATMisc.GetMonthName1(i + 1));
                Marks_Grid.Columns[3 + i].Width = 60;
            }

            Marks_Grid.Columns[(int)Columns.m12].DividerWidth = 2;

            Marks_Grid.Columns.Add("q1", "К1"); Marks_Grid.Columns[(int)Columns.q1].Width = 60;
            Marks_Grid.Columns.Add("q2", "К2"); Marks_Grid.Columns[(int)Columns.q2].Width = 60;
            Marks_Grid.Columns.Add("q3", "К3"); Marks_Grid.Columns[(int)Columns.q3].Width = 60;
            Marks_Grid.Columns.Add("q4", "К4"); Marks_Grid.Columns[(int)Columns.q4].Width = 60;

            Marks_Grid.Columns[(int)Columns.q4].DividerWidth = 2;

            Marks_Grid.Columns.Add("Year", "Год"); Marks_Grid.Columns[(int)Columns.Year].Width = 60;

            int Year, Month;

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

            CanDo = false;

            this.SPoint = T.SPoint.CreateSubTable(false);

            Podr_combo.Items.Add("Все");

            Year_Box.Text = Year.ToString();

            if ((data.UType)data.User <uint>(C.User.UType) == data.UType.Employe)
            {
                this.PodrIDs = new uint[] { data.User <uint>(C.User.Podr) };
                Podr_combo.Items.Add(T.Podr.Rows.Get <string>(this.PodrIDs[0], C.Podr.ShrName));
                Podr_combo.Enabled = false;

                CanDo = true;
                Podr_combo.SelectedIndex = 1;
            }
            else
            {
                var PodrIDs = new List <uint>();

                var User = T.User.CreateSubTable(false);

                User.QUERRY().SHOW.WHERE.AC(C.User.Podr).More.BV <uint>(0).DO();

                for (int i = 0; i < User.Rows.Count; i++)
                {
                    if (PodrIDs.IndexOf(User.Rows.Get_UnShow <uint>(i, C.User.Podr)) < 0)
                    {
                        PodrIDs.Add(User.Rows.Get_UnShow <uint>(i, C.User.Podr));
                    }
                }

                this.PodrIDs = PodrIDs.ToArray();

                for (int i = 0; i < this.PodrIDs.Length; i++)
                {
                    Podr_combo.Items.Add(T.Podr.Rows.Get <string>(this.PodrIDs[i], C.Podr.ShrName));
                }

                CanDo = true;
                Podr_combo.SelectedIndex = 0;
            }
        }
Exemple #26
0
        private void CheckExist(object sender, EventArgs e)
        {
            Show_button.Enabled = false;

            uint PodrID;
            uint OTypeID;
            int  DayFrom, DayTo;

            if (OType_combo.SelectedIndex > -1)
            {
                OTypeID = G.OType.Rows.GetID(OType_combo.SelectedIndex);

                if (Podr_combo.SelectedIndex == 0)
                {
                    PodrID = 0;
                }
                else
                {
                    PodrID = G.Podr.Rows.GetID(Podr_combo.SelectedIndex - 1);
                }

                DayFrom = ATMisc.GetYMDFromDateTime(From_Picker.Value.AddDays(-1));
                DayTo   = ATMisc.GetYMDFromDateTime(To_Picker.Value.AddMonths(1));

                var CheckSM = G.SM.QUERRY()
                              .EXIST
                              .WHERE
                              .AC(C.SM.Amount).More.BV <double>(0)
                              .AND.ARC(C.SM.Sample, C.Sample.Number).More.BV <int>(0)
                              .AND.ARC(C.SM.Sample, C.Sample.CYMD).More.BV(DayFrom)
                              .AND.ARC(C.SM.Sample, C.Sample.CYMD).Less.BV(DayTo)
                              .AND.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.YMDS).Less.BV(DayTo)
                              .AND.OB()
                              .ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.YMDE).More.BV(DayFrom)
                              .OR.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.YMDE).EQUI.BV(0)
                              .CB()
                              .AND.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.Object, C.Object.OLocationFrom, C.OLocation.Volumed).EQUI.BV <bool>(true)
                              .AND.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.Object, C.Object.OType).EQUI.BV(OTypeID);

                if (PodrID > 0)
                {
                    CheckSM.AND.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.Podr).EQUI.BV(PodrID);
                }
                else
                {
                    CheckSM.AND.ARC(C.SM.Sample, C.Sample.SPoint, C.SPoint.Podr).More.BV <uint>(0);
                }

                if ((bool)CheckSM.DO()[0].Value)
                {
                    Existence_label.Text = "Концентрации обнаружены";
                    Show_button.Enabled  = true;
                }
                else
                {
                    Existence_label.Text = "Концентрации НЕ обнаружены";
                    Show_button.Enabled  = false;
                }
            }
            else
            {
                Existence_label.Text = "Заполните поля";
            }
        }
Exemple #27
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);
            }
        }
Exemple #28
0
        public void Base()
        {
            var YM = ATMisc.GetYMFromYearMonth(2016, 7);

            var SPoints = new Employe_Form.SPoints_class(YM);

            uint PodrID = 19;

            SPoints.UpdateSPoints(PodrID, false, false);

            if (SPoints.YM != YM)
            {
                Exception("не верный номер периода - " + SPoints.YM.ToString());
            }

            if (SPoints.SPointsCount != 4)
            {
                Exception("Не верное количество точек отбора - " + SPoints.SPointsCount.ToString());
            }

            if (SPoints[0].SampleCount != 3)
            {
                Exception("не верное количество замеров у точки отбора 0 - " + SPoints[0].SampleCount.ToString());
            }

            if (SPoints[1].SampleCount != 3)
            {
                Exception("не верное количество замеров у точки отбора 1 - " + SPoints[1].SampleCount.ToString());
            }

            if (SPoints[2].SampleCount != 0)
            {
                Exception("не верное количество замеров у точки отбора 2 - " + SPoints[2].SampleCount.ToString());
            }

            if (SPoints[3].SampleCount != 0)
            {
                Exception("не верное количество замеров у точки отбора 3 - " + SPoints[3].SampleCount.ToString());
            }

            CheckSorts(SPoints);

            {
                var SPID = SPoints[0].SPointID;

                var sample = new List <uint>();
                var sms    = new List <uint>();

                for (int i = 0; i < SPoints[0].SampleCount; i++)
                {
                    sample.Add(SPoints[0][i].SampleID);

                    for (int j = 0; j < SPoints[0][i].Marks.Length; j++)
                    {
                        if (SPoints[0][i].Marks[j].SMID > 0)
                        {
                            sms.Add(SPoints[0][i].Marks[j].SMID);
                        }
                    }
                }

                SPoints.DeleteSPoint(0);

                for (int i = 0; i < sample.Count; i++)
                {
                    if (T.Sample.Rows.Status(sample[i]) != DataBase.State.Deleted)
                    {
                        Exception("Не верный статус записи замера после удаления точки отбора");
                    }
                }

                for (int i = 0; i < sms.Count; i++)
                {
                    if (T.SM.Rows.Status(sms[i]) != DataBase.State.Deleted)
                    {
                        Exception("Не верный статус записи концентрации после удаления замера");
                    }
                }

                if (T.SPoint.Rows.Status(SPID) != DataBase.State.Deleted)
                {
                    Exception("Удаленная запись имеет не верный статус");
                }
            }

            if (SPoints[0].SampleCount != 3)
            {
                Exception("не верное количество замеров у точки отбора 0 - " + SPoints[0].SampleCount.ToString());
            }

            if (SPoints[1].SampleCount != 0)
            {
                Exception("не верное количество замеров у точки отбора 1 - " + SPoints[1].SampleCount.ToString());
            }

            if (SPoints[2].SampleCount != 0)
            {
                Exception("не верное количество замеров у точки отбора 2 - " + SPoints[2].SampleCount.ToString());
            }

            CheckSorts(SPoints);

            {
                var SampleID = SPoints[0][0].SampleID;
                var sms      = new List <uint>();

                for (int i = 0; i < SPoints[0][0].Marks.Length; i++)
                {
                    if (SPoints[0][0].Marks[i].SMID > 0)
                    {
                        sms.Add(SPoints[0][0].Marks[i].SMID);
                    }
                }

                SPoints[0].DeleteSample(0);

                if (T.Sample.Rows.Status(SampleID) != DataBase.State.Deleted)
                {
                    Exception("Удаленная запись имеет не верный статус");
                }

                for (int i = 0; i < sms.Count; i++)
                {
                    if (T.SM.Rows.Status(sms[i]) != DataBase.State.Deleted)
                    {
                        Exception("Не верный статус записи концентрации после удаления замера");
                    }
                }
            }

            if (SPoints[0].SampleCount != 2)
            {
                Exception("не верное количество замеров у точки отбора 0 - " + SPoints[0].SampleCount.ToString());
            }

            if (SPoints[1].SampleCount != 0)
            {
                Exception("не верное количество замеров у точки отбора 1 - " + SPoints[1].SampleCount.ToString());
            }

            if (SPoints[2].SampleCount != 0)
            {
                Exception("не верное количество замеров у точки отбора 2 - " + SPoints[2].SampleCount.ToString());
            }
        }