Проблема со стиранием аккаунта

Здравствуйте. Я перенёс базу с одного сервера на другой. Заменил некоторым пользователям логины с доменных на обычные таким образом, как мне советовали в службе поддержки.
Всё заработало. Но одна проблемы отобразилась. Когда пользователь пытается стереть свой же аккаунт получает ошибку.
[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

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

Спасибо

Нравится

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

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

Да.
Но вы знаете, я уже исправил. Просто отключил права, вышел из системы, снова вошёл в систему, назначил права и всё стёрлось-заработало....
Спасибо.

Сергей, знаете, проблема повторилась на другом аккаунте. Теперь точно такая же ошибка на другом аккаунте воспроизводится. Я не стирал самого себя, я стирал аккаунт, которым владею я и у меня на него полные права.
В какую сторону копать?
Заранее спасибо...

Зайдите в 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');
}
Показать все комментарии