private void Button_ChangeComplete_Click(Object sender, EventArgs e) { RowData DeviceCompleteInfo = Devices.AllChildRows.Find("Name", DeviceName); if (!DeviceCompleteInfo.IsNull()) { SubSectionData DeviceItems = DeviceCompleteInfo.ChildSections[MyHelper.RefUniversalItem]; CompleteForm Form = new CompleteForm(DeviceName, DeviceItems, true, false, false, false, CData); switch (Form.ShowDialog()) { case DialogResult.OK: ACList = Form.ACList; CData = Form.CData; ACRows = Form.ACRows; Button_ChangeComplete.Enabled = true; break; default: break; } } else { ACRows = null; Button_ChangeComplete.Enabled = false; } }
private Boolean GetDevice(Boolean IsNeedComplete = false) { Object[] activateParams = new Object[] { MyHelper.RefUniversalItem.ToString("B").ToUpper(), String.Empty, MyHelper.RefItem_Devices.ToString("B").ToUpper(), false, String.Empty, false }; Object Id = Host.SelectFromCard(MyHelper.RefUniversal, "Выберите прибор...", activateParams); if (Id.IsNull()) { return(false); } RowData DeviceItemRow = Devices.ChildSections[MyHelper.RefUniversalItem].Rows[Id.ToGuid()]; AC = MyMessageBox.Show("Поступили только комплектующие (без прибора)?", "Комплектация", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes; DeviceName = DeviceItemRow.GetString("Name"); RowData DeviceCompleteInfo = Devices.AllChildRows.Find("Name", DeviceName); ACList = String.Empty; CData = String.Empty; if (!DeviceCompleteInfo.IsNull()) { SubSectionData DeviceItems = DeviceCompleteInfo.ChildSections[MyHelper.RefUniversalItem]; CompleteForm Form = new CompleteForm(DeviceName, DeviceItems, AC, Verify, true, false); switch (Form.ShowDialog()) { case DialogResult.OK: ACList = Form.ACList; CData = Form.CData; ACRows = Form.ACRows; Button_ChangeComplete.Enabled = true; break; default: Button_ChangeComplete.Enabled = false; if (IsNeedComplete) { return(false); } break; } } else { ACRows = null; Button_ChangeComplete.Enabled = false; } DeviceId = DeviceItemRow.Id; return(true); }
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); } } }
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(); }
private void CardControl_Saving(Object sender, CancelEventArgs e) { try { /* Переформирование файлов */ for (Int32 i = 0; i < Table_Service.RowCount; i++) { BaseCardProperty Row = Table_Service[i]; ServiceTableChange Change = Dic_Changes.Find(Row[RefApplicationCard.Service.Id].ToGuid()); if (Change.FileIsChanged || Row[RefApplicationCard.Service.PackedListID].ToGuid().IsEmpty()) { Guid FileId = Row[RefApplicationCard.Service.PackedListID].ToGuid(); AccountCard.FillPackFile(Context, UniversalCard.GetItemName(Row[RefApplicationCard.Service.DeviceID].ToGuid()), Row[RefApplicationCard.Service.PackedListData] as String, ref FileId); Row[RefApplicationCard.Service.PackedListID] = FileId; Table_Service.RefreshRow(i); } if (Change.DeviceNumberId.IsChanged) { if (!Change.DeviceNumberId.OldValue.IsEmpty()) { UniversalCard.GetItemRow(Change.DeviceNumberId.OldValue).SetDeviceState(DeviceState.Operating); } if (!Change.DeviceNumberId.NewValue.IsEmpty()) { UniversalCard.GetItemRow(Change.DeviceNumberId.NewValue).SetDeviceState(DeviceState.OnTheWay); } } if (Change.Sensors.IsChanged) { if (!String.IsNullOrEmpty(Change.Sensors.OldValue)) { foreach (String Sensor in Change.Sensors.OldValue.Split(';')) { UniversalCard.GetSensorRow(Sensor).SetDeviceState(DeviceState.Operating); } } if (!String.IsNullOrEmpty(Change.Sensors.NewValue)) { foreach (String Sensor in Change.Sensors.NewValue.Split(';')) { UniversalCard.GetSensorRow(Sensor).SetDeviceState(DeviceState.OnTheWay); } } } } /* Синхронизация */ if (Dic_Changes.IsChanged()) { ReferenceList RefList = Context.GetObject <ReferenceList>(GetControlValue(RefApplicationCard.MainInfo.Links).ToGuid()); List <CardData> AccountCards = new List <CardData>(); /* Получение карточек */ foreach (ReferenceListReference Link in RefList.References) { if (Link.CardType.Equals(RefAccountCard.ID)) { CardData AccountCard = CardScript.Session.CardManager.GetCardData(Link.Card); CardLock CardLock = CardScript.GetCardLock(AccountCard); if (!CardLock.IsFree) { throw new MyException("Договор/счет «" + CardLock.CardDescription + "» заблокирован " + (CardLock.IsMine ? "вами!" : "пользователем «" + CardLock.AccountName + "»!")); } AccountCards.Add(AccountCard); } } for (Int32 i = 0; i < AccountCards.Count; i++) { RefList = Context.GetObject <ReferenceList>(AccountCards[i].Sections[RefAccountCard.MainInfo.ID].FirstRow.GetGuid(RefAccountCard.MainInfo.LinkListId)); List <CardData> ShipmentTasks = new List <CardData>(), CompleteTasks = new List <CardData>(); /* Получение карточек */ foreach (ReferenceListReference Link in RefList.References) { if (Link.CardType.Equals(RefShipmentCard.ID)) { CardData ShipmentTask = CardScript.Session.CardManager.GetCardData(Link.Card); CardLock CardLock = CardScript.GetCardLock(ShipmentTask); if (!CardLock.IsFree) { throw new MyException("Задание на отгрузку «" + CardLock.CardDescription + "» заблокировано " + (CardLock.IsMine ? "вами!" : "пользователем «" + CardLock.AccountName + "»!")); } ShipmentTasks.Add(ShipmentTask); CardData CompleteTask = CardScript.Session.CardManager.GetCardData(ShipmentTask.Sections[RefShipmentCard.MainInfo.ID].FirstRow.GetGuid(RefShipmentCard.MainInfo.CompleteTaskId).ToGuid()); CardLock = CardScript.GetCardLock(CompleteTask); if (!CardLock.IsFree) { throw new MyException("Задание на комплектацию «" + CardLock.CardDescription + "» заблокировано " + (CardLock.IsMine ? "вами!" : "пользователем «" + CardLock.AccountName + "»!")); } CompleteTasks.Add(CompleteTask); } } if (AccountCards[i].InUpdate) { AccountCards[i].CancelUpdate(); } RowDataCollection AccountServiceRows = AccountCards[i].Sections[RefAccountCard.Service.ID].Rows; RowDataCollection AccountAddCompleteRows = AccountCards[i].Sections[RefAccountCard.AddComplete.ID].Rows; for (Int32 j = 0; j < Table_Service.RowCount; j++) { BaseCardProperty Row = Table_Service[i]; ServiceTableChange Change = Dic_Changes.Find(Row[RefApplicationCard.Service.Id].ToGuid()); RowData ServiceRow = AccountServiceRows.Find(RefAccountCard.Service.Id, Change.RowId); if (Change.IsChanged && !ServiceRow.IsNull()) { if (Change.Warranty.IsChanged) { ServiceRow.SetBoolean(RefAccountCard.Service.Warranty, Change.Warranty.NewValue); } if (Change.DeviceId.IsChanged) { ServiceRow.SetGuid(RefAccountCard.Service.DeviceId, Change.DeviceId.NewValue); } if (Change.AC.IsChanged) { ServiceRow.SetBoolean(RefAccountCard.Service.AC, Change.AC.NewValue); } if (Change.FileIsChanged) { ServiceRow.SetString(RefAccountCard.Service.ACList, Row[RefApplicationCard.Service.ACList] as String); ServiceRow.SetString(RefAccountCard.Service.PackedListData, Row[RefApplicationCard.Service.PackedListData] as String); ServiceRow.SetGuid(RefAccountCard.Service.PackedListId, Row[RefApplicationCard.Service.PackedListData].ToGuid()); RowDataCollection AddCompleteRows = AccountAddCompleteRows.Filter("@" + RefAccountCard.AddComplete.ParentTableRowId + " = '" + Change.RowId.ToString().ToUpper() + "'"); List <String> AccountComlete = AddCompleteRows.Select(r => r.GetString(RefAccountCard.AddComplete.Name)).ToList(); List <String> ApplicationComlete = new List <String>(); for (Int32 k = 0; k < Table_AddComplete.RowCount; k++) { if (Table_AddComplete[k][RefApplicationCard.AddComplete.ParentTableRowId].ToGuid().Equals(Change.RowId)) { ApplicationComlete.Add(Table_AddComplete[k][RefApplicationCard.AddComplete.Name] as String); } } for (Int32 k = 0; k < AddCompleteRows.Count; k++) { if (!ApplicationComlete.Contains(AddCompleteRows[k].GetString(RefAccountCard.AddComplete.Name))) { AccountCards[i].Sections[RefAccountCard.AddComplete.ID].DeleteRow(AddCompleteRows[k].Id); } } for (Int32 k = 0; k < Table_AddComplete.RowCount; k++) { if (Table_AddComplete[k][RefApplicationCard.AddComplete.ParentTableRowId].ToGuid().Equals(Change.RowId)) { RowData AddCompleteRow = AddCompleteRows.Find(RefAccountCard.AddComplete.Name, Table_AddComplete[k][RefApplicationCard.AddComplete.Name] as String); if (AddCompleteRow.IsNull()) { AddCompleteRow = AccountCards[i].Sections[RefAccountCard.AddComplete.ID].Rows.AddNew(); AddCompleteRow.SetInt32(RefAccountCard.AddComplete.Ordered, 0); } AddCompleteRow.SetInt32(RefAccountCard.AddComplete.Count, (Int32?)Table_AddComplete[k][RefApplicationCard.AddComplete.Count]); AddCompleteRow.SetGuid(RefAccountCard.AddComplete.Id, Table_AddComplete[k][RefApplicationCard.AddComplete.Id].ToGuid()); AddCompleteRow.SetString(RefAccountCard.AddComplete.Name, Table_AddComplete[k][RefApplicationCard.AddComplete.Name] as String); AddCompleteRow.SetString(RefAccountCard.AddComplete.Code, Table_AddComplete[k][RefApplicationCard.AddComplete.Code] as String); } } } } } for (Int32 j = 0; j < ShipmentTasks.Count; j++) { if (ShipmentTasks[j].LockStatus == LockStatus.Free && CompleteTasks[j].LockStatus == LockStatus.Free) { if (ShipmentTasks[j].InUpdate) { ShipmentTasks[j].CancelUpdate(); } if (CompleteTasks[j].InUpdate) { CompleteTasks[j].CancelUpdate(); } RowDataCollection ShipmentDevicesRows = ShipmentTasks[j].Sections[RefShipmentCard.Devices.ID].Rows; RowDataCollection CompleteDevicesRows = CompleteTasks[j].Sections[RefCompleteCard.Devices.ID].Rows; foreach (RowData DevicesRow in ShipmentDevicesRows) { ServiceTableChange Change = Dic_Changes.Find(DevicesRow.GetGuid(RefShipmentCard.Devices.AccountCardRowId).ToGuid()); if (!Change.IsNull() && Change.IsChanged) { RowDataCollection CompleteRows = CompleteDevicesRows.Filter("@" + RefCompleteCard.Devices.ShipmentTaskRowId + " = '" + DevicesRow.GetGuid(RefShipmentCard.Devices.Id).ToString().ToUpper() + "'"); /* Изменение связных полей */ if (Change.Warranty.IsChanged) { DevicesRow.SetBoolean(RefShipmentCard.Devices.Warranty, Change.Warranty.NewValue); foreach (RowData CompleteRow in CompleteRows) { CompleteRow.SetBoolean(RefCompleteCard.Devices.Warranty, Change.Warranty.NewValue); } } if (Change.AC.IsChanged) { DevicesRow.SetBoolean(RefShipmentCard.Devices.AC, Change.AC.NewValue); foreach (RowData CompleteRow in CompleteRows) { CompleteRow.SetBoolean(RefCompleteCard.Devices.AC, Change.AC.NewValue); } } if (Change.DeviceId.IsChanged) { DevicesRow.SetGuid(RefShipmentCard.Devices.DeviceId, Change.DeviceId.NewValue); foreach (RowData CompleteRow in CompleteRows) { CompleteRow.SetGuid(RefCompleteCard.Devices.DeviceId, Change.DeviceId.NewValue); } } if (Change.FileIsChanged) { DevicesRow.SetBoolean(RefShipmentCard.Devices.IsChanged, Change.FileIsChanged); for (Int32 k = 0; k < Table_Service.RowCount; k++) { if (Table_Service[k][RefApplicationCard.Service.Id].ToGuid().Equals(Change.RowId)) { DevicesRow.SetGuid(RefShipmentCard.Devices.TemplatePackListId, Table_Service[k][RefApplicationCard.Service.PackedListID].ToGuid()); } } } /* Очистка связных полей */ if (Change.DeviceId.IsChanged || Change.AC.IsChanged) { DevicesRow.SetString(RefShipmentCard.Devices.DeviceNumbers, null); DevicesRow.SetString(RefShipmentCard.Devices.PartyNumbers, null); DevicesRow.SetString(RefShipmentCard.Devices.Coupons, null); foreach (RowData CompleteRow in CompleteRows) { try { Guid DeviceNumberId = CompleteRow.GetObject(RefCompleteCard.Devices.DeviceNumberId).ToGuid(); /* Очистка приборов */ if (!DeviceNumberId.IsEmpty()) { try { UniversalCard.GetItemRow(DeviceNumberId).UpdateDeviceInformation(UniversalCard, CompleteRow.GetBoolean(RefCompleteCard.Devices.AS)); } catch (MyException Ex) { switch (Ex.ErrorCode) { case -1: WriteLog("Ошибка: предвиденное исключение" + "\r\n" + Ex.Message + "\r\n" + Ex.StackTrace); WriteLog("Ошибка: предвиденное исключение" + "\r\n" + Ex.InnerException.Message + "\r\n" + Ex.InnerException.StackTrace); break; case 0: WriteLog("Ошибка: предвиденное исключение" + "\r\n" + Ex.Message + "\r\n" + Ex.StackTrace); break; case 1: String[] ss = Ex.Message.Split('\t'); WriteLog("Ошибка: предвиденное исключение" + "\r\n" + (ss.Length >= 2 ? "В карточке " + ss[1] + " отсутствует поле: " + ss[0] : Ex.Message) + "\r\n" + Ex.StackTrace); WriteLog("Ошибка: предвиденное исключение" + "\r\n" + Ex.InnerException.Message + "\r\n" + Ex.InnerException.StackTrace); break; } } } CompleteRow.SetGuid(RefCompleteCard.Devices.DeviceNumberId, Guid.Empty); CompleteRow.SetString(RefCompleteCard.Devices.DeviceNumber, null); CompleteRow.SetGuid(RefCompleteCard.Devices.CouponId, Guid.Empty); } catch (Exception Ex) { WriteLog("Ошибка: непредвиденное исключение" + "\r\n" + Ex.Message + "\r\n" + Ex.StackTrace); } } } } } } } } } } catch (ArgumentNullException Ex) { MyMessageBox.Show("Поле \"" + Ex.ParamName + "\" обязательно к заполнению!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning); e.Cancel = true; } catch (MyException Ex) { MyMessageBox.Show(Ex.Message + Environment.NewLine + "Синхронизация связных карточек не произойдет.", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning); e.Cancel = true; } catch (Exception Ex) { CallError(Ex); } }