private void ShowSectionsNew(string currProposal) { ViewProposal = currProposal; ExPanel pnlInfoNew = pnlCurrent.GetControlByName("pnlInfoNew") as ExPanel; pnlInfoNew.Controls.Clear(); //Нужно дойти до контроля расходной string DocType; string IDCB = ""; //ИД контроля расходной List <string> SubjectDocs; if (!SS.GetSubjectDocs(currProposal, "Счет", out SubjectDocs)) { return; } //Если пустой, то это счет, а не заявка if (SubjectDocs.Count == 0) { return; } //Не пустой, ищем контроль расходной или адрес набор bool IsFound = false; foreach (string CurrentIDDoc in SubjectDocs) { if (SS.GetDocType(CurrentIDDoc, out DocType)) { if (DocType == "КонтрольРасходной") { IDCB = CurrentIDDoc; IsFound = true; break; //ПОЕХАЛИ ДАЛЬШЕ } } else { return; } } if (!IsFound) { return; } Dictionary <string, object> DaemondData = new Dictionary <string, object>(); if (!SS.GetDoc(currProposal, out DaemondData)) { return; } Dictionary <string, object> DataMap; List <string> CCListID; //теперь получаем список всех контролей набора if (!SS.GetCCListNew(IDCB, out CCListID, out DataMap)) { return; } //Тяжелая работа по выводу данных List <string> FieldList = new List <string>(); Dictionary <string, object> DataMapRead; FieldList.Add("DESCR"); const int FieldOnRow = 8; //Число полей на одну строку одного сектора Label[,] Lbl = new Label[FieldOnRow, CCListID.Count]; int i = 0; int dY; //Это смещение, м/у строками int FirstIndex = -1; //Индекс строки первой комплектации int LastIndex = -1; //Индекс строки последней комплектации DateTime MinDate = new DateTime(2020, 01, 01); //Минимальная дата DateTime MaxDate = new DateTime(1753, 01, 01); //Максимальная дата int MinTime = 86400; //Минимальное время int MaxTime = 0; //Максимальное время bool AllComplete = true; //Последнюю комплектацию не имеет смысла считать, если где-то, что-то не скомплектовано foreach (string ID in CCListID) { dY = i * 30; //Создадим метки для этого сектора for (int j = 0; j < FieldOnRow; j++) { Lbl[j, i] = new Label(); Lbl[j, i].Name = "_dyn" + j.ToString() + i.ToString(); Lbl[j, i].BackColor = Color.White; pnlInfoNew.Controls.Add(Lbl[j, i]); } //ОПРЕДЕЛИМСЯ С СОДЕРЖАНИЕМ И ЦВЕТАМИ ИСХОДЯ ИЗ СОСТОЯНИЯ //Ниже используются запросы к БД, не очень красиво, но в целях оптимизации (т.к. заглядывают сюда не всякий раз) //Поэтому, если что-то не срастается, то выводим пустые поля, там где несраслось if (SQL1S.IsVoidDate((DateTime)DataMap[ID + ".КонтрольНабора.Дата1"])) { //ОЖИДАНИЕ НАБОРА Lbl[1, i].Text = "."; Lbl[2, i].Text = "<< ожидание >>"; Lbl[3, i].Text = "__:__"; Lbl[4, i].Text = " неопределен"; Lbl[5, i].Text = "__:__"; //Цвета Lbl[0, i].ForeColor = Color.Red; Lbl[1, i].ForeColor = Color.Red; Lbl[2, i].ForeColor = Color.LightPink; Lbl[3, i].ForeColor = Color.LightGray; Lbl[4, i].ForeColor = Color.LightGray; Lbl[5, i].ForeColor = Color.LightGray; AllComplete = false; } else if (SQL1S.IsVoidDate((DateTime)DataMap[ID + ".КонтрольНабора.Дата2"])) { //В НАБОРЕ Lbl[1, i].Text = "..."; if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Наборщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true)) { Lbl[2, i].Text = "< не задан >"; } else { Lbl[2, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString()); } Lbl[3, i].Text = "(" + ((DateTime)DataMap[ID + ".КонтрольНабора.Дата1"]).ToString("dd.MM") + ") " + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время1"]) + " - ..."; Lbl[4, i].Text = " неопределен"; Lbl[5, i].Text = "__:__"; //Цвета Lbl[0, i].ForeColor = Color.Red; Lbl[1, i].ForeColor = Color.Red; Lbl[2, i].ForeColor = Color.Red; Lbl[3, i].ForeColor = Color.Red; Lbl[4, i].ForeColor = Color.LightGray; Lbl[5, i].ForeColor = Color.LightGray; AllComplete = false; } else if (SQL1S.IsVoidDate((DateTime)DataMap[ID + ".КонтрольНабора.Дата3"])) { //НАБРАНА Lbl[1, i].Text = "--"; if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Наборщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true)) { Lbl[2, i].Text = "< не задан >"; } else { Lbl[2, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString()); } Lbl[3, i].Text = "(" + ((DateTime)DataMap[ID + ".КонтрольНабора.Дата2"]).ToString("dd.MM") + ") " + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время1"]) + " - " + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время2"]); Lbl[4, i].Text = "<< ожидание >>"; Lbl[5, i].Text = "__:__"; //Цвета Lbl[0, i].ForeColor = Color.Red; Lbl[1, i].ForeColor = Color.Red; Lbl[2, i].ForeColor = Color.Red; Lbl[3, i].ForeColor = Color.Red; Lbl[4, i].ForeColor = Color.LightPink; Lbl[5, i].ForeColor = Color.LightGray; AllComplete = false; } else { //СКОМПЛЕКТОВАНА DateTime CurrentDate = (DateTime)DataMap[ID + ".КонтрольНабора.Дата3"]; int CurrentTime = (int)(decimal)DataMap[ID + ".КонтрольНабора.Время3"]; //Скорректируем максималный момент комплектации if (AllComplete && CurrentDate > MaxDate) { MaxDate = CurrentDate; MaxTime = CurrentTime; LastIndex = i; } else if (AllComplete && CurrentDate == MaxDate && CurrentTime > MaxTime) { MaxTime = CurrentTime; LastIndex = i; } //Скорректируем максималный момент комплектации if (CurrentDate < MinDate) { MinDate = CurrentDate; MinTime = CurrentTime; FirstIndex = i; } else if (CurrentDate == MinDate && CurrentTime < MinTime) { MinTime = CurrentTime; FirstIndex = i; } //собственно рисовалка Lbl[1, i].Text = "+"; if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Наборщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true)) { Lbl[2, i].Text = "< не задан >"; } else { Lbl[2, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString()); } Lbl[3, i].Text = "(" + ((DateTime)DataMap[ID + ".КонтрольНабора.Дата2"]).ToString("dd.MM") + ") " + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время1"]) + " - " + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время2"]); if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Комплектовщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true)) { Lbl[4, i].Text = "< не задан >"; } else { Lbl[4, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString()); } Lbl[5, i].Text = "(" + CurrentDate.ToString("dd.MM") + ") " + Helper.SecondToString(CurrentTime); //Цвета Lbl[0, i].ForeColor = Color.Black; Lbl[1, i].ForeColor = Color.Black; Lbl[2, i].ForeColor = Color.Black; Lbl[3, i].ForeColor = Color.Black; Lbl[4, i].ForeColor = Color.Black; Lbl[5, i].ForeColor = Color.Black; } //Заголовок Lbl[0, i].Font = FontTahoma14Bold; Lbl[0, i].TextAlign = ContentAlignment.TopCenter; Lbl[0, i].Location = new Point(3, 3 + dY); Lbl[0, i].Size = new Size(50, 27); if (DataMap[ID + ".КонтрольНабора.Сектор"].ToString() == SQL1S.GetVoidID()) { //Пустая Lbl[0, i].Text = "Пу"; } else { Lbl[0, i].Text = DataMap[DataMap[ID + ".КонтрольНабора.Сектор"] + ".@Сектор.Имя"].ToString().Trim(); } Lbl[0, i].Text += "-" + DataMap[ID + ".КонтрольНабора.НомерЛиста"]; //Мест погружено Lbl[1, i].Font = FontTahoma9Bold; Lbl[1, i].TextAlign = ContentAlignment.TopRight; Lbl[1, i].Location = new Point(56, 3 + dY); Lbl[1, i].Size = new Size(25, 13); //Мест всего Lbl[7, i].Font = FontTahoma9Bold; Lbl[7, i].TextAlign = ContentAlignment.TopRight; Lbl[7, i].Location = new Point(56, 17 + dY); Lbl[7, i].Size = new Size(25, 13); //Наборщик Lbl[2, i].Font = FontTahoma9Regular; Lbl[2, i].TextAlign = ContentAlignment.TopLeft; Lbl[2, i].Location = new Point(84, 3 + dY); Lbl[2, i].Size = new Size(112, 13); //Время наборщика Lbl[3, i].Font = FontTahoma8Regular; Lbl[3, i].TextAlign = ContentAlignment.TopLeft; Lbl[3, i].Location = new Point(199, 3 + dY); Lbl[3, i].Size = new Size(110, 13); //Комплектовщик Lbl[4, i].Font = FontTahoma9Regular; Lbl[4, i].TextAlign = ContentAlignment.TopLeft; Lbl[4, i].Location = new Point(84, 17 + dY); Lbl[4, i].Size = new Size(112, 13); //Время комплектовщика Lbl[5, i].Font = FontTahoma8Regular; Lbl[5, i].TextAlign = ContentAlignment.TopLeft; Lbl[5, i].Location = new Point(199, 17 + dY); Lbl[5, i].Size = new Size(77, 13); //Количество строк Lbl[6, i].Font = FontTahoma8Bold; Lbl[6, i].TextAlign = ContentAlignment.TopRight; Lbl[6, i].Location = new Point(279, 17 + dY); Lbl[6, i].Size = new Size(30, 13); Lbl[6, i].Text = DataMap[ID + ".КонтрольНабора.КолСтрок"].ToString(); Lbl[6, i].ForeColor = Color.Navy; //Места Lbl[7, i].Text = DataMap[ID + ".КонтрольНабора.КолМест"].ToString(); Lbl[1, i].Text = DataMap[ID + ".КонтрольНабора.МестФакт"].ToString(); if (DataMap[ID + ".КонтрольНабора.КолМест"].ToString() != DataMap[ID + ".КонтрольНабора.МестФакт"].ToString()) { Lbl[1, i].ForeColor = Color.Red; } i++; } //Подкрасим первую и последнюю комплектации if (FirstIndex >= 0) { Lbl[1, FirstIndex].BackColor = Color.PaleGoldenrod; Lbl[7, FirstIndex].BackColor = Color.PaleGoldenrod; } if (AllComplete && LastIndex >= 0) { Lbl[1, LastIndex].BackColor = Color.PaleGreen; Lbl[7, LastIndex].BackColor = Color.PaleGreen; } pnlInfoNew.BringToFront(); //Заголовок с информацией по заявке if (DaemondData.Count > 0) { string txt = DaemondData["НомерДок"].ToString() + " (" + ((DateTime)DaemondData["ДатаДок"]).ToString("dd.MM.yy") + ")"; //Label lblDescr = pnlCurrent.GetLabelByName("lblDescr"); //lblDescr.Text = txt; } }
} // InitSS /// <summary> /// Здесь будем все инициализировать (форма уже отстроена, только не видно ее) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FMainOnLoad(object sender, EventArgs e) { //Text = "zhopa"; //return; InicializeFont(); CurrWidth = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width; //СОЗДАЕМ ПАНЕЛИ pnlCurrent = new ExPanel(); //pnlCurrent.BackColor = SystemColors.ActiveBorder; pnlCurrent.BackColor = Color.White; pnlCurrent.Location = new Point(0, 16); pnlCurrent.Name = "pnlCurrent"; pnlCurrent.Size = new Size(CurrWidth - 2, 185); this.Controls.Add(pnlCurrent); pnlCurrent.BringToFront(); //pnlSections.BackColor = System.Drawing.SystemColors.ActiveBorder; //ИНИЦИАЛИЗАЦИЮ РАЗМЕСТИМ ЗДЕСЬ DGCellChange = false; Text = "WPM " + Vers; WindowState = FormWindowState.Maximized; ViewMode = Mode.None; Screan = 0; Br = new Barcode(this, 200); Br.BarcodeRead += ReactionBarcode; Br.HotKeyEvent += HotKeyEvent; //MessageBox.Show(); //string[] names = Assembly.GetExecutingAssembly().GetModules //MessageBox.Show(Assembly.GetExecutingAssembly().Location); //MessageBox.Show(Path.GetFullPath(FileName)); //return; //MessageBox.Show("Hyper"); int CountServers = 2; string[] NamesOfServers; NamesOfServers = new string[CountServers]; NamesOfServers[0] = @"192.168.8.4,57068"; NamesOfServers[1] = @"192.168.8.5,57068"; //NamesOfServers[0] = @"192.168.8.11\sqlcl1"; //NamesOfServers[1] = @"192.168.8.12\sqlcl1"; //DO NOT FORGOT CHANGE PARAMETR: CountServers!!! if (false) { //ТЕСТ ЭКРАНА pnlCurrent.Controls.Clear(); ABaseMode Obj = new Waiting(SS, null); //RefillSet_view(); RefillLayout_view(); foreach (Control Ctrl in pnlCurrent.Controls) { if (Ctrl.GetType().Equals(typeof(Label))) { (Ctrl as Label).Text = "00000000000000000000000000000000000000"; } else if (Ctrl.GetType().Equals(typeof(DataGrid))) { (Ctrl as DataGrid).Visible = false; } } return; } string FirstServName = GetServName(NamesOfServers[0]); InitSS(FirstServName); if (!SS.Initialize()) { for (int i = 0; i < CountServers; ++i) { if (FirstServName == NamesOfServers[i]) { continue; } InitSS(NamesOfServers[i]); if (SS.Initialize()) { SaveServName(NamesOfServers[i]); break; } } } if (!SS.Connect) { MessageBox.Show("Не удалось синхронизовать (версия: " + Vers + ")! ОШИБКА: " + SS.ExcStr); Close(); return; } View(); if (SS.DeviceName == null || SS.DeviceName.Trim() == "") { lblName.Text = Helper.SuckDigits(DeviceID.GetDeviceName()); } else { lblName.Text = Helper.SuckDigits(SS.DeviceName); } pnlCurrent.GetLabelByName("lblResult").Text = ""; lblAction.Width = CurrWidth - 2; //lblAction.Font = new Font("Tahoma", CurrWidth < 320 ? 11 : 14, FontStyle.Bold); lblName.Location = new Point(CurrWidth - 24, 0); lblState.Width = CurrWidth - 2; lblState.Font = CurrWidth < 320 ? FontTahoma8Bold : FontTahoma10Bold; }