Ejemplo n.º 1
0
        /// <summary>
        ///  Добавление ремонтной работы/доработки.
        /// </summary>
        /// <param name="sender"> sender.</param>
        /// <param name="e"> e.</param>
        private void AddButton_Click(object sender, EventArgs e)
        {
            bool          Improvement;
            object        activateParam = new object[] { "{DD20BF9B-90F8-4D9A-9553-5B5F17AD724E}", "", "{43A6DA44-899C-47D8-9567-2185E05D8524}", null, null, true };
            VbaCollection result        = (VbaCollection)Card.CardScript.CardFrame.CardHost.SelectFromCard(new Guid("{B2A438B7-8BB3-4B13-AF6E-F2F8996E148B}"), "Выберите вид ремонтных работ или доработку", activateParam);

            if (result != null)
            {
                foreach (object r in result)
                {
                    // Проверка выбранной записи
                    bool              Verify       = true;
                    RowData           WorkRow      = UniversalCard.GetItemRow(r.ToGuid());
                    int               WorksType    = (int)WorkRow.ChildSections[RefUniversal.Properties.ID].FindRow("@Name = 'Тип работ'").GetInt32(RefUniversal.Properties.Value);
                    RowDataCollection WorksDevices = WorkRow.ChildSections[RefUniversal.Properties.ID].FindRow("@Name = 'Приборы'").ChildSections[RefUniversal.SelectedValues.ID].Rows;
                    if (WorksType == 3)
                    {
                        DevExpress.XtraEditors.XtraMessageBox.Show("Позиция '" + WorkRow.GetString(RefUniversal.Item.Name) + "' не является ремонтной работой или доработкой. Она не будет добавлена в перечень ремонтных работ.");
                        Verify = false;
                    }

                    if (!WorksDevices.Any(row => row.GetString(RefUniversal.SelectedValues.SelectedValue).ToGuid().Equals(DeviceType.ToGuid())))
                    {
                        string DeviceTypeName = UniversalCard.GetItemName(new Guid(DeviceType));
                        DevExpress.XtraEditors.XtraMessageBox.Show("Позиция '" + WorkRow.GetString(RefUniversal.Item.Name) + "' не относится к прибору " + DeviceTypeName + ". Она не будет добавлена в перечень ремонтных работ.");
                        Verify = false;
                    }

                    if (Verify)
                    {
                        // Добавление выбранной записи
                        Improvement = WorksType == 2 ? true : false;
                        object[] Parametr = new object[9];
                        Parametr[0] = UniversalCard.GetItemName(r.ToGuid());
                        Parametr[1] = r.ToString();
                        Parametr[2] = 1;
                        Parametr[3] = Improvement;
                        Parametr[4] = Card.Context.GetCurrentEmployee().DisplayName;
                        Parametr[5] = Card.Context.GetObjectRef(Card.Context.GetCurrentEmployee()).Id.ToString();
                        Parametr[6] = 0;
                        Parametr[7] = null;
                        Parametr[8] = Work.NegotiationResult.NotAgreed.GetDescription();
                        DataRow NewRow = Table.Rows.Add(Parametr);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///  Выбор вида ремонтных работ и доработок.
        /// </summary>
        /// <param name="sender"> sender.</param>
        /// <param name="e"> e.</param>
        private void repositoryItemButtonEdit1_ButtonPressed(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            int[]  index = gridView1.GetSelectedRows();
            bool   Improvement;
            string WorksTypeID   = gridView1.GetRowCellDisplayText(index[0], "TWID").ToString();
            object activateParam = new string[] { "{DD20BF9B-90F8-4D9A-9553-5B5F17AD724E}", WorksTypeID, "{43A6DA44-899C-47D8-9567-2185E05D8524}" };
            object result        = Card.CardScript.CardFrame.CardHost.SelectFromCard(new Guid("{B2A438B7-8BB3-4B13-AF6E-F2F8996E148B}"), "Выберите вид ремонтных работ или доработку", activateParam);

            if (result != null)
            {
                // Проверка выбранной записи
                RowData           WorkRow      = UniversalCard.GetItemRow(result.ToGuid());
                int               WorksType    = (int)WorkRow.ChildSections[RefUniversal.Properties.ID].FindRow("@Name = 'Тип работ'").GetInt32("Value");
                RowDataCollection WorksDevices = WorkRow.ChildSections[RefUniversal.Properties.ID].FindRow("@Name = 'Приборы'").ChildSections[RefUniversal.SelectedValues.ID].Rows;

                if (WorksType == 3)
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show("Выбранная вами позиция не является ремонтной работой или доработкой. Изменения внесены не будут.");
                    return;
                }
                if (!WorksDevices.Any(r => r.GetString(RefUniversal.SelectedValues.SelectedValue) == DeviceType))
                {
                    string DeviceTypeName = UniversalCard.GetItemName(new Guid(DeviceType));
                    DevExpress.XtraEditors.XtraMessageBox.Show("Выбранная вами позиция не относится к прибору " + DeviceTypeName + ". Изменения внесены не будут.");
                    return;
                }

                // Дбавление выбранной записи
                Improvement = WorksType == 2 ? true : false;
                foreach (int i in index)
                {
                    gridView1.SetRowCellValue(i, "TW", UniversalCard.GetItemName(result.ToGuid()));
                    gridView1.SetRowCellValue(i, "TWID", result.ToString());
                    gridView1.SetRowCellValue(i, "TI", Improvement);
                    gridView1.SetRowCellValue(i, "TR", Work.NegotiationResult.NotAgreed.GetDescription());
                }
                Table.AcceptChanges();
                WorksList = GetWorksList(Table);
            }
        }
Ejemplo n.º 3
0
        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();
        }