public void AddElementBeforeWithNonSelectingXPath() { const string Pre = @"<root><one /><two /><three /></root>"; const string Post = @"<root><one /><two /><three /><name>value</name></root>"; const string XPath = "root"; var task = new AddElement {Name = "name", Value = "value", Before = "non-existing"}; Run(Pre, Post, XPath, task); }
public void AddElementWithoutValue() { const string Pre = @"<root />"; const string Post = @"<root><name></name></root>"; const string XPath = "root"; var task = new AddElement {Name = "name"}; Run(Pre, Post, XPath, task); }
public void AddElementBeforeWithInvalidXPath() { const string Pre = @"<root />"; const string XPath = "root"; var task = new AddElement {Name = "name", Value = "value", Before = "///"}; Assert.Throws<TaskExecutionException>(() => Run(Pre, null, XPath, task)); }
public void AddElementAfter() { const string Pre = @"<root><one /><two /><three /></root>"; const string Post = @"<root><one /><two /><name>value</name><three /></root>"; const string XPath = "root"; var task = new AddElement {Name = "name", Value = "value", After = "two"}; Run(Pre, Post, XPath, task); }
static public void Add(string element) { if (_coll.Count > 0) { if (!_coll.Contains(element)) { _coll.Add(element); AddElement?.Invoke(element); } } else { _coll.Add(element); AddElement?.Invoke(element); } }
public override IDeepCopyable CopyTo(IDeepCopyable other) { var dest = other as DispenseComponent; if (dest != null) { base.CopyTo(dest); if (Product != null) { dest.Product = (Hl7.Fhir.Model.Coding)Product.DeepCopy(); } if (EyeElement != null) { dest.EyeElement = (Code <Hl7.Fhir.Model.VisionPrescription.VisionEyes>)EyeElement.DeepCopy(); } if (SphereElement != null) { dest.SphereElement = (Hl7.Fhir.Model.FhirDecimal)SphereElement.DeepCopy(); } if (CylinderElement != null) { dest.CylinderElement = (Hl7.Fhir.Model.FhirDecimal)CylinderElement.DeepCopy(); } if (AxisElement != null) { dest.AxisElement = (Hl7.Fhir.Model.Integer)AxisElement.DeepCopy(); } if (PrismElement != null) { dest.PrismElement = (Hl7.Fhir.Model.FhirDecimal)PrismElement.DeepCopy(); } if (BaseElement != null) { dest.BaseElement = (Code <Hl7.Fhir.Model.VisionPrescription.VisionBase>)BaseElement.DeepCopy(); } if (AddElement != null) { dest.AddElement = (Hl7.Fhir.Model.FhirDecimal)AddElement.DeepCopy(); } if (PowerElement != null) { dest.PowerElement = (Hl7.Fhir.Model.FhirDecimal)PowerElement.DeepCopy(); } if (BackCurveElement != null) { dest.BackCurveElement = (Hl7.Fhir.Model.FhirDecimal)BackCurveElement.DeepCopy(); } if (DiameterElement != null) { dest.DiameterElement = (Hl7.Fhir.Model.FhirDecimal)DiameterElement.DeepCopy(); } if (Duration != null) { dest.Duration = (Hl7.Fhir.Model.SimpleQuantity)Duration.DeepCopy(); } if (ColorElement != null) { dest.ColorElement = (Hl7.Fhir.Model.FhirString)ColorElement.DeepCopy(); } if (BrandElement != null) { dest.BrandElement = (Hl7.Fhir.Model.FhirString)BrandElement.DeepCopy(); } if (NotesElement != null) { dest.NotesElement = (Hl7.Fhir.Model.FhirString)NotesElement.DeepCopy(); } return(dest); } else { throw new ArgumentException("Can only copy to an object of the same type", "other"); } }
void Update() { if (Managers.GameManager.State == Enums.GameStates.Battle && !stun) { if (paused) { paused = false; anim.speed = animSpeed; } #region detectMove if (CustomInput.BoolFreshPress(CustomInput.UserInput.Up, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Up, Type)) { directionToMove = Enums.Direction.Up; nextNode = currentNode.Up; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Down, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Down, Type)) { directionToMove = Enums.Direction.Down; nextNode = currentNode.Down; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Left, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Left, Type)) { directionToMove = Enums.Direction.Left; nextNode = currentNode.Left; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Right, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Right, Type)) { directionToMove = Enums.Direction.Right; nextNode = currentNode.Right; } } else { directionToMove = Enums.Direction.None; } #endregion //get next state currState = machine.update(hit, animDone, directionToMove, hand.GetCurrentType(), hand.Empty(), playerNumber); //state clean up if (prevState != currState) { doOnce = false; animDone = false; attack = false; basicAttack = false; move = false; hit = false; if (weapon != null) { Destroy(weapon); } anim.SetInteger("state", (int)currState); } if (invunTimer > 0) { if (renderTimer > renderTime) { render = !render; renderTimer = 0; foreach (SkinnedMeshRenderer b in body) { b.enabled = render; } } hit = false; renderTimer += Time.deltaTime; invunTimer -= Time.deltaTime; } else if (!render || invun) { render = true; foreach (SkinnedMeshRenderer b in body) { b.enabled = true; } invun = false; } //run state switch (currState) { case Enums.PlayerState.Idle: Idle(); break; case Enums.PlayerState.MoveBegining: MoveBegining(); break; case Enums.PlayerState.MoveEnding: MoveEnding(); break; case Enums.PlayerState.Hit: Hit(); break; case Enums.PlayerState.Dead: Dead(); break; case Enums.PlayerState.BasicAttack: BasicAttack(); break; case Enums.PlayerState.HoriSwingMid: CardAnim(); break; case Enums.PlayerState.VertiSwingHeavy: CardAnim(); break; case Enums.PlayerState.ThrowLight: CardAnim(); break; case Enums.PlayerState.ThrowMid: CardAnim(); break; case Enums.PlayerState.Shoot: CardAnim(); break; case Enums.PlayerState.ChiAttack: CardAnim(); break; case Enums.PlayerState.ChiStationary: CardAnim(); break; case Enums.PlayerState.TauntGokuStretch: Taunt(); break; case Enums.PlayerState.TauntPointPoint: Taunt(); break; case Enums.PlayerState.TauntThumbsDown: Taunt(); break; case Enums.PlayerState.TauntWrasslemania: Taunt(); break; case Enums.PlayerState.TauntYaMoves: Taunt(); break; } if (move) { move = false; currentNode.clearOccupied(); currentNode = nextNode; currentNode.Owner = (this); transform.position = currentNode.transform.position; } #region useCard if (useCard) { if (!hand.Empty()) { Enums.CardTypes type = hand.GetCurrentType(); if (type == Enums.CardTypes.SwordHori || type == Enums.CardTypes.SwordVert) { weapon = Instantiate(Katana); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } if (type == Enums.CardTypes.WideSword) { weapon = Instantiate(WideSword); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.NaginataHori || type == Enums.CardTypes.NaginataVert) { weapon = Instantiate(Naginata); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.HammerHori || type == Enums.CardTypes.HammerVert) { weapon = Instantiate(Hammer); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Fan) { weapon = Instantiate(Fan); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Kanobo) { weapon = Instantiate(Kanobo); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale / .8f; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Tanto) { weapon = Instantiate(Tanto); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Wakizashi) { weapon = Instantiate(Wakizashi); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Tonfa) { weapon = Instantiate(Tonfa); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale / .8f; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.BoStaff) { weapon = Instantiate(BoStaff); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale / .5f; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } int sfxNumber = 0; switch (type) { case Enums.CardTypes.SwordVert: case Enums.CardTypes.SwordHori: case Enums.CardTypes.WideSword: case Enums.CardTypes.NaginataVert: case Enums.CardTypes.NaginataHori: case Enums.CardTypes.HammerVert: case Enums.CardTypes.HammerHori: case Enums.CardTypes.Fan: case Enums.CardTypes.Kanobo: case Enums.CardTypes.Tanto: case Enums.CardTypes.Wakizashi: case Enums.CardTypes.Tonfa: case Enums.CardTypes.BoStaff: sfxNumber = 0; break; case Enums.CardTypes.ThrowLight: case Enums.CardTypes.ThrowMid: case Enums.CardTypes.Shoot: sfxNumber = 2; break; case Enums.CardTypes.ChiAttack: case Enums.CardTypes.ChiStationary: sfxNumber = 3; break; default: break; } sfx.PlaySong(sfxNumber); useCard = false; hand.UseCurrent(this, deck); CardUIEvent(); } } #endregion if (basicAttack) { basicAttack = false; Weapons.Hitbox b = Instantiate(bullet); AddElement.AddElementByEnum(b.gameObject, element, true); b.Owner = this.gameObject; b.transform.position = Direction == Enums.Direction.Left ? currentNode.Left.transform.position : currentNode.Right.transform.position; b.CurrentNode = Direction == Enums.Direction.Left ? currentNode.Left : currentNode.Right; b.Direction = Direction; if (playerNumber == 2) { Transform model = b.transform.GetChild(0); model.localScale = new Vector3(model.localScale.x, -model.localScale.y, model.localScale.z); } sfx.PlaySong(2); } if (damage > 0 && takeDamage) { takeDamage = false; TakeDamage(damage, damageElement); damage = 0; damageElement = Enums.Element.None; } prevState = currState; } else { if (!paused) { animSpeed = anim.speed; anim.speed = 0; paused = true; } if (stun) { if ((stunTimer += Time.deltaTime) > stunTime) { stunTimer = 0f; stun = false; } } } }
public void IfNoElementSelectedJustAppend() { const string Pre = @"<root><list><one /><two /><three /></list><list><one /><three /></list></root>"; const string Post = @"<root><list><one /><name>value</name><two /><three /></list><list><one /><three /><name>value</name></list></root>"; const string XPath = "root/list"; var task = new AddElement {Name = "name", Value = "value", Before = "two"}; Run(Pre, Post, XPath, task); }
private void defaultFormAddButton_Click(object sender, EventArgs e) { AddElement addElementForm = new AddElement(this.currentUser, this.parentForm); addElementForm.ShowDialog(); }
protected void OnAddElement(DataStructEventArgs <T> e) { AddElement?.Invoke(this, e); }
private void ExportStructure(ProductStructure structure, bool isConfig = false) { // верификация структуры IsValidStructure(structure); // текущий документ Document currentDoc = structure.Document; // схема структуры SchemeDataConfig schemeConfig = new SchemeDataConfig(structure); SchemeData scheme = schemeConfig.GetScheme(); // родительский элемент RowElement parentItem = structure.GetAllRowElements().Where( x => x.ParentRowElement == null).FirstOrDefault(); ElementDataConfig dataConfig = new ElementDataConfig(parentItem, scheme); ElementData itemData = dataConfig.ConfigData(); // если структура является исполнением, то обозначением головного элемента // является наименование структуры if (isConfig) { itemData.Sign = structure.Name; } // логирование log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = itemData.Section; log.Position = itemData.Position; log.Sign = itemData.Sign; log.Name = itemData.Name; log.Qty = itemData.Qty; log.Doccode = itemData.DocCode; log.FilePath = itemData.FilePath; log.Error = null; log.Write(); // команды TFlexObjSynchRepository synchRep = new TFlexObjSynchRepository(); // родительский элемент decimal?parent = null; // код БД decimal code = 0; decimal doccode = 0; // синхронизация с КИС "Омега" V_SEPO_TFLEX_OBJ_SYNCH synchObj = synchRep.GetSynchObj( itemData.MainSection, itemData.DocCode, itemData.Sign, itemData.ObjectType); // если головной элемент не синхронизирован - выход if (synchObj == null) { return; } #region экспорт родителя switch (synchObj.KOTYPE) { case (decimal)ObjTypes.SpecFixture: #region Спецификация оснастки CreateSpecFix.Exec( itemData.Sign, itemData.Name, ownerCode, synchObj.BOSTATECODE, ompUserCode, fixTypeCode, ref code); // очищение спецификации ClearSpecification.Exec(code); // родительский элемент parent = code; // поиск файла спецификации по шаблону string signPattern = Regex.Replace(itemData.Sign, @"\D", ""); string[] files = Directory.GetFiles(currentDoc.FilePath); foreach (var file in files) { if (file.Contains(itemData.Sign) && file.Contains("СП")) { AddFile.Exec(code, file, ompUserCode, synchObj.FILEGROUP, null, fileMain, ref doccode); } } #endregion Спецификация оснастки break; case (decimal)ObjTypes.SpecDraw: #region Сборочный чертеж CreateSpecDraw.Exec( itemData.Sign, itemData.Name, ownerCode, synchObj.BOSTATECODE, ompUserCode, ref code); // присоединенный файл AddFile.Exec(code, currentDoc.FileName, ompUserCode, synchObj.FILEGROUP, null, fileMain, ref doccode); #endregion Сборочный чертеж break; case (decimal)ObjTypes.Document: case (decimal)ObjTypes.UserDocument: #region Документация CreateDocument.Exec( synchObj.BOTYPE, itemData.Sign, itemData.Name, ownerCode, synchObj.BOSTATECODE, ompUserCode, ref code); // присоединенный файл AddFile.Exec(code, currentDoc.FileName, ompUserCode, synchObj.FILEGROUP, null, fileMain, ref doccode); #endregion Документация break; case (decimal)ObjTypes.Detail: #region Деталь CreateDetail.Exec( itemData.Sign, itemData.Name, ownerCode, synchObj.BOSTATECODE, ompUserCode, ref code); // присоединенный файл AddFile.Exec(code, currentDoc.FileName, ompUserCode, synchObj.FILEGROUP, null, fileMain, ref doccode); // модели для детали var models = structure.GetAllRowElements().Where(x => x.ParentRowElement == parentItem); foreach (var model in models) { ElementDataConfig modelDataConfig = new ElementDataConfig(model, scheme); ElementData modelData = modelDataConfig.ConfigData(); if (modelData.FilePath != null) { log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = modelData.Section; log.Position = modelData.Position; log.Sign = modelData.Sign; log.Name = modelData.Name; log.Qty = modelData.Qty; log.Doccode = modelData.DocCode; log.FilePath = modelData.FilePath; log.Error = null; decimal linkdoccode = 0; AddFile.TryExec(log, code, modelData.FilePath, ompUserCode, synchObj.FILEGROUP, doccode, fileAdditional, ref linkdoccode); } } // моделями также являются невидимые фрагменты у деталей foreach (var fragment in currentDoc.GetFragments().Where(x => !x.Visible)) { if (fragment.FullFilePath != null) { log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = null; log.Position = null; log.Sign = null; log.Name = null; log.Qty = null; log.Doccode = null; log.FilePath = fragment.FilePath; log.Error = null; decimal linkdoccode = 0; AddFile.TryExec(log, code, fragment.FullFilePath, ompUserCode, synchObj.FILEGROUP, doccode, fileAdditional, ref linkdoccode); } } #endregion Деталь break; case (decimal)ObjTypes.Fixture: #region Оснастка CreateFixture.Exec( itemData.Sign, itemData.Name, ownerCode, synchObj.BOSTATECODE, ompUserCode, fixTypeCode, ref code); // присоединенный файл AddFile.Exec(code, currentDoc.FileName, ompUserCode, synchObj.FILEGROUP, null, fileMain, ref doccode); // модели для детали var fix_models = structure.GetAllRowElements().Where(x => x.ParentRowElement == parentItem); foreach (var model in fix_models) { ElementDataConfig modelDataConfig = new ElementDataConfig(model, scheme); ElementData modelData = modelDataConfig.ConfigData(); if (modelData.FilePath != null) { log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = modelData.Section; log.Position = modelData.Position; log.Sign = modelData.Sign; log.Name = modelData.Name; log.Qty = modelData.Qty; log.Doccode = modelData.DocCode; log.FilePath = modelData.FilePath; log.Error = null; decimal linkdoccode = 0; AddFile.TryExec(log, code, modelData.FilePath, ompUserCode, synchObj.FILEGROUP, doccode, fileAdditional, ref linkdoccode); } } // моделями также являются невидимые фрагменты у деталей foreach (var fragment in currentDoc.GetFragments().Where(x => !x.Visible)) { if (fragment.FullFilePath != null) { log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = null; log.Position = null; log.Sign = null; log.Name = null; log.Qty = null; log.Doccode = null; log.FilePath = fragment.FilePath; log.Error = null; decimal linkdoccode = 0; AddFile.TryExec(log, code, fragment.FullFilePath, ompUserCode, synchObj.FILEGROUP, doccode, fileAdditional, ref linkdoccode); } } #endregion Оснастка break; default: break; } #endregion экспорт родителя #region элементы спецификации if (itemData.MainSection == "Сборочные единицы") { foreach (var elem in structure .GetAllRowElements() .Where(x => x.ParentRowElement == parentItem) ) { // получение данных о документе dataConfig = new ElementDataConfig(elem, scheme); itemData = dataConfig.ConfigData(); // логирование log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = itemData.Section; log.Position = itemData.Position; log.Sign = itemData.Sign; log.Name = itemData.Name; log.Qty = itemData.Qty; log.Doccode = itemData.DocCode; log.FilePath = itemData.FilePath; log.Error = null; log.Write(); // если обозначение или секция пустые, то переход на следующий элемент if (itemData.Sign == String.Empty || itemData.Section == String.Empty) { continue; } //System.Windows.Forms.MessageBox.Show(itemData.SignFull + " |" + itemData.Section + " | " // + itemData.MainSection + " | " + itemData.ObjectType); // синхронизация с КИС "Омега" synchObj = synchRep.GetSynchObj( itemData.MainSection, itemData.DocCode, itemData.Sign, itemData.ObjectType); // переход на следующий элемент, если позиция не синхронизирована if (synchObj == null) { continue; } switch (synchObj.KOTYPE) { case (decimal)ObjTypes.SpecFixture: #region Спецификация оснастки CreateSpecFix.Exec( itemData.SignFull, itemData.Name, ownerCode, synchObj.BOSTATECODE, ompUserCode, fixTypeCode, ref code); // очищение спецификации ClearSpecification.Exec(code); // если у сборки есть фрагмент... if (itemData.FilePath != null) { try { if (!File.Exists(itemData.FilePath)) { throw new FileNotFoundException(); } // открыть документ входящей сборки в режиме чтения Document linkDoc = TFlex.Application.OpenDocument(itemData.FilePath, false, true); // добавить документ в стек stackDocs.Add(linkDoc); // экспорт документа ExportDoc(linkDoc, itemData.SignFull); // закрытие документа linkDoc.Close(); // удалить из стека документ stackDocs.Remove(linkDoc); } catch (FileNotFoundException e) { log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = itemData.Section; log.Position = itemData.Position; log.Sign = itemData.Sign; log.Name = itemData.Name; log.Qty = itemData.Qty; log.Doccode = itemData.DocCode; log.FilePath = itemData.FilePath; log.Error = null; log.Write(e); } catch (Exception) { throw; } } #endregion Спецификация оснастки break; case (decimal)ObjTypes.SpecDraw: #region Сборочный чертеж CreateSpecDraw.Exec( itemData.Sign, itemData.Name, ownerCode, synchObj.BOSTATECODE, ompUserCode, ref code); // присоединенный файл AddFile.Exec(code, currentDoc.FileName, ompUserCode, synchObj.FILEGROUP, null, fileMain, ref doccode); #endregion Сборочный чертеж break; case (decimal)ObjTypes.Document: case (decimal)ObjTypes.UserDocument: #region Документация CreateDocument.Exec( synchObj.BOTYPE, itemData.Sign, itemData.Name, ownerCode, synchObj.BOSTATECODE, ompUserCode, ref code); // файл if (itemData.FilePath != null) { AddFile.Exec(code, itemData.FilePath, ompUserCode, synchObj.FILEGROUP, null, fileMain, ref doccode); } #endregion Документация break; case (decimal)ObjTypes.Detail: #region Деталь CreateDetail.Exec( itemData.SignFull, itemData.Name, ownerCode, synchObj.BOSTATECODE, ompUserCode, ref code); // файл if (itemData.FilePath != null) { AddFile.Exec(code, itemData.FilePath, ompUserCode, synchObj.FILEGROUP, null, fileMain, ref doccode); } // модели для детали var models = structure.GetAllRowElements().Where(x => x.ParentRowElement == elem); foreach (var model in models) { ElementDataConfig modelDataConfig = new ElementDataConfig(model, scheme); ElementData modelData = modelDataConfig.ConfigData(); if (modelData.FilePath != null) { log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = modelData.Section; log.Position = modelData.Position; log.Sign = modelData.Sign; log.Name = modelData.Name; log.Qty = modelData.Qty; log.Doccode = modelData.DocCode; log.FilePath = modelData.FilePath; log.Error = null; decimal linkdoccode = 0; AddFile.TryExec(log, code, modelData.FilePath, ompUserCode, synchObj.FILEGROUP, (doccode == 0) ? null : (decimal?)doccode, fileAdditional, ref linkdoccode); } } // открывается документ на деталь, если есть if (itemData.FilePath != null) { try { if (!File.Exists(itemData.FilePath)) { throw new FileNotFoundException(); } // открыть документ входящей сборки в режиме чтения Document linkDoc = TFlex.Application.OpenDocument(itemData.FilePath, false, true); // добавить документ в стек stackDocs.Add(linkDoc); // экспорт документа ExportDoc(linkDoc, itemData.SignFull); // закрытие документа linkDoc.Close(); // удалить из стека документ stackDocs.Remove(linkDoc); } catch (FileNotFoundException e) { log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = itemData.Section; log.Position = itemData.Position; log.Sign = itemData.Sign; log.Name = itemData.Name; log.Qty = itemData.Qty; log.Doccode = itemData.DocCode; log.FilePath = itemData.FilePath; log.Error = null; log.Write(e); } catch (Exception) { throw; } } #endregion Деталь break; case (decimal)ObjTypes.Fixture: #region Оснастка CreateFixture.Exec( itemData.SignFull, itemData.Name, ownerCode, synchObj.BOSTATECODE, ompUserCode, fixTypeCode, ref code); // файл if (itemData.FilePath != null) { AddFile.Exec(code, itemData.FilePath, ompUserCode, synchObj.FILEGROUP, null, fileMain, ref doccode); } // модели для детали var fix_models = structure.GetAllRowElements().Where(x => x.ParentRowElement == elem); foreach (var model in fix_models) { ElementDataConfig modelDataConfig = new ElementDataConfig(model, scheme); ElementData modelData = modelDataConfig.ConfigData(); if (modelData.FilePath != null) { log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = modelData.Section; log.Position = modelData.Position; log.Sign = modelData.Sign; log.Name = modelData.Name; log.Qty = modelData.Qty; log.Doccode = modelData.DocCode; log.FilePath = modelData.FilePath; log.Error = null; decimal linkdoccode = 0; AddFile.Exec(code, modelData.FilePath, ompUserCode, synchObj.FILEGROUP, (doccode == 0) ? null : (decimal?)doccode, fileAdditional, ref linkdoccode); } } // открывается документ на деталь, если есть if (itemData.FilePath != null) { try { if (!File.Exists(itemData.FilePath)) { throw new FileNotFoundException(); } // открыть документ входящей сборки в режиме чтения Document linkDoc = TFlex.Application.OpenDocument(itemData.FilePath, false, true); // добавить документ в стек stackDocs.Add(linkDoc); // экспорт документа ExportDoc(linkDoc, itemData.SignFull); // закрытие документа linkDoc.Close(); // удалить из стека документ stackDocs.Remove(linkDoc); } catch (FileNotFoundException e) { log.Span = sw.Elapsed; log.User = settings.UserName; log.Document = this.doc.FileName; log.Section = itemData.Section; log.Position = itemData.Position; log.Sign = itemData.Sign; log.Name = itemData.Name; log.Qty = itemData.Qty; log.Doccode = itemData.DocCode; log.FilePath = itemData.FilePath; log.Error = null; log.Write(e); } catch (Exception) { throw; } } #endregion Оснастка break; default: code = 0; break; } // добавить очередной элемент в спецификацию if (code != 0) { AddElement.Exec( parent.Value, code, synchObj.KOTYPE, synchObj.OMPSECTION, itemData.Qty.Value, itemData.Position, ompUserCode); } } } #endregion элементы спецификации }