Несоответствие полей таблицы и сервиса при объединении дублей
При объединении записей-дублей в таблице с использованием механизма поиска дублей может возникнуть ошибка, связанная с несоответствием количества или типа параметров хранимой процедуры.
Причина тому - разные наборы колонок в сервисе таблицы и полей в реальной таблице в БД. Такие поля могли возникнуть при удалении ошибочно созданных колонок в сервисе tbl_... или же созданы при помощи СУБД для нужд какой-то интеграции или работы хранимой процедуры. Обычно такие невидимые поля никак не проявляются и никому не мешают, но попытка объединения дублей на такой таблице порождает ошибку "wrong number or types of arguments in call to".
Чтобы всё заработало, пришлось создать такие поля в сервисе таблицы. Во избежание конфликтов, изначальные поля с данными были переименованы, а после сохранения сервиса переименованы обратно:
RENAME COLUMN "SecretField" TO "SecretField1";
--сохраняем в TSAdmin сервис таблицы с новой колонкой SecretField
ALTER TABLE "tbl_Account" DROP COLUMN "SecretField";
ALTER TABLE "tbl_Account"
RENAME COLUMN "SecretField1" TO "SecretField";
Такой подход можно использовать и при разворачивании пакета исправлений, включающего сервисы и SQL-запросы.
Если же скрытые поля явно не нужны, их можно просто удалить одной лишь командой:
После исправления таблицы стоит заново сгенерировать для неё настройки поиска дублей.
Но лучше всего сразу создавать новые поля в таблицах Terrasoft только посредством TSAdmin или TSClient, а не средствами СУБД.