public RowData CreateEmployee(RowData department) { if (department == null) { return(null); } RowDataCollection employeeRows = department.ChildSections[RefStaff.Employees.ID].Rows; return(employeeRows.AddNew()); }
public static Boolean RegisterProtocol(UserSession Session, String CardID, String TempFolder, Guid EmployeeId) { logger.Info("cardId='{0}'", CardID); logger.Info("tempName='{0}'", TempFolder); logger.Info("EmployeeId='{0}'", EmployeeId); using (new Impersonator(ServerExtension.Domain, ServerExtension.User, ServerExtension.SecurePassword)) { Guid CardId = new Guid(CardID); switch (Session.CardManager.GetCardState(CardId)) { case ObjectState.Existing: DirectoryInfo TempDirectory = new DirectoryInfo(Path.Combine(ArchiveTempPath, TempFolder)); FileInfo[] TempFiles = TempDirectory.GetFiles(); logger.Info("В папке файлов: " + TempFiles.Length); if (TempFiles.Length > 0) { logger.Info("Файлы: " + TempFiles.Select(file => file.Name).Aggregate((a, b) => a + "; " + b)); CardData Card = Session.CardManager.GetCardData(CardId); Card.UnlockCard(); if (Card.InUpdate) { Card.CancelUpdate(); } Card.PlaceLock(); Card.BeginUpdate(); foreach (Protocol Protocol in TempFiles.Select(fi => new Protocol(fi))) { if (Protocol.IsParsed) { RowData MainInfoRow = Card.Sections[CardOrd.MainInfo.ID].FirstRow; Guid FilesID = MainInfoRow.GetGuid(CardOrd.MainInfo.FilesID) ?? Guid.Empty; Boolean FileListExist = !(FilesID.IsEmpty() && Card.Session.CardManager.GetCardState(FilesID) == ObjectState.Existing); logger.Info("FileListExist = " + FileListExist); CardData FileListCard; if (FileListExist) { FileListCard = Card.Session.CardManager.GetCardData(FilesID); } else { FileListCard = Card.Session.CardManager.CreateCardData(FileList.ID); MainInfoRow.SetGuid(CardOrd.MainInfo.FilesID, FileListCard.Id); } SectionData FileReferencesSection = FileListCard.Sections[FileList.FileReferences.ID]; /* Проверка существования файла протокола в карточке */ if (!FileReferencesSection.Rows.Any(file => Protocol.PhysicalFile.Name.Contains(file.GetString(CardFile.MainInfo.FileName)))) { FileListCard.UnlockCard(); VersionedFileCard FileCard = (VersionedFileCard)Card.Session.CardManager.CreateCard(DocsVision.Platform.Cards.Constants.VersionedFileCard.ID); FileVersion FileCardVersion = FileCard.Initialize(Protocol.PhysicalFile.FullName, Guid.Empty, false, true); CardData FileData = Card.Session.CardManager.CreateCardData(CardFile.ID); FileData.BeginUpdate(); FileData.Description = "Файл: " + FileCard.Name; RowData FileMainInfoRow = FileData.Sections[CardFile.MainInfo.ID].Rows.AddNew(); FileMainInfoRow.SetGuid(CardFile.MainInfo.FileID, FileCard.Id); FileMainInfoRow.SetString(CardFile.MainInfo.FileName, FileCardVersion.Name); FileMainInfoRow.SetGuid(CardFile.MainInfo.Author, FileCardVersion.AuthorId); FileMainInfoRow.SetInt32(CardFile.MainInfo.FileSize, FileCardVersion.Size); FileMainInfoRow.SetInt32(CardFile.MainInfo.VersioningType, 0); RowData FilePropertiesRow = FileData.Sections[CardFile.Properties.ID].Rows.AddNew(); FilePropertiesRow.SetString(CardFile.Properties.Name, "Дата начала испытаний"); FilePropertiesRow.SetInt32(CardFile.Properties.ParamType, (Int32)PropertieParamType.Date); FilePropertiesRow.SetString(CardFile.Properties.Value, Protocol.StringDate); FilePropertiesRow.SetString(CardFile.Properties.DisplayValue, Protocol.StringDate); FileData.Sections[CardFile.Categories.ID].Rows.AddNew().SetGuid(CardFile.Categories.CategoryID, MyHelper.RefCategory_CalibrationProtocol); FileData.EndUpdate(); Int32 FilesCount = FileReferencesSection.Rows.Count; FileReferencesSection.Rows.AddNew().SetGuid(FileList.FileReferences.CardFileID, FileData.Id); FileListCard.Sections[FileList.MainInfo.ID].FirstRow.SetInt32(FileList.MainInfo.Count, FilesCount + 1); SectionData PropertiesSection = Card.Sections[CardOrd.Properties.ID]; RowData PropertyRow = PropertiesSection.GetProperty("Дата"); if (!PropertyRow.IsNull()) { RowDataCollection SelectedValuesRows = PropertyRow.ChildSections[CardOrd.SelectedValues.ID].Rows; RowData SelectedValuesRow = SelectedValuesRows.AddNew(); SelectedValuesRow.SetInt32(CardOrd.SelectedValues.Order, SelectedValuesRows.Count); SelectedValuesRow.SetDateTime(CardOrd.SelectedValues.SelectedValue, DateTime.Now); } PropertyRow = PropertiesSection.GetProperty("Действие"); if (!PropertyRow.IsNull()) { RowDataCollection SelectedValuesRows = PropertyRow.ChildSections[CardOrd.SelectedValues.ID].Rows; RowData SelectedValuesRow = SelectedValuesRows.AddNew(); SelectedValuesRow.SetInt32(CardOrd.SelectedValues.Order, SelectedValuesRows.Count); SelectedValuesRow.SetString(CardOrd.SelectedValues.SelectedValue, "Прикреплен протокол калибровки"); } PropertyRow = PropertiesSection.GetProperty("Участник"); if (!PropertyRow.IsNull()) { RowDataCollection SelectedValuesRows = PropertyRow.ChildSections[CardOrd.SelectedValues.ID].Rows; RowData SelectedValuesRow = SelectedValuesRows.AddNew(); SelectedValuesRow.SetInt32(CardOrd.SelectedValues.Order, SelectedValuesRows.Count); SelectedValuesRow.SetGuid(CardOrd.SelectedValues.SelectedValue, EmployeeId); } PropertyRow = PropertiesSection.GetProperty("Комментарий"); if (!PropertyRow.IsNull()) { RowDataCollection SelectedValuesRows = PropertyRow.ChildSections[CardOrd.SelectedValues.ID].Rows; RowData SelectedValuesRow = SelectedValuesRows.AddNew(); SelectedValuesRow.SetInt32(CardOrd.SelectedValues.Order, SelectedValuesRows.Count); SelectedValuesRow.SetString(CardOrd.SelectedValues.SelectedValue, "Автоматическое прикрепление протокола калибровки " + Protocol.PhysicalFile.Name); } PropertyRow = PropertiesSection.GetProperty("Ссылки"); if (!PropertyRow.IsNull()) { RowDataCollection SelectedValuesRows = PropertyRow.ChildSections[CardOrd.SelectedValues.ID].Rows; RowData SelectedValuesRow = SelectedValuesRows.AddNew(); SelectedValuesRow.SetInt32(CardOrd.SelectedValues.Order, SelectedValuesRows.Count); SelectedValuesRow.SetString(CardOrd.SelectedValues.SelectedValue, null); } if (!FileListExist) { Card.Sections[CardOrd.MainInfo.ID].FirstRow.SetGuid(CardOrd.MainInfo.FilesID, FileListCard.Id); } } } else { logger.Warn("Нераспознаный файл: " + Protocol.PhysicalFile.Name); } } Card.EndUpdate(); Card.RemoveLock(); TempDirectory.Delete(true); logger.Info("RegisterProtocol - выполнено."); } else { logger.Info("RegisterProtocol - не выполнено."); } return(true); default: logger.Info("RegisterProtocol - не выполнено. Паспорт прибора не существует."); return(false); } } }
public static Boolean Synchronize(UserSession Session, String CardID) { logger.Info("cardId='{0}'", CardID); using (new Impersonator(ServerExtension.Domain, ServerExtension.User, ServerExtension.SecurePassword)) { Guid CardId = new Guid(CardID); switch (Session.CardManager.GetCardState(CardId)) { case ObjectState.Existing: CardData Card = Session.CardManager.GetCardData(CardId); Card.UnlockCard(); ExtraCard Extra = Card.GetExtraCard(); if (Extra.IsNull()) { logger.Info("Синхронизация не производилась, неверный тип карточки."); return(false); } if (String.IsNullOrEmpty(Extra.Name) || String.IsNullOrEmpty(Extra.ShortCategory) || (String.IsNullOrEmpty(Extra.Code) && !(Extra is ExtraCardMarketingFiles))) { logger.Info("Синхронизация не производилась, не заполнены обязательные поля."); return(false); } String Digest = Extra.ToString(); Boolean FileSynch = false; /*Синхронизация с реестром только для КД и ТД*/ if (Extra is ExtraCardCD || Extra is ExtraCardTD) { Guid RegItemId = Extra.RegID ?? Guid.Empty; if (RegItemId != Guid.Empty) { try { RowData RegItem = Session.CardManager.GetDictionaryData(RefUniversal.ID).Sections[RefUniversal.Item.ID].GetRow(RegItemId); if (RegItem.GetString(RefUniversal.Item.Name) != Digest) { logger.Info("Требуется синхронизация..."); RegItem.SetString(RefUniversal.Item.Name, Digest); foreach (RowData rowData in RegItem.ChildSections[0].Rows) { String PropertyName = rowData.GetString(RefUniversal.TypeProperties.Name); if ((PropertyName == "Код СКБ" && Extra is ExtraCardCD) || (PropertyName == "Обозначение документа" && Extra is ExtraCardTD)) { rowData.SetString(RefUniversal.TypeProperties.Value, Extra.CodeId); rowData.SetString(RefUniversal.TypeProperties.DisplayValue, Extra.Code); } else if (PropertyName == "Тип документа") { rowData.SetString(RefUniversal.TypeProperties.Value, Extra.Category); rowData.SetString(RefUniversal.TypeProperties.DisplayValue, Extra.Category); } else if (PropertyName == "Версия") { rowData.SetString(RefUniversal.TypeProperties.Value, Extra.Version); rowData.SetString(RefUniversal.TypeProperties.DisplayValue, Extra.Version); } } logger.Info("Синхронизация с реестром выполнена."); FileSynch = true; } else { logger.Info("Синхронизация не требуется."); } } catch (Exception Ex) { logger.WarnException("Не удалось синхронизировать с записью реестра: " + RegItemId, Ex); } } else { logger.Info("Регистрация в реестре"); RowData RegisterRow = Session.CardManager.GetDictionaryData(RefUniversal.ID).GetItemTypeRow(MyHelper.RefItem_TechDocRegister); SubSectionData RegisterTypeProperties = RegisterRow.ChildSections[RefUniversal.TypeProperties.ID]; RowData RegistrarUnit = Card.Sections[CardOrd.Properties.ID].GetProperty("Подразделение регистратора"); RowData Device = Card.Sections[CardOrd.Properties.ID].GetProperty("Прибор"); RowData RegItem = RegisterRow.ChildSections[RefUniversal.Item.ID].Rows.AddNew(); RegItem.SetString(RefUniversal.Item.Name, Card.Description); RegItem.SetString(RefUniversal.Item.Comments, Extra.Number); RowDataCollection PropertiesSubSectionRows = RegItem.ChildSections[RefUniversal.Properties.ID].Rows; RowData ItemPropertyRow = PropertiesSubSectionRows.AddNew(); ItemPropertyRow.SetGuid(RefUniversal.Properties.Property, RegisterTypeProperties.FindRow("@Name='" + (Extra is ExtraCardCD ? "Код СКБ" : "Обозначение документа") + "'").Id); ItemPropertyRow.SetString(RefUniversal.Properties.DisplayValue, Extra.Code); ItemPropertyRow.SetValue(RefUniversal.Properties.Value, Extra.CodeId, FieldType.Variant); ItemPropertyRow = PropertiesSubSectionRows.AddNew(); ItemPropertyRow.SetGuid(RefUniversal.Properties.Property, RegisterTypeProperties.FindRow("@Name='Тип документа'").Id); ItemPropertyRow.SetString(RefUniversal.Properties.DisplayValue, Extra.Category); ItemPropertyRow.SetValue(RefUniversal.Properties.Value, Extra.Category, FieldType.Variant); ItemPropertyRow = PropertiesSubSectionRows.AddNew(); ItemPropertyRow.SetGuid(RefUniversal.Properties.Property, RegisterTypeProperties.FindRow("@Name='Версия'").Id); ItemPropertyRow.SetString(RefUniversal.Properties.DisplayValue, Extra.Version); ItemPropertyRow.SetValue(RefUniversal.Properties.Value, Extra.Version, FieldType.Variant); ItemPropertyRow = PropertiesSubSectionRows.AddNew(); ItemPropertyRow.SetGuid(RefUniversal.Properties.Property, RegisterTypeProperties.FindRow("@Name='Статус'").Id); ItemPropertyRow.SetString(RefUniversal.Properties.DisplayValue, ((DocumentState)Extra.Status).GetDescription()); ItemPropertyRow.SetValue(RefUniversal.Properties.Value, (Int32)(DocumentState)Extra.Status, FieldType.Variant); ItemPropertyRow = PropertiesSubSectionRows.AddNew(); ItemPropertyRow.SetGuid(RefUniversal.Properties.Property, RegisterTypeProperties.FindRow("@Name='Подразделение регистратора'").Id); ItemPropertyRow.SetString(RefUniversal.Properties.DisplayValue, RegistrarUnit.GetString(CardOrd.Properties.DisplayValue)); ItemPropertyRow.SetValue(RefUniversal.Properties.Value, RegistrarUnit.GetString(CardOrd.Properties.Value), FieldType.Variant); ItemPropertyRow = PropertiesSubSectionRows.AddNew(); ItemPropertyRow.SetGuid(RefUniversal.Properties.Property, RegisterTypeProperties.FindRow("@Name='Прибор'").Id); ItemPropertyRow.SetString(RefUniversal.Properties.DisplayValue, Device.GetString(CardOrd.Properties.DisplayValue)); ItemPropertyRow.SetValue(RefUniversal.Properties.Value, Device.ChildSections[CardOrd.SelectedValues.ID].FirstRow.GetString(CardOrd.SelectedValues.SelectedValue), FieldType.Variant); ItemPropertyRow = PropertiesSubSectionRows.AddNew(); ItemPropertyRow.SetGuid(RefUniversal.Properties.Property, RegisterTypeProperties.FindRow("@Name='Ссылка на карточку документа'").Id); ItemPropertyRow.SetString(RefUniversal.Properties.DisplayValue, Extra.Card.Description); ItemPropertyRow.SetValue(RefUniversal.Properties.Value, Extra.Card.Id, FieldType.Variant); ItemPropertyRow = PropertiesSubSectionRows.AddNew(); ItemPropertyRow.SetGuid(RefUniversal.Properties.Property, RegisterTypeProperties.FindRow("@Name='Файлы документа'").Id); ItemPropertyRow.SetString(RefUniversal.Properties.DisplayValue, Extra.Path); ItemPropertyRow.SetValue(RefUniversal.Properties.Value, Extra.Card.Id, FieldType.Variant); Extra.RegID = RegItem.Id; logger.Info("В реестр добавлена запись: " + Card.Description); } } else { FileSynch = true; } if (FileSynch) { logger.Info("Синхронизация пути..."); String OldPath = Extra.Path; logger.Info("Старый путь: " + OldPath); String NewPath = String.Empty; logger.Info("Новый путь: " + NewPath); if (Directory.Exists(OldPath)) { DirectoryInfo OldFolder = new DirectoryInfo(OldPath); DirectoryInfo ParentFolder = OldFolder.Parent; if (ParentFolder != null) { logger.Info("Старый путь:" + OldPath); NewPath = MyHelper.RemoveInvalidFileNameChars(Digest); if (NewPath != Digest) { logger.Info("Удалены недопустимые символы: " + Digest); } NewPath = Path.Combine(ParentFolder.FullName, NewPath); String TempPath = Path.Combine(ParentFolder.FullName, Path.GetRandomFileName()); logger.Info("Временный путь:" + TempPath); logger.Info("Новый путь:" + NewPath + @"\"); try { logger.Info("Перемещение во временную папку"); Directory.Move(OldPath, TempPath); try { logger.Info("Перемещение в новую папку"); Directory.Move(TempPath, NewPath); } catch (Exception Ex) { logger.WarnException("Перемещение не удалось!", Ex); try { logger.Info("Перемещение в старую папку"); Directory.Move(TempPath, OldPath); } catch (Exception SubEx) { logger.Warn("Перемещение не удалось!"); logger.ErrorException("Перемещение не удалось!", SubEx); NewPath = String.Empty; } } } catch (Exception Ex) { logger.WarnException("Перемещение не удалось!", Ex); NewPath = String.Empty; } if (!String.IsNullOrWhiteSpace(NewPath)) { if (!(Extra is ExtraCardMarketingFiles)) { Extra.Path = NewPath + @"\"; } logger.Info("Синхронизация пути выполнена"); } else { logger.Warn("Синхронизация пути не выполнена"); } } else { logger.Warn("Отсутствует родительская папка!"); } } else { logger.Info("Отсутствует путь для синхронизации!"); } } return(true); default: return(false); } } }
//Подразделения //im public string AddDepartment(string unitId, string unit, string unitFull, string ownerId, string chief, string curator) public object AddDepartment(string unitId, string unit, string unitFull, string ownerId, string chief, string curator) { try{ if (string.IsNullOrEmpty(unit)) { //logger.Info(string.Format(base.LogEmptyInfo, "Unit")); //return string.Format(LogEmptyInfo, "Unit"); return(true); } CardData refStaffData = Session.CardManager.GetDictionaryData(RefStaff.ID); SectionData unitsSection = refStaffData.Sections[RefStaff.Units.ID]; //im RowData department = GetExistObject(RefStaff.Units.ID, RefStaff.Units.Code, unitId); RowDataCollection departmentColl = GetExistObject(RefStaff.Units.ID, RefStaff.Units.Code, unitId); if (departmentColl == null || departmentColl.Count == 0) { RowData unitRow = null; //Поиск по родителю if (!String.IsNullOrEmpty(ownerId)) { //im unitRow = GetExistObject(RefStaff.Units.ID, RefStaff.Units.Code, ownerId); RowDataCollection unitRowColl = GetExistObject(RefStaff.Units.ID, RefStaff.Units.Code, ownerId); if (unitRowColl != null) { unitRow = unitRowColl[0]; } } if (unitRow == null) { unitRow = unitsSection.GetRow(new Guid(ConfigurationManager.AppSettings["RootDepartmentGuid"])); //Нужно брать по известному ID подразделения } RowDataCollection departmentRows = unitRow.ChildRows; refStaffData.BeginUpdate(); var newRowDepartment = departmentRows.AddNew(); var isFirstLoad = ConfigurationManager.AppSettings["FirstLoad"]; if (isFirstLoad == "1") { newRowDepartment[RefStaff.Units.Name] = unit; newRowDepartment[RefStaff.Units.FullName] = unitFull; } else { newRowDepartment[RefStaff.Units.Name] = unit; newRowDepartment[RefStaff.Units.FullName] = unitFull; } newRowDepartment[RefStaff.Units.Code] = unitId; newRowDepartment[RefStaff.Units.Type] = StaffUnitType.Department; //Руководитель подразделения /*im * UpdateDepartmentChief(newRowDepartment, refStaffData, chief); */ if (!String.IsNullOrEmpty(chief)) { //im unitRow = GetExistObject(RefStaff.Units.ID, RefStaff.Units.Code, ownerId); RowDataCollection unitRowColl = GetExistObject(RefStaff.Units.ID, RefStaff.Units.Code, chief); if (unitRowColl != null) { unitRow = unitRowColl[0]; } } //Куратор подразделения /* * UpdateDepartmentCurator(newRowDepartment, refStaffData, curator); */ if (!String.IsNullOrEmpty(curator)) { //im unitRow = GetExistObject(RefStaff.Units.ID, RefStaff.Units.Code, ownerId); RowDataCollection unitRowColl = GetExistObject(RefStaff.Units.ID, RefStaff.Units.Code, curator); if (unitRowColl != null) { unitRow = unitRowColl[0]; } } refStaffData.EndUpdate(); //return "Департамент добавлен"; return(true); } else { //return "Подразделение уже добавлено"; return(true); } } catch { CardData refStaffData = Session.CardManager.GetDictionaryData(RefStaff.ID); refStaffData.BeginUpdate(); refStaffData.EndUpdate(); return("Ошибка при попытке добавить новое подразделение. Необходимо перезапустить сервис!"); //return false; } }
private void AddImprov_Click(object sender, EventArgs e) { RowData PartyRow = null; CardData UniversalDictionary = Session.CardManager.GetCardData(new Guid("{B2A438B7-8BB3-4B13-AF6E-F2F8996E148B}")); List <RowData> PartyItemRows = new List <RowData>(); RowDataCollection PartyRowsCollection; if (!Document.Sections.Any(r => r.Id == new Guid("{A8F93D97-496B-4675-B520-058B919146B7}"))) { PartyRowsCollection = Document.Sections[new Guid("{5B6B407E-3D72-49E7-97D9-8E1E028C7274}")].Rows.First(r => r.GetString("Name") == "Партия").ChildSections[new Guid("{E6F5105F-8BD8-4500-9780-60D7C1402DDB}")].Rows; foreach (RowData CurrentRow in PartyRowsCollection) { PartyItemRows.Add(UniversalDictionary.GetItemRow((Guid)CurrentRow.GetGuid("SelectedValue"))); } } else { PartyRowsCollection = Document.Sections[new Guid("{A8F93D97-496B-4675-B520-058B919146B7}")].Rows; foreach (RowData CurrentRow in PartyRowsCollection) { PartyItemRows.Add(UniversalDictionary.GetItemRow((Guid)CurrentRow.GetGuid("PartyId"))); } } //List<RowData> PartyItemRows = PartyRowsCollection.Select(r => UniversalDictionary.GetItemRow((Guid)r.GetGuid("Id"))).ToList(); if (PartyItemRows.Any(r => UniversalDictionary.GetItemPropertyValue(r.Id, "Наименование прибора").ToGuid() == DeviceType.Id)) { PartyRow = PartyItemRows.FirstOrDefault(r => UniversalDictionary.GetItemPropertyValue(r.Id, "Наименование прибора").ToGuid() == DeviceType.Id); } else { StatusStrip.Items["StatusText"].Text = "Ошибка! В Разрешении не указана партия для текущего прибора."; StatusStrip.Update(); switch (MessageBox.Show("Внести доработку во все приборы в эксплуатации?", "Ошибка", MessageBoxButtons.YesNo)) { case DialogResult.Yes: StatusStrip.Items["StatusText"].Text = "Продолжение работы..."; StatusStrip.Update(); break; case DialogResult.No: return; break; } } List <Guid> ImprovPartiesGuid = new List <Guid>(); if (!PartyRow.IsNull()) { RowData PartyDicType = UniversalDictionary.Sections[new Guid("{5E3ED23A-2B5E-47F2-887C-E154ACEAFB97}")].Rows.First(r => r.GetString("Name") == "Справочник партий"); IEnumerable <RowData> AllParties = PartyDicType.ChildSections[new Guid("{DD20BF9B-90F8-4D9A-9553-5B5F17AD724E}")].Rows.Where(r => (UniversalDictionary.GetItemPropertyValue(r.Id, "Наименование прибора").ToGuid() == DeviceType.Id) && (!UniversalDictionary.GetItemPropertyValue(r.Id, "Год начала выпуска").IsNull())); PartyComparer PC = new PartyComparer(); List <RowData> ImprovParties = AllParties.Where(r => PC.Compare(r.GetString("Name"), PartyRow.GetString("Name")) == 1).ToList(); foreach (RowData CurrentParty in ImprovParties) { ImprovPartiesGuid.Add(CurrentParty.Id); } } CardData baseUniversal = Session.CardManager.GetCardData(new Guid("{4538149D-1FC7-4D41-A104-890342C6B4F8}")); if (!baseUniversal.Sections[new Guid("{A1DCE6C1-DB96-4666-B418-5A075CDB02C9}")].GetAllRows().Any(r => r.Id == new Guid("{43A6DA44-899C-47D8-9567-2185E05D8524}"))) { StatusStrip.Items["StatusText"].Text = "Ошибка! Не найден справочник ремонтных работ и доработок..."; StatusStrip.Update(); return; } // Поиск записей справочника SearchQuery searchQuery = Session.CreateSearchQuery(); searchQuery.CombineResults = ConditionGroupOperation.And; CardTypeQuery typeQuery = searchQuery.AttributiveSearch.CardTypeQueries.AddNew(DocsVision.BackOffice.CardLib.CardDefs.CardBaseUniversalItem.ID); SectionQuery sectionQuery = typeQuery.SectionQueries.AddNew(DocsVision.BackOffice.CardLib.CardDefs.CardBaseUniversalItem.System.ID); sectionQuery.Operation = SectionQueryOperation.And; sectionQuery.ConditionGroup.Operation = ConditionGroupOperation.And; ConditionGroup ConditionGroup = sectionQuery.ConditionGroup.ConditionGroups.AddNew(); ConditionGroup.Operation = ConditionGroupOperation.And; ConditionGroup.Conditions.AddNew(DocsVision.BackOffice.CardLib.CardDefs.CardBaseUniversalItem.System.Kind, FieldType.RefId, ConditionOperation.Equals, new Guid("{F4650B71-B131-41D2-AAFA-8DA1101ACA52}")); SectionQuery sectionQuery2 = typeQuery.SectionQueries.AddNew(new Guid("{3F9F3C1D-1CF1-4E71-BBE4-31D6AAD94EF7}")); sectionQuery2.Operation = SectionQueryOperation.And; sectionQuery2.ConditionGroup.Operation = ConditionGroupOperation.And; ConditionGroup ConditionGroup2 = sectionQuery2.ConditionGroup.ConditionGroups.AddNew(); ConditionGroup2.Operation = ConditionGroupOperation.And; ConditionGroup2.Conditions.AddNew("BaseDocument", FieldType.RefId, ConditionOperation.Equals, Document.Id); ConditionGroup2.Conditions.AddNew("Status", FieldType.Int, ConditionOperation.Equals, 0); SectionQuery sectionQuery3 = typeQuery.SectionQueries.AddNew(new Guid("{E6DB53B7-7677-4978-8562-6B17917516A6}")); sectionQuery3.Operation = SectionQueryOperation.And; sectionQuery3.ConditionGroup.Operation = ConditionGroupOperation.And; ConditionGroup ConditionGroup3 = sectionQuery3.ConditionGroup.ConditionGroups.AddNew(); ConditionGroup3.Operation = ConditionGroupOperation.And; ConditionGroup3.Conditions.AddNew("DeviceID", FieldType.RefId, ConditionOperation.Equals, DeviceType.Id); searchQuery.Limit = 0; string query = searchQuery.GetXml(); CardDataCollection CardBaseUniversalItems = Session.CardManager.FindCards(query); CardData ItemCard = null; RowData ItemRow = null; if (CardBaseUniversalItems.Count() == 0) { StatusStrip.Items["StatusText"].Text = "Ошибка! Не найдена соответствующая карточка ремонтных работ и доработок..."; StatusStrip.Update(); return; } if (CardBaseUniversalItems.Count() > 1) { StatusStrip.Items["StatusText"].Text = "Ошибка! Найдено несколько подходящих карточек ремонтных работ и доработок..."; StatusStrip.Update(); return; } if (CardBaseUniversalItems.Count() == 1) { ItemCard = CardBaseUniversalItems.First(); RowData ItemType = baseUniversal.Sections[new Guid("{A1DCE6C1-DB96-4666-B418-5A075CDB02C9}")].GetAllRows().First(r => r.Id == new Guid("{43A6DA44-899C-47D8-9567-2185E05D8524}")); ItemRow = ItemType.ChildSections[new Guid("{1B1A44FB-1FB1-4876-83AA-95AD38907E24}")].Rows.First(r => (Guid)r.GetGuid("ItemCard") == ItemCard.Id); if (ItemRow.IsNull()) { StatusStrip.Items["StatusText"].Text = "Ошибка! Не найдена соответствующая запись справочника ремонтных работ и доработок..."; StatusStrip.Update(); return; } else { StatusStrip.Items["StatusText"].Text = "Запись найдена: " + ItemRow.GetString("Name") + "..."; StatusStrip.Update(); } } Guid DevicePassportTypeID = new Guid("{42826E25-AD0E-4D9C-8B18-CD88E6796972}"); CardData CardTypeDictionary = Session.CardManager.GetDictionaryData(RefTypes.ID); SectionData DocumentTypes = CardTypeDictionary.Sections[RefTypes.DocumentTypes.ID]; RowData DevicePassportType = DocumentTypes.GetRow(DevicePassportTypeID); RowDataCollection DevicePassportProperties = DevicePassportType.ChildSections[RefTypes.Properties.ID].Rows; SearchQuery searchQuery2 = Session.CreateSearchQuery(); searchQuery2.CombineResults = ConditionGroupOperation.And; CardTypeQuery typeQuery2 = searchQuery2.AttributiveSearch.CardTypeQueries.AddNew(CardOrd.ID); SectionQuery sectionQuery4 = typeQuery2.SectionQueries.AddNew(CardOrd.MainInfo.ID); sectionQuery4.Operation = SectionQueryOperation.And; sectionQuery4.ConditionGroup.Operation = ConditionGroupOperation.And; sectionQuery4.ConditionGroup.Conditions.AddNew("Type", FieldType.RefId, ConditionOperation.Equals, DevicePassportTypeID); sectionQuery4 = typeQuery2.SectionQueries.AddNew(CardOrd.Properties.ID); sectionQuery4.Operation = SectionQueryOperation.And; sectionQuery4.ConditionGroup.Operation = ConditionGroupOperation.And; sectionQuery4.ConditionGroup.Conditions.AddNew("Name", FieldType.String, ConditionOperation.Equals, "Прибор"); sectionQuery4.ConditionGroup.Conditions.AddNew("Value", FieldType.RefId, ConditionOperation.Equals, DeviceType.Id); if (ImprovPartiesGuid.Count != 0) { sectionQuery4 = typeQuery2.SectionQueries.AddNew(CardOrd.Properties.ID); sectionQuery4.Operation = SectionQueryOperation.And; sectionQuery4.ConditionGroup.Operation = ConditionGroupOperation.And; sectionQuery4.ConditionGroup.Conditions.AddNew("Name", FieldType.String, ConditionOperation.Equals, "№ партии"); ConditionGroup PartyGroup = sectionQuery4.ConditionGroup.ConditionGroups.AddNew(); PartyGroup.Operation = ConditionGroupOperation.Or; for (int j = 0; j < ImprovPartiesGuid.Count; j++) { PartyGroup.Conditions.AddNew("Value", FieldType.RefId, ConditionOperation.OneOf, ImprovPartiesGuid.ToArray()[j]); } } else { sectionQuery4 = typeQuery2.SectionQueries.AddNew(CardOrd.Properties.ID); sectionQuery4.Operation = SectionQueryOperation.And; sectionQuery4.ConditionGroup.Operation = ConditionGroupOperation.And; sectionQuery4.ConditionGroup.Conditions.AddNew("Name", FieldType.String, ConditionOperation.Equals, "Состояние прибора"); sectionQuery4.ConditionGroup.Conditions.AddNew("Value", FieldType.RefId, ConditionOperation.OneOf, new int[] { 5, 6 }); } // Получение текста запроса searchQuery2.Limit = 0; string query2 = searchQuery2.GetXml(); Console.WriteLine(query2); Console.ReadLine(); CardDataCollection coll = Session.CardManager.FindCards(query2); Clear(); StatusStrip.Items["StatusText"].Text = "Найдено паспортов: " + coll.Count.ToString() + "..."; StatusStrip.Update(); int i = 0; for (i = 0; i < coll.Count; i++) { CardData Card = coll[i]; Card.ForceUnlock(); StatusStrip.Items["StatusText"].Text = i.ToString() + " из " + coll.Count + ". " + Card.Description; StatusStrip.Update(); SectionData Properties = Card.Sections[CardOrd.Properties.ID]; RowDataCollection DocumentCol = Properties.FindRow("@Name = 'Документ'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection Assembly = Properties.FindRow("@Name = 'Сборочный узел'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection RepareItem = Properties.FindRow("@Name = 'Запись справочника ремонтных работ и доработок'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection Indication = Properties.FindRow("@Name = 'Указание'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection Check = Properties.FindRow("@Name = 'Выполнено'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection CheckDate = Properties.FindRow("@Name = 'Дата выполнения'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection Comments = Properties.FindRow("@Name = 'Комментарии'").ChildSections[CardOrd.SelectedValues.ID].Rows; if (DocumentCol.Count != Assembly.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (Assembly.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = Assembly.AddNew(); NewRow.SetInt32("Order", Order); } } } if (DocumentCol.Count != RepareItem.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (RepareItem.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = RepareItem.AddNew(); NewRow.SetInt32("Order", Order); } } } if (DocumentCol.Count != Indication.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (Indication.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = Indication.AddNew(); NewRow.SetInt32("Order", Order); } } } if (DocumentCol.Count != Check.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (Check.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = Check.AddNew(); NewRow.SetInt32("Order", Order); } } } if (DocumentCol.Count != CheckDate.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (CheckDate.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = CheckDate.AddNew(); NewRow.SetInt32("Order", Order); } } } if (DocumentCol.Count != Comments.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (Comments.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = Comments.AddNew(); NewRow.SetInt32("Order", Order); } } } if (!DocumentCol.Any(r => r.GetGuid("SelectedValue") == Document.Id)) { int CurrentOrder = DocumentCol.Count + 1; RowData NewRow2 = DocumentCol.AddNew(); NewRow2.SetInt32("Order", CurrentOrder); NewRow2.SetGuid("SelectedValue", Document.Id); NewRow2 = RepareItem.AddNew(); NewRow2.SetInt32("Order", CurrentOrder); NewRow2.SetGuid("SelectedValue", ItemRow.Id); NewRow2 = Assembly.AddNew(); NewRow2.SetInt32("Order", CurrentOrder); if (!ItemCard.Sections[new Guid("{3F9F3C1D-1CF1-4E71-BBE4-31D6AAD94EF7}")].FirstRow.GetGuid("AssemblyUnit").IsNull()) { NewRow2.SetGuid("SelectedValue", (Guid)ItemCard.Sections[new Guid("{3F9F3C1D-1CF1-4E71-BBE4-31D6AAD94EF7}")].FirstRow.GetGuid("AssemblyUnit")); } NewRow2 = Indication.AddNew(); NewRow2.SetInt32("Order", CurrentOrder); if (!ItemCard.Sections[new Guid("{3F9F3C1D-1CF1-4E71-BBE4-31D6AAD94EF7}")].FirstRow.GetGuid("Instructions").IsNull()) { NewRow2.SetGuid("SelectedValue", (Guid)ItemCard.Sections[new Guid("{3F9F3C1D-1CF1-4E71-BBE4-31D6AAD94EF7}")].FirstRow.GetGuid("Instructions")); } NewRow2 = Check.AddNew(); NewRow2.SetInt32("Order", CurrentOrder); NewRow2 = CheckDate.AddNew(); NewRow2.SetInt32("Order", CurrentOrder); NewRow2 = Comments.AddNew(); NewRow2.SetInt32("Order", CurrentOrder); } Clear(); } StatusStrip.Items["StatusText"].Text = i.ToString() + " карточек успешно обработано."; StatusStrip.Update(); }
/// <summary> /// Осуществляет обновление доработки в Паспорте прибора на основании данных Конструктора справочников /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BindImprov_Click(object sender, EventArgs e) { if (this.TypeName.Text == "") { MessageBox.Show("Укажите тип прибора!"); return; } if (this.DocName.Text == "") { MessageBox.Show("Укажите документ-основание!"); return; } StatusStrip.Items["StatusText"].Text = "Процесс начат..."; StatusStrip.Update(); // Получение записи справочника ремонтных работ и доработок //ObjectContext Context = Session.CreateContext(); // Получение справочника "Ремонтные работы и доработки" //IBaseUniversalService baseUniversalService = Context.GetService<IBaseUniversalService>(); //BaseUniversal baseUniversal = Context.GetObject<BaseUniversal>(RefBaseUniversal.ID); CardData baseUniversal = Session.CardManager.GetCardData(new Guid("{4538149D-1FC7-4D41-A104-890342C6B4F8}")); if (!baseUniversal.Sections[new Guid("{A1DCE6C1-DB96-4666-B418-5A075CDB02C9}")].GetAllRows().Any(r => r.Id == new Guid("{43A6DA44-899C-47D8-9567-2185E05D8524}"))) { StatusStrip.Items["StatusText"].Text = "Ошибка! Не найден справочник ремонтных работ и доработок..."; StatusStrip.Update(); return; } // Поиск записей справочника SearchQuery searchQuery = Session.CreateSearchQuery(); searchQuery.CombineResults = ConditionGroupOperation.And; CardTypeQuery typeQuery = searchQuery.AttributiveSearch.CardTypeQueries.AddNew(DocsVision.BackOffice.CardLib.CardDefs.CardBaseUniversalItem.ID); SectionQuery sectionQuery = typeQuery.SectionQueries.AddNew(DocsVision.BackOffice.CardLib.CardDefs.CardBaseUniversalItem.System.ID); sectionQuery.Operation = SectionQueryOperation.And; sectionQuery.ConditionGroup.Operation = ConditionGroupOperation.And; ConditionGroup ConditionGroup = sectionQuery.ConditionGroup.ConditionGroups.AddNew(); ConditionGroup.Operation = ConditionGroupOperation.And; ConditionGroup.Conditions.AddNew(DocsVision.BackOffice.CardLib.CardDefs.CardBaseUniversalItem.System.Kind, FieldType.RefId, ConditionOperation.Equals, new Guid("{F4650B71-B131-41D2-AAFA-8DA1101ACA52}")); SectionQuery sectionQuery2 = typeQuery.SectionQueries.AddNew(new Guid("{3F9F3C1D-1CF1-4E71-BBE4-31D6AAD94EF7}")); sectionQuery2.Operation = SectionQueryOperation.And; sectionQuery2.ConditionGroup.Operation = ConditionGroupOperation.And; ConditionGroup ConditionGroup2 = sectionQuery2.ConditionGroup.ConditionGroups.AddNew(); ConditionGroup2.Operation = ConditionGroupOperation.And; ConditionGroup2.Conditions.AddNew("BaseDocument", FieldType.RefId, ConditionOperation.Equals, Document.Id); ConditionGroup2.Conditions.AddNew("Status", FieldType.Int, ConditionOperation.Equals, 0); SectionQuery sectionQuery3 = typeQuery.SectionQueries.AddNew(new Guid("{E6DB53B7-7677-4978-8562-6B17917516A6}")); sectionQuery3.Operation = SectionQueryOperation.And; sectionQuery3.ConditionGroup.Operation = ConditionGroupOperation.And; ConditionGroup ConditionGroup3 = sectionQuery3.ConditionGroup.ConditionGroups.AddNew(); ConditionGroup3.Operation = ConditionGroupOperation.And; ConditionGroup3.Conditions.AddNew("DeviceID", FieldType.RefId, ConditionOperation.Equals, DeviceType.Id); searchQuery.Limit = 0; string query = searchQuery.GetXml(); CardDataCollection CardBaseUniversalItems = Session.CardManager.FindCards(query); CardData ItemCard = null; RowData ItemRow = null; if (CardBaseUniversalItems.Count() == 0) { StatusStrip.Items["StatusText"].Text = "Ошибка! Не найдена соответствующая карточка ремонтных работ и доработок..."; StatusStrip.Update(); return; } if (CardBaseUniversalItems.Count() > 1) { StatusStrip.Items["StatusText"].Text = "Ошибка! Найдено несколько подходящих карточек ремонтных работ и доработок..."; StatusStrip.Update(); return; } if (CardBaseUniversalItems.Count() == 1) { ItemCard = CardBaseUniversalItems.First(); RowData ItemType = baseUniversal.Sections[new Guid("{A1DCE6C1-DB96-4666-B418-5A075CDB02C9}")].GetAllRows().First(r => r.Id == new Guid("{43A6DA44-899C-47D8-9567-2185E05D8524}")); ItemRow = ItemType.ChildSections[new Guid("{1B1A44FB-1FB1-4876-83AA-95AD38907E24}")].Rows.First(r => (Guid)r.GetGuid("ItemCard") == ItemCard.Id); if (ItemRow.IsNull()) { StatusStrip.Items["StatusText"].Text = "Ошибка! Не найдена соответствующая запись справочника ремонтных работ и доработок..."; StatusStrip.Update(); return; } else { StatusStrip.Items["StatusText"].Text = "Запись найдена: " + ItemRow.GetString("Name") + "..."; StatusStrip.Update(); } } Guid DevicePassportTypeID = new Guid("{42826E25-AD0E-4D9C-8B18-CD88E6796972}"); CardData CardTypeDictionary = Session.CardManager.GetDictionaryData(RefTypes.ID); SectionData DocumentTypes = CardTypeDictionary.Sections[RefTypes.DocumentTypes.ID]; RowData DevicePassportType = DocumentTypes.GetRow(DevicePassportTypeID); RowDataCollection DevicePassportProperties = DevicePassportType.ChildSections[RefTypes.Properties.ID].Rows; SearchQuery searchQuery2 = Session.CreateSearchQuery(); searchQuery2.CombineResults = ConditionGroupOperation.And; CardTypeQuery typeQuery2 = searchQuery2.AttributiveSearch.CardTypeQueries.AddNew(CardOrd.ID); SectionQuery sectionQuery4 = typeQuery2.SectionQueries.AddNew(CardOrd.MainInfo.ID); sectionQuery4.Operation = SectionQueryOperation.And; sectionQuery4.ConditionGroup.Operation = ConditionGroupOperation.And; sectionQuery4.ConditionGroup.Conditions.AddNew("Type", FieldType.RefId, ConditionOperation.Equals, DevicePassportTypeID); sectionQuery4 = typeQuery2.SectionQueries.AddNew(CardOrd.Properties.ID); sectionQuery4.Operation = SectionQueryOperation.And; sectionQuery4.ConditionGroup.Operation = ConditionGroupOperation.And; sectionQuery4.ConditionGroup.Conditions.AddNew("Name", FieldType.String, ConditionOperation.Equals, "Прибор"); sectionQuery4.ConditionGroup.Conditions.AddNew("Value", FieldType.RefId, ConditionOperation.Equals, DeviceType.Id); sectionQuery4 = typeQuery2.SectionQueries.AddNew(CardOrd.SelectedValues.ID); sectionQuery4.Operation = SectionQueryOperation.And; sectionQuery4.ConditionGroup.Operation = ConditionGroupOperation.And; sectionQuery4.ConditionGroup.Conditions.AddNew("SelectedValue", FieldType.RefCardId, ConditionOperation.Equals, Document.Id); // Получение текста запроса searchQuery2.Limit = 0; string query2 = searchQuery2.GetXml(); Console.WriteLine(query2); Console.ReadLine(); CardDataCollection coll = Session.CardManager.FindCards(query2); Clear(); StatusStrip.Items["StatusText"].Text = "Найдено паспортов: " + coll.Count.ToString() + "..."; StatusStrip.Update(); int i = 0; for (i = 0; i < coll.Count; i++) { CardData Card = coll[i]; Card.ForceUnlock(); StatusStrip.Items["StatusText"].Text = i.ToString() + " из " + coll.Count + ". " + Card.Description; StatusStrip.Update(); SectionData Properties = Card.Sections[CardOrd.Properties.ID]; RowDataCollection DocumentCol = Properties.FindRow("@Name = 'Документ'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowData DocumentRow = DocumentCol.First(r => new Guid(r.GetString("SelectedValue")).Equals(Document.Id)); if (DocumentRow != null) { RowDataCollection Assembly = Properties.FindRow("@Name = 'Сборочный узел'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection RepareItem = Properties.FindRow("@Name = 'Запись справочника ремонтных работ и доработок'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection Indication = Properties.FindRow("@Name = 'Указание'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection Check = Properties.FindRow("@Name = 'Выполнено'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection CheckDate = Properties.FindRow("@Name = 'Дата выполнения'").ChildSections[CardOrd.SelectedValues.ID].Rows; RowDataCollection Comments = Properties.FindRow("@Name = 'Комментарии'").ChildSections[CardOrd.SelectedValues.ID].Rows; if (DocumentCol.Count != Assembly.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (Assembly.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = Assembly.AddNew(); NewRow.SetInt32("Order", Order); } } } if (DocumentCol.Count != RepareItem.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (RepareItem.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = RepareItem.AddNew(); NewRow.SetInt32("Order", Order); } } } if (DocumentCol.Count != Indication.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (Indication.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = Indication.AddNew(); NewRow.SetInt32("Order", Order); } } } if (DocumentCol.Count != Check.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (Check.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = Check.AddNew(); NewRow.SetInt32("Order", Order); } } } if (DocumentCol.Count != CheckDate.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (CheckDate.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = CheckDate.AddNew(); NewRow.SetInt32("Order", Order); } } } if (DocumentCol.Count != Comments.Count) { foreach (RowData Doc in DocumentCol) { int Order = (int)Doc.GetInt32("Order"); if (Comments.FirstOrDefault(r => r.GetInt32("Order") == Order).IsNull()) { RowData NewRow = Comments.AddNew(); NewRow.SetInt32("Order", Order); } } } int CurrentOrder = (int)DocumentRow.GetInt32("Order"); RepareItem.First(r => r.GetInt32("Order") == CurrentOrder).SetGuid("SelectedValue", ItemRow.Id); if (!ItemCard.Sections[new Guid("{3F9F3C1D-1CF1-4E71-BBE4-31D6AAD94EF7}")].FirstRow.GetGuid("AssemblyUnit").IsNull()) { Assembly.First(r => r.GetInt32("Order") == CurrentOrder).SetGuid("SelectedValue", (Guid)ItemCard.Sections[new Guid("{3F9F3C1D-1CF1-4E71-BBE4-31D6AAD94EF7}")].FirstRow.GetGuid("AssemblyUnit")); } if (!ItemRow.GetString("Description").IsNull()) { Indication.First(r => r.GetInt32("Order") == CurrentOrder).SetString("SelectedValue", ItemRow.GetString("Description")); } } Clear(); } StatusStrip.Items["StatusText"].Text = i.ToString() + " карточек успешно обработано."; StatusStrip.Update(); }