/// <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(); }
/// <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(); // сохраняем изменения }