Здравствуйте!
У нас иногда возникает ошибка сохранения записи в разделке контактов: "Ошибка сохранения записи. Конфликт инструкции INSERT с ограничение FOREIGNKEY FDatabaseLogCreatedByID. Таблица tbl_Contact, column 'ID'. Чтобы избавиться от ошибки пришлось удалить эту связь. Ошибка ушла, но воссоздать эту связь невозможно - происходит та же ошибка.
Нравится
Владимир, а можно указать версию Террасофта?
Судя по ошибке полю CreatedByID подсовывается ID несуществующего контакта.
А удаляли связь в таблице tbl_DatabaseLog? (вопрос потому что FDatabaseLogCreatedByID указывает на эту таблицу, а сейчас смотрю в 3.4.0 CRM, то в этой таблице у меня нет такой связи, и нужна ли она вообще?)
Здравствуйте Александр!
Версия 3.2.1.62. Судя по ошибке, да. Только как может получиться ID несуществующего контакта?
Владимир, а просматривали конфигурацию? Может, захардкодили чей-то идентификатор?
А что записывается после удаления связи?
Здравствуйте Максим! Ошибка периодическая. После удаления связи проблемная запись дважды претерпевала изменения: Первый раз под Supervisor (до удаления связи это вызывало ошибку), второй раз под пользователем технического центра. ID супервизора занесся правильно, вместо ID контакта второго пользователя - чужой ID, природу его определить не могу, по крайней мере не из tbl_AdminUnit. За время праздников у других пользователей ничего подобного не было.
Какую конфигурацию рекомендуете посмотреть? Запись в tbl_DatabaseLiog происходит без моего участия.
Есть подозрение, что изменилась структура объекта контакта уже после создания таблицы логирования и происходит смещение параметров в инсерте, из-за чего происходит конфликт внешнего ключа. Я бы перенастроил логирование, чтобы таблица _Log создалась заново.
Как это перенастроить? Структура контактов не менялась довольно давно, но однажды такое случилось и с другой таблицей. Если бы было смещение параметров, работать было бы невозможно.
Здравствуйте, Владимир!
В принципе, такого ключа нет в "коробочной" базе, поэтому можете его удалить и проблема решится.