Здравствуйте!
Хочу добавить новое поле в карточку контрагента. При попытке сохранить tbl_account выдает ошибку unsuccessful metadata update
Column Name from table tbl_Account is referenced in tsp_GetCurrentUserInfo
This operation is not defined for system tables.
Error Code: 31
ALTER TABLE "tbl_Account" ALTER "Name" TYPE VARCHAR(250) CHARACTER SET UNICODE_FSS

Причем ошибка появляется даже если изменений не было сделано. Раньше все было нормально, поля добавлялись. Используем Terrasoft Sales 3.2, Firebird. Возможно дело в репликации которая не так давно проводилась.
Помогите пожалуйста.

Нравится

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

Terrasoft Sales 3.2.0.16

Добрый день
похоже у Вас просто есть зависимость от поля Name
попробуйте удалить tsp_GetCurrentUserInfo
провести нужные изменения в таблице
и создать заново tsp_GetCurrentUserInfo
для этого сначала в IBExpert сгенерируйте скрипт создания tsp_GetCurrentUserInfo потом в TSAdmin сохраните таблицу
и в IBExpert выполните скрипт для создания tsp_GetCurrentUserInfo

Добрый день.
Попробовал. После удаления tsp_GetCurrentUserInfo тоже не сохраняет, пишет:
unsuccessful metadata update
Column Name from table tbl_Account is referenced in tsp_GetLoginInfo
This operation is not defined for system tables.
Error Code: 31
ALTER TABLE "tbl_Account" ALTER "Name" TYPE VARCHAR(250) CHARACTER SET UNICODE_FSS

Удалил tsp_GetLoginInfo -
тоже самое но про CIAccountName

Как быть? Подскажите пожалуйста

если Вам нужно добавить поле в таблицу можно
создать поле в IBExpert а потом в TSAdmin добавить етоже поле
и сохранить сервис но на вопрос "сохранить в базе данных" ответить "нет"
в результате у Вас будет поле в базе и поле в конфигурации

Попробовал. В TSAdmin все получилось. Но при окрытии карточки контрагента в TSCRM выскакивает ошибка:
Ошибка выполнения метода 'wnd_AccountEditOnPrepare'. Ошибка открытия источника данных "ds_Account".
Оригинальное сообщение об ошибке: Dynamic SQL Error
SQL error code = -206
Column unknown
tbl_Account.REGMANID
At line 71, column 25
Column does not belong to referenced table
Error Code: 249

REGMANID - новое поле.

Возможно после добавления поля в таблицу в IBExspert Вы непотвердили изменения?

Да нет. Все потверждено. Все сохранилось.

если ошыбка под пользователем
то нужно добавить поле во вюху vw_Account

Ошибка под SYSDBA. vw_Account не находит ни IBManager, ни TSAdmin. может в этом проблема?

нет vw_Account есть только если в tbl_Account стоит галочка администрируеться по записям
Вы можете в IBManager выбрать данные из нового поля?

В tbl_Account галочка "администрируеться по записям" стоит. в IBManager в новом поле везде Null, но я могу вручную вносить значения, но это мне никак не поможет т.к. поле должно быть типа справочник.

к сожалению немогу указать причину ошыбки "на слух" :(
Вышлите пожалйста сервисы tbl_Account sq_Account ds_Account и описание проблемы на support@tscrm.com

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

Чем решился данный вопрос?
У меня похожая проблема при сохранении таблицы Продукт

unsuccessful metadata update
object vw_Offering is in use
This operation is not defined for system tables.
Error Code: 31
EXECUTE PROCEDURE "tsp.AdministratedByRecords" :TableName, :RightTableName, :TableViewName, :RightTableViewName, :Enabled, :IsLogTable

3.3.1.36 Firebird

"Березович Сергей" написал:попробуйте добавить нужное Вам поле через "Пользовательские поля"

жесть))
я бы предложил вернуть старый вариант сервиса из "коробочной" базы, потом рестарт firebird и попробовать создать вновь.
Кстати при работе с firebird очень полезная вещь - рестарт сервера firebird (службы, естественно), так как например изменения в индексировании таблиц (добавление/удаление индексов) не применятся пока оно не перезапустится))

Кстати, вопрос к топикстартеру)) Игорь, а если в других таблицах поле администратором создать, тоже ругается?

ООО "Лайнсервис"
www.ls-crm.ru

"Швец Александр Васильевич" написал:У меня похожая проблема при сохранении таблицы Продукт

unsuccessful metadata update
object vw_Offering is in use
This operation is not defined for system tables.
Error Code: 31
EXECUTE PROCEDURE "tsp.AdministratedByRecords" :TableName, :RightTableName, :TableViewName, :RightTableViewName, :Enabled, :IsLogTable


Александр, данное сообщение означает,что Вы не можете пересохранить таблицу, так как tbl_Offering (таблица продуктов) используется.
Это является особенностью СУБД Firebird, что пересохранение таблиц возможно при подключении только одного пользователя с правами системного администратора - SYSDBA. Для решения проблемы, попробуйте добавлять поля, когда никто из пользователей не подключен к БД, под пользователем SYSDBA.

Terrasoft Support Team

"support" написал:Александр, данное сообщение означает,что Вы не можете пересохранить таблицу, так как tbl_Offering (таблица продуктов) используется.
Это является особенностью СУБД Firebird, что пересохранение таблиц возможно при подключении только одного пользователя с правами системного администратора - SYSDBA. Для решения проблемы, попробуйте добавлять поля, когда никто из пользователей не подключен к БД, под пользователем SYSDBA.

Terrasoft Support Team


Спасибо за ответ, причина верна, но всё не так просто...
На сервере зависло 2е подключение при одновременном использовании админки и пользовательской платформы.
Перезагрузка ПК, и открытие только админчасти(1 SYSDBA, при том что с базой работаю только я) - не спасает.
Необходима была перезагрузка сервера firebird
"Александр Кудряшов" написал:Кстати при работе с firebird очень полезная вещь - рестарт сервера firebird (службы, естественно), так как например изменения в индексировании таблиц (добавление/удаление индексов) не применятся пока оно не перезапустится))

Ещё раз спасибо за ответы.

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