Странные стадии которых не должно быть, но они есть

Добрый всем. Заметил странное поведение детали "Стадии" во вкладке "История продажи".

У меня три страницы для разных типов продаж, на двух из них при переходах со стадии на стадию в истории стадий за один переход прописывается 6 стадий (при этом только последняя относится к этому типу продаж). Но интересное что на одном виде продаж такого нет.

Запускается только один бизнес-процесс, так что влияние сторонних исключено, это проверил.

Видимо в логике именно добавления именно в таблицу что-то.

Подскажите как работает логика, так как я в коде так и не смог найти причину и нормально понять как работает логика добавления записей в эту деталь.

Нравится

7 комментариев

Проверьте, не установлено ли "Показывать в воронке" в True для этих стадии в справочнике стадий продаж

Было похожее, но единоразово, когда сайт был сильно загружен. Тогда, вероятнее всего, проблема была в том, что не создался DCM-процесс из-за перезагрузки одной из нод.

 

Если воспроизводится стабильно, то где-то в коде реализовано: или во встроенном БП, или в отдельных, или в событийном слое, или в кейсах этого раздела, или в коде карточки на JS, или, что наименее вероятно, вообще в триггерах.

 

Тут ещё нужно понять, только ли деталь стадий менялась, или реально каждый раз менялось поле «стадия» продажи. Это можно выяснить, настроив стандартный механизм журнала изменений для раздела.

Владимир Соколов,

 в воронке отображаются, так и должно быть. Проблема в том что эти стадии относятся к другим кейсам, которых у меня 4

Зверев Александр,

 смотрел журнал процессов - других процесов не запускается. Смотрел тригер для продаж - нет тригера что мог бы это сделать. Журнал вообще включаться не хочет на раздел продаж, пишет что установлен из пакета, хотя "текущий пакет" стоит кастомный в котором ведется разработка. Доработки проверил свои - нет ни где нечего что могло бы  стадии эти сделать. Может Вы знате логику по которой в таблицу "Стадии" вносятся записи, так как мне разобрать это в коде не удалось что бы понять что не так?

Нужно смотреть во встроенном БП объекта «Продажа» в функции SynchronizeOpportunityStage:

  public virtual void SynchronizeOpportunityStage() {
   if (UserConnection.GetIsFeatureEnabled("DisableOldOpportunityStageSynchronizers")) {
    return;
   }
   if (UserConnection.GetIsFeatureEnabled("NewOpportunityStageManager")) {
    var opportunityStageRepository =
     Terrasoft.Core.Factories.ClassFactory.Get<Terrasoft.Configuration.OpportunityStageRepository>(
      new Terrasoft.Core.Factories.ConstructorArgument("userConnection", UserConnection));
    var opportunityInStageRepository =
     Terrasoft.Core.Factories.ClassFactory.Get<Terrasoft.Configuration.OpportunityInStageRepository>(
      new Terrasoft.Core.Factories.ConstructorArgument("userConnection", UserConnection));
    var opportunityStageManager =
     Terrasoft.Core.Factories.ClassFactory.Get<Terrasoft.Configuration.OpportunityStageManager>(
      new Terrasoft.Core.Factories.ConstructorArgument("userConnection", UserConnection),
      new Terrasoft.Core.Factories.ConstructorArgument("opportunityStageRepository", opportunityStageRepository),
      new Terrasoft.Core.Factories.ConstructorArgument("opportunityInStageRepository", opportunityInStageRepository));
    opportunityStageManager.SynchronizeStage(StageOldValue, OldOwnerId, Entity);
   } else {
    var oppInStageSchema = UserConnection.EntitySchemaManager.GetInstanceByName("OpportunityInStage");
    var stageHelper = Terrasoft.Core.Factories.ClassFactory.Get<Terrasoft.Configuration.OpportunityStageHelper>(
     new Terrasoft.Core.Factories.ConstructorArgument("userConnection", UserConnection),
     new Terrasoft.Core.Factories.ConstructorArgument("oppInStageSchema", oppInStageSchema));
    stageHelper.SynchronizeStage(StageOldValue, OldOwnerId, Entity);
   }
  }

Если, конечно, она не отключается сразу же по фиче во второй строке и работает новая логика где-то в другом месте.

Зверев Александр,

 

К сожалению настройка "DisableOldOpportunityStageSynchronizers" по умолчанию включена, значит синхронизацию стадий реализовали в другом совершенно методе, возможно даже через какой-то бизнес процесс, так как весь метод только начавшись заканчивается сразу return. Так и не нашел как. Самое интересное:

- во первых, что проблема появилась после обновления с 7.12.4 до 7.15.2 (да, много пропустили потому массово пришлось обновлять), на 7.12.4 проблемы не было

- во вторых, у меня три вида продаж, и в одном поведение осталось нормальным а в двух вот такой сбой.

 

Перепроверил у продажи у которой все работает нормально, и сравнил с другими где поведение не корректоное - нечего не нашел, логика везде одинаковая в общем своем

А в кейсах для этого раздела проверяли, может, логика там реализована?

 

Если есть доступ к базе, проверьте, что за записи в момент такого поведения появляются в SysProcessLog и SysProcessElementLog, там видно все выполняющиеся процессы (включая кейсы) и шаги.

Показать все комментарии