Коллеги, здравствуйте.

Возник вопрос по страничке поиска дублей. На данный момент на странице нельзя стандартными средствами через "вид" настроить колонки в реестре записей для просмотра ответственного менеджера по контакту или контрагенту.

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

Отсюда так же возникает вопрос по ограничениям прав: если менеджер одного отдела (видит только свои контакты) вводит контакт, а он уже есть в базе (ввел менеджер другого отдела). Увидит ли первый, что есть дубль в базе?



Спасибо!

Нравится

3 комментария

Добрый день, Роман!

При поиске дублей (как массовом, так и локальном, при сохранении карточки) права доступа пользователя на контакт не учитываются. В таблице с результатами поиска дублей (да уровне БД) вы можете видеть все дубли независимо от ограничений по ответственному или любому другому полю.

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

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

Могу посоветовать несколько вариантов:

1. При локальном поиске, для того, чтобы видеть похожие контакты при сохранении записи иного варианта, кроме как выдать пользователю права администратора (или роли, которая не ограничивает доступ к Контактам), к сожалению, нет.

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

Хорошего дня!

Здравствуйте, Роман. Сейчас работаем над обновленной дедупликацией, в которой пользователь увидит, что есть похожие записи, даже если у него не было прав доступа на эти данные. Увидит он только ограниченную информацию (колонки, по которым система ищет дубли, а также ответственного по записи). Данные доработки будут доступны в ближайших релизах. Следите за обновлениями.

Татьяна Адамчук, прекрасная новость! До того приходилось реализовывать это дополнительными методами

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

По инструкции на академии добавил правило поиска дублей в контрагенте по полю ИНН.

Правило корректно отрабатывает при глобальном поиске, но не работает при сохранении карточки контрагента. Ошибок в логе поиска нет. Буду благодарен за идеи...

Код процедуры поиска:

IF NOT OBJECT_ID('[dbo].[tsp_FindAccountDuplicateByInn]') IS NULL

BEGIN

    DROP PROCEDURE [dbo].[tsp_FindAccountDuplicateByInn];

END;

GO

CREATE PROCEDURE [dbo].[tsp_FindAccountDuplicateByInn] (

    @parsedConfig CreatingObjectInfo READONLY,

    @sysAdminUnit UNIQUEIDENTIFIER,

    @ruleId UNIQUEIDENTIFIER

)

AS

BEGIN

    DECLARE @parsedConfigRowsCount INT = (SELECT COUNT(*) FROM @parsedConfig);

    CREATE TABLE #searchAccount (

        [SxINN] INT,

        [SortDate] DATETIME

    );

    IF @parsedConfigRowsCount = 0

    BEGIN

        INSERT INTO #searchAccount ([SxInn], [SortDate])

        SELECT

            [SxInn],

            MAX([ModifiedOn])

        FROM [Account]

         GROUP BY [SxInn]

         HAVING COUNT(*) > 1;

    END;

    

     INSERT INTO [AccountDuplicateSearchResult] ([AccountId], [GroupId], [RuleId], [SysAdminUnitId])

    SELECT

         [vr].[Id],

         DENSE_RANK() OVER (ORDER BY [vr].[SortDate] DESC, [vr].[SxInn]),

         @ruleId RuleId,

         @sysAdminUnit

    FROM (

         SELECT

             [v].[Id],

             [v].[SxInn],

             [r].[SortDate]

         FROM [Account] [v], #searchAccount r

         WHERE [v].[SxInn] = [r].[SxInn]

         GROUP BY [v].[SxInn], [r].[SortDate], [v].[Id]

    ) [vr];

END;

GO

Нравится

1 комментарий

Здравствуйте, Иван!

Реализовать поиск дублей при сохранении достаточно не просто. Но если вкратце:

1. Заместить метод getDataForFindDuplicatesService в DuplicatesSearchUtilitiesV2

2. Унаследоваться от класса SingleRequest из SearchDuplicatesService и добавить своё свойство.

3. Создать свой SingleRequesListener чтобы заменить вызов SingleRequest на свой класс

4. Унаследоваться от DeduplicationProcessing и изменить методы AddElementsToRow и GetPreparedXml из SearchDuplicatesService

5. В хранимкке tsp_FindDuplicate нужно изменить под себя CreatingObjectInfo

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