Вопрос

Добрый вечер.

Хотелось бы добавить кастомное правило поиска дублей. Действовал с оглядкой на https://academy.terrasoft.ru/documents/technic-sdk/7-14/dobavlenie-pravila-poiska-dubley ,но возникла сложность при объявлении типов параметров, если аналог с mscql UNIQUEIDENTIFIER - uuid, то какой аналог у CreatingObjectInfo? 

Будет ли достаточно создания только одной процедурки или имеются еще какие-то не очевидные, но нужные действия

Как она будет взаимодействовать с elasticsearch в таком случае

И хоть и неправильную но все же процедуру я пытался прикреплять к правилу, согласно гайду, но с пустым телом "RuleBody" она не хотела функционировать

Было бы прекрасно, если бы имелся какой-нибудь пример на postgresql.

Bpm'online развернут on-site. Глобальный поиск и тд настроены

Заранее спасибо

У меня такой же вопрос

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

Посмотрите статью в академии ДОБАВЛЕНИЕ ПРАВИЛА ПОИСКА ДУБЛЕЙ

Руслан, добрый день!

Для PostgreSQL доступен только новый функционал дедупликации, который завязан на сервис глобального поиска.
Инструкция по настройке массового поиска дублей для приложений on-site:
https://academy.terrasoft.ru/documents/administration/7-14/nastroyka-massovogo-poiska-dubley

Григорий Чех, На неё я и оглядывался, когда пытался добавить правило

Мотков Илья,

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

Для Postgre есть только поиск дублей на основе ElasticSearch. Старые разработки на основе хранимых процедур работать не будут.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте!
Интересует функционал проверки дублей в моб.приложении в объектах: "контакты", "контрагенты", "лиды".

Есть ли такая возможность? Или приходится после работы в поле, в десктопной версии самостоятельно каждому менеджеру осуществлять проверку дублей?

У меня такой же вопрос

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

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

Если менеджеры работают в мобильном приложении в режиме "оффлайн", то поиск дублей отрабатывает после синхронизации: новые записи попадают в реестр записей в десктопе, реестр изменяется в соответствии с настроенными правилами поиска и удаления дублей (данный процесс можно автоматизировать - https://academy.terrasoft.ru/documents/studio/7-12/nastroyka-pravil-i-raspisaniya-poiska-dubley#XREF_31918), после выполнения поиска и объединения дублей, в результате повторной синхронизации реестр изменится.

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

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

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

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

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

Спасибо!

У меня такой же вопрос

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

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

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

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

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

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

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

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

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

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

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

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Коллеги, здравствуйте!
Необходимо настроить права для поиска дублей для bpm 7.9.0. В документации этого не нашла, попался небольшой документ для версий 3.х http://www.community.terrasoft.ru/system/files/duplicates_search_setting...
Подскажите, пожалуйста, какие-либо материалы по данному вопросу, либо может, кто-то с этим сталкивался?

У меня такой же вопрос

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

Добрый день, Елена!

Права доступа на работу с функционалом дедупликации настраиваются в соответствующих правах доступа на операции: 1. Доступ к правилам поиска дублей; 2. Обработка дублей; 3. Поиск дублей.
Во вложении прикреплен скриншот для наглядности. Для каждой из вышеуказанных операций можно дать права определенной роли или конкретному пользователю.
Базовый функционал и логика поиска дублей описана в руководстве пользователя (+ статьи см. также): https://academy.terrasoft.ru/documents/sales-commerce/7-9/globalnyy-poi…

Валерий, спасибо большое!

Войдите или зарегистрируйтесь, чтобы комментировать
Идея
Сделать проверку уникальности полей (например, название контрагента, регистрационный номер, имя контакта, номер телефона и т.п. - можно еще выбирать на уровне конфигурации) во время ввода данных.Тогда если пользователь введет в карточку нового контакта имя и фамилию, то система сразу предупредит, что уже есть такой, а не будет молчаливо дожидаться, пока пользователь потратит минут 10 на ввод всей имеющейся информации, чтобы потом обнаружить, что такой контакт уже есть в системе. Думаю, что Select по полю не так сильно скажется на объеме трафика и быстродействии. Тем более, что можно это и отключать по желанию пользователя
Ревью
4 комментария

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

На и так не особо шустром интерфейсе скажется плохо :) а так идея хорошая

