В продолжение данного топика
Правило дедубликации только по телефону не работает. Более того, методом научного тыка было обнаружено следующее:
1) Мы создали правило поиска по телефону и ещё одному полю UsrDedub (по аналогии правило поиска по названию и телефону).
2) Сделали значение UsrDedub = 1 в нескольких контрагентах (около 20). В лиде UsrDedub также = 1. Правило отработало корректно.
3) Сделали значение UsrDedub = 1 для всех контрагентов (около 7 500). Правило работать перестало.
4) Изменили параметр @offsetLimit в SQL запросе tsp_FindAccountSimilarRecords с 200 на 7500. Правило вновь стало работать.
Отсюда мы сделали вывод - правило поиска по телефону отрабатывает только по коллекции контрагентов, которые уже отобраны каким либо правилом поиска дублей.
Копаем дальше, но может кто-то может подсказать:
1) Насколько изменение @offsetLimit может быть критичным для быстродействия системы. Изменение до 10 000 визуально никаки систему не загрузили.
2) Как заставить правило поиска похожих контрагентов по телефону из лида работать самостоятельно, без дополнительных правил поиска.
3) Либо если он работает в паре с другим правилом - в первую очередь проводить поиск именно по телефону?
Нравится
Здравствуйте!
1. Если будет слишком большое количество записей, то вполне возможен отвал запроса по timeout.
2, 3. Для того, чтобы правило поиска похожих контрагентов в лидах работало отдельно, необходимо в хранимой процедуре tsp_FindAccountSimilarRecords изменить блок "IF @execStmt IS NOT NULL..." на:
SET @detailsSelectQuery = N'SELECT TOP '+ CAST(@offsetLimit as NVARCHAR) +
' ' + @queryColumnName + CHAR(10) +
'FROM ' + CHAR(10) + @schemaName + CHAR(10) +
'WITH (NOLOCK) ' + CHAR(10) +
'WHERE 1=1 ';
IF @execStmt IS NOT NULL
BEGIN
SET @detailsSelectQuery =
@detailsSelectQuery + CHAR(10) + 'AND' + CHAR(10) + @queryColumnName + CHAR(10) + ' IN (' + @execStmt + ')';
END
IF @equalQueryConditions IS NOT NULL
BEGIN
SET @detailsSelectQuery = @detailsSelectQuery + CHAR(10) +
@equalQueryConditions;
END
IF @inQueryConditions IS NOT NULL
BEGIN
SET @detailsSelectQuery = @detailsSelectQuery + CHAR(10) + @inQueryConditions;
END
IF @detailsSelectQuery IS NOT NULL
BEGIN
INSERT INTO @resultIdsTable
EXEC sp_executesql @detailsSelectQuery;
END