подскажите, как повторить функционал поиска дублей, но для Лидов. Версия 7.5

Нравится

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

Добрый день!
Лид в bpm'online - потребность клиента. Для одного и того же контакта/контрагента может быть несколько одинаковых лидов(потребностей) в разные промежутки времени. В случае поиска дублей лидов все эти потребности объединятся, что является логически некорректным.

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

предусмотрено ведение различных задач по различным продуктам для одного лида. поиск дублей должен производится по детали «Средства связи» (по полям, содержащим телефон, а также по полю «E-mail»).

Валентин, добрый день!

Функциональность поиска дублей по лидам уже присутствует в версии 7.7
В данном случае оптимальным решением является обновление до последней версии.

Дополнительно хочу отметить, что самостоятельная реализация подобной задачи в 7.5 будет достаточно трудоемка.

Наталья, спасибо за информацию. Но пока обновления до 7.7 не планируется. Хотелось бы все таки получить рекомендации для решения задачи

Здравствуйте, Валентин!

Для того, чтобы объединить дубли лидов необходимо выполнить следующие действия:
1) Создать процесс для поиска лидов (аналогично процессу StartGlobalContactDuplicatesSearch). Для поиска необходимо создать процедуру в базе данных, аналогичную tsp_GloballySearchForDuplicates. Код процедуры tsp_GloballySearchForDuplicates можно найти в конфигурации, перейдя на вкладку "SQL сценарии". Процедура будет записывать данные в созданный Вами объект LeadDuplicates (создайте объект по аналогии с объектом ContactDuplicate)

2) Необходимо создать новую страницу редактирования, которая будет отображать данные из созданного объекта LeadDuplicates по аналогии со страницей DuplicatesPageV2 (либо заместите DuplicatesPageV2, добавив в нее нужную логику).

А теперь самое интересное - слияние лидов и удаление лишних. Так как удалить лид средствами системы не получится (связи, запущенный процесс...), то придется придумывать что-то новое.
Я бы в этот момент создавал бы новую запись лида и изменял данной записи значение в поле "Стадия" на нужное. Остальным дублям изменял бы стадию на "Дисквалифицирован" и указывал причину дисквалификации "Дубль".

Но лучше, наверное, обновиться до 7.7.0.:smile:

Спасибо.
Процесс StartGlobalContactDuplicatesSearch запускается в действии процесса StartGlobalDuplicatesSearch. Как теперь правильно заместить StartGlobalDuplicatesSearch, чтобы добавить в него запуск процесса StartGlobalLeadDuplicatesSearch? или если создать подобное действие процесса со своей логикой, где оно должно запускаться?

"Медведев Валентин Николаевич" написал:

Как теперь правильно заместить StartGlobalDuplicatesSearch, чтобы добавить в него запуск процесса StartGlobalLeadDuplicatesSearch?

Замещение процессов в системе не предусмотрено. Вам необходимо создать новый процесс и запускать его.

"Медведев Валентин Николаевич" написал:

или если создать подобное действие процесса со своей логикой, где оно должно запускаться?

Запускать новый процесс Вы можете, например, из библиотеки процессов (самая простая реализация). Также Вы можете добавить соответствующее действие в раздел "Лиды". Более подробно о создании действий, Вы можете прочитать в Академии.

имелось в виду
что собой и представляет StartGlobalDuplicatesSearch.

Добрый день!

Добавить соответствующее действие в раздел "Лиды" – подразумевается в замещающей странице редактирования лидов добавить новую кнопку в меню “Дейсвтия”. Также добавить обработчик, который будет запускать процесс по нажатию на эту кнопку.

StartGlobalDuplicatesSearch(Действие процесса) содержит сценарий:

string jobProcessName = (SchemaName == "Account") ? "StartGlobalAccountDuplicatesSearch" : "StartGlobalContactDuplicatesSearch";
AppScheduler.ScheduleImmediateProcessJob("DuplicatesSearchJob", "DuplicatesSearchGroup",
jobProcessName, UserConnection.Workspace.Name, UserConnection.CurrentUser.Name);
return true;

если я создам подобное, в котором переменная jobProcessName будет получать "StartGlobalLeadDuplicatesSearch", то где оно должно вызываться?

Здравствуйте!

Этот код добавляет в планировщик Quartz процесс StartGlobalAccountDuplicatesSearch, если поиск осуществляется со схемы Account, StartGlobalContactDuplicatesSearch - при поиске с другой схемы.

Для Вашей задачи, Вы можете действие процесса заменить на следующее:

string jobProcessName = "StartGlobalLeadDuplicatesSearch";
AppScheduler.ScheduleImmediateProcessJob("DuplicatesSearchJob", "DuplicatesSearchGroup",
jobProcessName, UserConnection.Workspace.Name, UserConnection.CurrentUser.Name);
return true;

спасибо всем за помощь! разобрался.
теперь такой вопрос... можно ли изменить логику поиска дублей Лидов при импорте данных из Exel? например, чтобы телефоны "+7 (978) 123 12 31" и "+79781231231" считались совпадением. в каких модулях реализована стандартная логика?

Здравствуйте!

При импорте из Excel записи +7 (978) 123 12 31 и +79781231231 действительно будут считаться разными записями. Проверка на тождественность этих записей не осуществляется.

При импорте из Excel Вы можете проверять уникальность по другим полям/признакам. Также непосредственно перед импортом Вы можете в файле Excel автозаменой символов "(", ")", " " на "".

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