"Александр Кудряшов" написал:На и так не особо шустром интерфейсе скажется плохо

Думаю, что с индексами будет не медленнее, чем подтягивание значений в Lookup

плюсую, но только при наличии настройки в профиле

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

в руководстве администратора http://www.training.terrasoft.ru/system/files/TS_AG_3.4.0.pdf
параграф 4.4. Настройка правил поиска дублей с.152
написано что для версий Террасофт 3.Х доступно окно настроек для правил поисков дублей [Правила поиска дублей]
у нас версия 3.4.1 но данной настройки у нас нет.
посмотрел среди сервисов через конфигуратор, там тоже нет ничего похожего.

подскажите пожалуйста в чем может быть проблема?

У меня такой же вопрос

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

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

В конфигураторе сервисы называются wnd_DuplicateSearchSettingsEdit (карточка) и wnd_DuplicateSearchSettingsGridArea (реестр).

Что касается запуска настроек поиска из пользовательской части, то запуск выполняется из настроек:

Настройки - > Правила поиска дублей.

Андрей, здравтсвуйте!

да? как раз так и написано в руководстве: Настройки - > Правила поиска дублей.

но у нас этого почему то нет,
и сервисов wnd_DuplicateSearchSettingsEdit wnd_DuplicateSearchSettingsGridArea в конфигураторе нет.

по вхождению Duplicate находятся только такие:

scr_DuplicatesUtils
scr_MergeDuplicates
scr_SubjectDuplicates
wnd_MergeDuplicates
wnd_SubjectDuplicates

они вроде используются в другом месте Файл -> Сервис -> Проверка дублей

?

Андрей, здравствуйте!

да иммено так напасано в Руководстве: Настройки - > Правила поиска дублей.

но у нас этого нет.

так же я не смог найти сервисы wnd_DuplicateSearchSettingsEdit и wnd_DuplicateSearchSettingsGridArea .

по вхождению Duplicate находятся только сервисы:

scr_SubjectDuplicates
scr_MergeDuplicates
scr_DuplicatesUtils
wnd_MergeDuplicates
wnd_SubjectDuplicates

Вот как выглядит меню настройки

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

Дело в том, что у Вас выполнялся так называемый лайт-переход с версии 3.3.2 на версию 3.4.1.

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

При этом конфигурационная часть, в частности, сервисы окна настроек поиска, хранимые процедуры - не переносились.

В этом, собственно, причина, почему настройка правил поиска дублей отсутствует.

понятно, спасибо!

а можно ли эти сервисы получить отдельно?
или где то найти?

Андрей,

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

Мы можем направить Вам дистрибутив версии 3.4.1, используя который Вы сможете попробовать самостоятельно перенести данный функционал.

Сообщите, пожалуйста, если это необходимо.
Если необходимо - просьба сообщить по адресу: support@terrasoft.ru

да, нам данный функционал был бы очень полезен!

Андрей, Вы напишите на support@terrasoft.ru ?

кстати в в вышеупомянутом руководстве http://www.training.terrasoft.ru/system/files/TS_AG_3.4.0.pdf
параграф 4.4. Настройка правил поиска дублей с.152
сказано

цитата :
<<
В Terrasoft 3.X реализована возможность поиска дублей по всем таблицам
конфигурации системы.
>>

неточность в руководстве?

да Андрей, я написал на support@terrasoft.ru

Андрей,

письмо получили, дистрибутив направим.

