コード例 #1
0
        /// <summary>
        /// Выполняет логику обработчика.
        /// </summary>
        internal void Process()
        {
            // TODO: CR: Тряхов Дмитрий: это настройка, не нужно
            // Если принято решение <Запросить аннулирование>
            if (this.AnnulFlag)
            {
                int i = 0;
                SolutionsHistory lastSolution = this.Logic.SolutionsHistoryManager.GetHistory()[i];

                // Узнаем статус документа до принятия решения об Аннулировании
                while (lastSolution.StatusID == this.GetStatusID(Const.StageAnnul))
                {
                    lastSolution = this.Logic.SolutionsHistoryManager.GetHistory()[i++];
                }

                // В поле <Статус аннулирования> передаем id статуса до аннулирования.
                this.Item.SetValue(Const.FiledAnnulStatus, lastSolution.StatusID);

                // Присваиваем карточке статус .
                this.Logic.FormResult.StatusID = this.GetStatusID(Const.StageAnnul);
            }
            // TODO: CR: Тряхов Дмитрий: не нужно усложнятть с флагом
            // Если принято решение <Отклонить аннулирование>
            else if (!this.AnnulFlag)
            {
                // Смотрим значение поля <Статус аннулирования>
                string previousStatus   = this.Item.GetStringValue(Const.FiledAnnulStatus);
                int    previousStatusID = 0;

                if (previousStatus != null)
                {
                    // Присваиваем карточке статус из поля <Статус аннулирования>.
                    previousStatusID = this.GetStatusID(previousStatus);
                    this.Logic.FormResult.StatusID = previousStatusID;
                }
                // TODO: CR: Тряхов Дмитрий: зачем тогда это? выше же проставили
                else if (previousStatus == null)
                {
                    int i = 0;
                    SolutionsHistory lastSolution = this.Logic.SolutionsHistoryManager.GetHistory()[i];

                    // Узнаем статус документа до принятия решения об Аннулировании
                    while (lastSolution.StatusID == this.GetStatusID(Const.StageAnnul))
                    {
                        lastSolution = this.Logic.SolutionsHistoryManager.GetHistory()[i++];
                    }

                    // Присваиваем карточке новый статус.
                    this.Logic.FormResult.StatusID = lastSolution.StatusID;
                }
            }
            this.Logic.WFUpdateItemInfo();
        }
コード例 #2
0
        /// <summary>
        /// Выполняет логику обработчика.
        /// </summary>
        internal void Process()
        {
            int    i     = 0;
            string query = "";

            query = $"[Название] = N'{Const.Archive}'";
            int archiveStageID = this.Stages.GetItem(query).ID;

            query = $"[Название] = N'{Const.Agreement}'";
            int agreementStageID = this.Stages.GetItem(query).ID;

            query = $"[Название] = N'{Const.Refinement}'";
            int refinementStageID = this.Stages.GetItem(query).ID;

            SolutionsHistory lastSolution = this.Logic.SolutionsHistoryManager.GetHistory()[i];

            while (lastSolution.StageID == archiveStageID)
            {
                lastSolution = this.Logic.SolutionsHistoryManager.GetHistory()[i++];
            }

            // если ДС было отправлено на оперативное хранение в [этап] = согласование
            if (lastSolution.StageID == agreementStageID)
            {
                this.Logic.FormResult.StageID = refinementStageID;          //  вернуть на этап "Доработка" (id этапа = 13)

                this.ClearAgreementBlock();
            }
            else
            {
                this.Logic.FormResult.StageID  = lastSolution.StageID;      // устанавливаем предыдущее значение Этапа
                this.Logic.FormResult.StatusID = lastSolution.StatusID;     // устанавливаем предыдущее значение Статуса
            }

            this.Logic.WFUpdateItemInfo();                      // сохраняем изменения
        }