Добрый всем. Заметил странное поведение детали "Стадии" во вкладке "История продажи".
У меня три страницы для разных типов продаж, на двух из них при переходах со стадии на стадию в истории стадий за один переход прописывается 6 стадий (при этом только последняя относится к этому типу продаж). Но интересное что на одном виде продаж такого нет.
Запускается только один бизнес-процесс, так что влияние сторонних исключено, это проверил.
Видимо в логике именно добавления именно в таблицу что-то.
Подскажите как работает логика, так как я в коде так и не смог найти причину и нормально понять как работает логика добавления записей в эту деталь.
Нравится
Проверьте, не установлено ли "Показывать в воронке" в 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, там видно все выполняющиеся процессы (включая кейсы) и шаги.