Что касается руководства, то упомянутая цитата касается версии 3.4.0 и выше.

Ответ службы поддержки:
В Terrasoft XRM + Service Desk версии 3.4.1 нет русского релиза

как быть?

Андрей,

мы направили Вам демо-версию Terrasoft XRM версии 3.4.1.

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

Да, сборку получили, спасибо!
Там есть запароленные архивы. не подскажете пароль?

Андрей,

направили линк повторно и указали пароль.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!
Не могу сообразить каким образом осуществляется вызов проверки на дублирование контрагента при сохранении записи.
Мне нужно сделать проверку при изменении поля, например пользователь ввел ИНН, нужно сразу сделать проверку.
Подскажите, пожалуйста, где можно посмотреть?

У меня такой же вопрос

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

Какая у Вас версия, 3.3.2 или 3.4?

TS XRM Distribution 3.4.1

"Молчанов Дмитрий Павлович" написал:Не могу сообразить каким образом осуществляется вызов проверки на дублирование контрагента при сохранении записи.

При событии Post на Dateset-е, для которого настроен поиск дублей, на уровне ядра срабатывает поиск, и результаты передаются в функцию BaseDuplicatesFound в скрипте scr_BaseDuplicatesFoundHandler. В этом скрипте организовано открытие окна «Найдены дублирующиеся записи» с нужными данными.

Непосредственно поиск осуществляется хранимкой вроде tsp_AccountDS (для каждого раздела она генерируется автоматически при настройке правила поиска), хранимка вызывается на уровне ядра.

Дмитрий, чем не подходит настройка проверки на дублирование базовыми средствами?
Вы можете перейти в Файл - Настройки - Правила поиска дублей и создать правило, при котором поиск будет осуществляться в момент сохранения записи (можно задать настройку активации поиска в момент изменения значения в определенном поле):
/system/files/duplicate.png

Требуется реализовать проверку на дубли не при сохранении записи, а при заполнении определенных полей (Наименование, ИНН, Телефон).

Мне кажется, это будет не очень удачный вариант: при вводе каждой буквы проверять тысячи записей. На заполненной базе существующая проверка дублей при сохранении «задумывается» на несколько секунд.

Или там будет отдельная кнопка «проверить на дубли»?

Ну можно сделать не на DataChange, а на OnExit у контрола. На текущий момент отрабатывает в течении секунды примерно.

Дмитрий, тогда в нужный момент выполняйте вызов хранимой процедуры tsp_AccountDS, затем анализируйте результат.

Немного ввёл в заблуждение, при сохранении вызывается хранимая функция fn_AccountLDS, она и вернёт список записей, которые могут быть дублями.

А tsp_AccountDS — при ручном поиске дублей из меню.

Можно настроить правило, как показала на рисунке Наталия, поставить breakpoint в скрипте scr_BaseDuplicatesFoundHandler и посмотреть, какие данные туда передаются при сохранении записи, у которой есть дубли.

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

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

Большое спасибо. Попробую сделать.

Добрый день!

в руководстве администратора http://www.training.terrasoft.ru/system/files/TS_AG_3.4.0.pdf
параграф 4.4. Настройка правил поиска дублей с.152
написано что для версий Террасофт 3.Х доступно окно настроек для правил поисков дублей [Правила поиска дублей]
у нас версия 3.4.1 но данной настройки у нас нет.

подскажите пожалуйста в чем может быть проблема?

Андрей,

данный вопрос рассматривается в теме:

Дубли записей

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте! Мне нужно на время выполнения моего скрипта отменить проверку на дубли, которая происходит во время инсерта очередной записи (проверку я делаю сам при импорте данных с excel). Возможно ли отключить эту проверку?

У меня такой же вопрос

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

нашел аттрибут Connector.Attributes('IsDuplicatesCheckDisabled'), который отвечает за включение/выключение поиска дублей. Тема закрыта)

