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); }
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); }
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(); }
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(); } }
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(); } }
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); }
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(); } }
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()); }
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()); }
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); }
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); } }
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)); }
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); } }
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); }
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); } } }
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)); }
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); } }
public PeriodChange_Form() { InitializeComponent(); Date_Picker.Value = ATMisc.GetDateTimeFromYM(Employe_Form.WorkYM); }
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; } }
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; } }
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); } }
public override string ToString() { return($"{ATMisc.GetDateTimeFromYM(YM).ToString("yyyy.MM")}, НДС={NDS}, тариф={Price}"); }
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); } }
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; } }
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 = "Заполните поля"; } }
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); } }
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()); } }