18.03.2008, 15:14 | #1 |
Участник
|
BP: Object has changed ID since previous release
Собственно, возможно ли избавиться от этого ошибки бест практиса?
История. Объект был создан на слое usr, затем удален с этого слоя и импортирован в cus. P.S. Ax4.0SP2 Последний раз редактировалось petr; 18.03.2008 в 15:14. Причина: P.S. |
|
18.03.2008, 15:34 | #2 |
Участник
|
Не знаю, как починить.
Но можно добавить его в исключения. Macros\\SysBPCheckIgnore |
|
18.03.2008, 16:15 | #3 |
Участник
|
Про исключения я знаю, просто хотелось бы получать это сообщение, пока не решил, что все в порядке (с классом, таблицей, полем), и для него можно сообщение игнорировать. Думаю, если покопаться в классах бест практиса можно найти, где система запоминает старый идентификатор. Просто думал, кто-нибудь уже подобным занимался и смогу уже готовое решение получить.
Но все равно спасибо за участие... |
|
19.03.2008, 20:31 | #4 |
Участник
|
Вообщем посмотрел я немного как это работает.
1. Источник ошибки. БП проверяет для каджого элемента с id (SysTreeNode::hasID) наличие записей с таким же id или name в таблице UtilIdElementsOld. Если там есть запись с таким же id, но другим именем, выдается ошибка что элемент переименован по сравнению с предыдущим релизом, если же находится элемент с тем же именем, но с другим id, то ошибка, что элемент изменил свой id. 2. Насколько я понимаю (не проверял) таблица UtilIdElementsOld заполняется по приложению, расположенному в каталоге old проложения. Так что, например, если держать этот каталог пустым, то таких ошибок не будет в принципе. 3. Так как я это каталог использую для возможность срванения с кодом предыдущего релиза, причем в слое usr производится текущая разработка, в слой cus обновляется при релизе, то чтобы избежать такой ошибки необходимо: а. Не переименовывать объекты на слое выше текущего слоя разработки (например на cus слое) или переименовывать их в DEL_<исходное имя> (Что в принципе логично). б. Не держать в папке old слой разработки (usr) Тогда получится такая ситуация: пока разработка ведется в usr изменение id не проверяется, т.к. в old нет этого слоя и не с чем сравнивать. Когда же разработка перенслась в cus, то в этом слое уже не происходит удалений (поэтому новая таблица не может встать не id старой (удаленной)) и объекты не переименовываются. Если какое-либо из этих условий не выполняется - выводится ошибка БП, что вообщем совершенно логично и будет предупреждением разработчику, что при синхронизации данный объектов с БД, могут быть проблемы. |
|
|
За это сообщение автора поблагодарили: vladz (1). |
Теги |
ax4.0 |
|
|