Добрый день, Антон.
Также в версии 3.4.0 имеется возможность воспользоваться визуальными инструментами для настройки правила поиска дублей: Файл::Настройки::Правила поиска дублей.

duplicatescheck.png

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

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

Причина тому - разные наборы колонок в сервисе таблицы и полей в реальной таблице в БД. Такие поля могли возникнуть при удалении ошибочно созданных колонок в сервисе tbl_... или же созданы при помощи СУБД для нужд какой-то интеграции или работы хранимой процедуры. Обычно такие невидимые поля никак не проявляются и никому не мешают, но попытка объединения дублей на такой таблице порождает ошибку "wrong number or types of arguments in call to".

Чтобы всё заработало, пришлось создать такие поля в сервисе таблицы. Во избежание конфликтов, изначальные поля с данными были переименованы, а после сохранения сервиса переименованы обратно:

ALTER TABLE "tbl_Account"
RENAME COLUMN "SecretField" TO "SecretField1";

--сохраняем в TSAdmin сервис таблицы с новой колонкой SecretField

ALTER TABLE "tbl_Account" DROP COLUMN "SecretField";

ALTER TABLE "tbl_Account"
RENAME COLUMN "SecretField1" TO "SecretField";

Такой подход можно использовать и при разворачивании пакета исправлений, включающего сервисы и SQL-запросы.

Если же скрытые поля явно не нужны, их можно просто удалить одной лишь командой:

ALTER TABLE "tbl_Account" DROP COLUMN "SecretField";

После исправления таблицы стоит заново сгенерировать для неё настройки поиска дублей.

Но лучше всего сразу создавать новые поля в таблицах Terrasoft только посредством TSAdmin или TSClient, а не средствами СУБД.

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Настраивая механизм поиска дублей в проекте на Terrasoft 3.X, работающем на базе Oracle, для таблицы контактов получал ошибку при попытке объединить дубли. При автоматической генерации хранимых процедур для объединения дублей возникло несоответствие порядка двух полей в таблице, что и привело к проблемам. В сгенерированной серверной логике они были в одном порядке, а на стороне клиентского приложения они перебирались в другом. Поля назывались, для примера, Com1 и Communication.

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

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

 SELECT   column_name,
                 data_type,
                 data_precision,
                 data_scale,
                 char_length,
                 char_used
          FROM   all_tab_columns
         WHERE   table_name = 'tbl_Contact'
                 AND owner = SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA')
      ORDER BY   column_name;

На первый взгляд безобидная строка

ORDER BY column_name

сортирует различно в зависимости от локали на компьютере, откуда запускаем TSClient или Toad!

На моём ПК, если посмотреть:

 SELECT * FROM nls_session_parameters;

Получим:

Цитата:
NLS_LANGUAGE RUSSIAN
NLS_TERRITORY RUSSIA
NLS_CURRENCY р.
NLS_ISO_CURRENCY RUSSIA
NLS_NUMERIC_CHARACTERS ,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD.MM.RR
NLS_DATE_LANGUAGE RUSSIAN
NLS_SORT RUSSIAN
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT DD.MM.RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT DD.MM.RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY р.
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE

Вот из-за чего проблема! Надо использовать вместо RUSSIAN режим сортировки BINARY, где цифры расположены впереди латинских букв. А в RUSSIAN – позади. И в хранимке для объединения дублей передаются поля таблицы не в том порядке, что в ядре программы-клиента. Использование функции NLSSORT принудительно сортирует нужным образом.

Проблемная строка была заменена на:

      ORDER BY  NLSSORT(column_name, 'NLS_SORT=BINARY');

Модификации подверглись tsp_GenerateSearchSP, tsp_GenerateLiveSearchSP, tsp_GenerateDuplicateSearch, и tsp_GenerateDuplicateMerge. В новых версиях Terrasoft 3.X изменение внесено, остальным рекомендую исправить самостоятельно.

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать