Здравствуйте. Я перенёс базу с одного сервера на другой. Заменил некоторым пользователям логины с доменных на обычные таким образом, как мне советовали в службе поддержки.
Всё заработало. Но одна проблемы отобразилась. Когда пользователь пытается стереть свой же аккаунт получает ошибку.
[12/10/12 15/51/51.078] (I) Error deleting record. Original error message: The statement has been terminated.
The DELETE statement conflicted with the REFERENCE constraint "FContactAccountID". The conflict occurred in database "Terrasoft", table "dbo.tbl_Contact", column 'AccountID'
[12/10/12 15/51/52.531] (E) Error executing script method 'mds_RecordsForDeleteOnDatasetAfterOpen'. Error deleting record. Original error message: The statement has been terminated.
The DELETE statement conflicted with the REFERENCE constraint "FContactAccountID". The conflict occurred in database "Terrasoft", table "dbo.tbl_Contact", column 'AccountID' «Call Stack»
Что интересно на старой базе этот аккаунт удалился без проблем. То есть проблемы явно из-за переноса. Делал всё в точности так: https://community.terrasoft.ru/blogs/6018
Может быть надо перераздать каким то образом права или что делать в такой ситуации?
Спасибо
Нравится
Александр, уточните, пожалуйста, вы пытаетесь удалить пользователя, под которым в данный момент работаете в системе?
Да.
Но вы знаете, я уже исправил. Просто отключил права, вышел из системы, снова вошёл в систему, назначил права и всё стёрлось-заработало....
Спасибо.
Сергей, знаете, проблема повторилась на другом аккаунте. Теперь точно такая же ошибка на другом аккаунте воспроизводится. Я не стирал самого себя, я стирал аккаунт, которым владею я и у меня на него полные права.
В какую сторону копать?
Заранее спасибо...
Зайдите в TS Admin и внесите изменения в сервисе ds_UserScript а именно в function ds_UserOnDatasetBeforeDelete.
function ds_UserOnDatasetBeforeDelete(Dataset, DoDelete) { if (Connector.CurrentUser.ContactID == GetDatasetFieldValue(Dataset, 'UserContactID')) { System.MessageDialog("Вы не можете удалить себя из системы", mdtWarning, mdbOK, 0); DoDelete.Value = false; return; } UserScript.UserName = GetDatasetFieldValue(Dataset, 'Name'); UserScript.IsInDatabase = GetDatasetFieldValue(Dataset, 'IsInDatabase'); UserScript.IsDomainUnit = !!GetDatasetFieldValue(Dataset, 'IsDomainUnit'); }