21.10.2009, 17:04 | #1 |
Участник
|
Как аксапта выделяет ID объектов?
Как аксапта выделяет ID объектов? Где они хранятся? У нас проблема с созданием новых классов - создаю класс и он создается уже с именем , которое было присвоено кем-то, кто создавал класс до меня. Переиндексация и рестарт AOS не помогают. Проблема где-то глубже.
|
|
21.10.2009, 17:16 | #2 |
Administrator
|
Ага, а создал эту проблему тот, кто опускал в нижележащий слой код "С сохранением ID объектов".
Т.е. у Вас теперь на cus-слое (к примеру) id-шники из диапазона usr-слоя. Вы пытаетесь на usr-слое создать объект и у Вас ничего не выходит. Вам нужно выгрузить весь cus (нижележащий) слой, весь usr-слой, после чего удалить слои (как файлы) и снова загрузить cus "Без сохранения ID" и загрузить usr "как есть". Первая же синхронизация конечно убьет все Ваши поля и таблицы со всего приложения, но... если грамотно подойти - то можно добиться и "неубиения" данных. А вот если где хранятся ID таблиц/классов в данных (или в релейшнах) - то они обязательно слетят - там придется все ручками перелопатить
__________________
Возможно сделать все. Вопрос времени |
|
21.10.2009, 17:22 | #3 |
Участник
|
Спасибо, но это не мой случай, тк я создала чистое приложение и положила в него наш var слой, но проблема осталась. База при этом та же.
Так все-таки где она хранит ID? В файлах приложения? |
|
21.10.2009, 17:32 | #4 |
Ищущий знания...
|
AOT \ System Documentation \ Tables \ UtilIdElements
не знаю уж корень вышей проблемы, но что то править там очень не советую.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
21.10.2009, 17:47 | #5 |
Участник
|
То есть в файле слоя AOD хранятся заниси таблицы UtilIdElements, которые принадлежат этому слою, так?
|
|
21.10.2009, 18:00 | #6 |
Ищущий знания...
|
Цитата:
UtilIdElements - это системная таблица, а вот где храниться не знаю. Что бы посмотреть эту таблицу в аксапте надо проследовать по тому пути что я написал. AOT (репазитарий, там где собсно вы классы создаете)\ System Documentation (есть такой пункт в репазитарии, 3-ий снизу) \ Tables \ UtilIdElements
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем Последний раз редактировалось lev; 21.10.2009 в 18:02. |
|
21.10.2009, 18:27 | #7 |
Участник
|
Спасибо. я знаю, где таблица лежит и про AOD я написала "в файле слоя AOD". Проблема в том, что аксапта преиодически не выделяет новых ID, поэтому , когда создаешь новый класс , она "создает" класс с готовым именем (именем того класса, что был создан дрйгим девелопером или даже мной самой). Какие есть возможные пути решения проблемы?
|
|
21.10.2009, 18:59 | #8 |
Боец
|
попробуйте
Меню: Tools\Development tools\Application objects\Refresh AOD |
|
21.10.2009, 19:02 | #9 |
Участник
|
делала.не помогло.
|
|
21.10.2009, 19:05 | #10 |
Участник
|
2 дня назад установлен был RU3, грешу на него. установила AOS с RU2 , отключила version control. вроде, заработало. Но как только сключаю version control, снова отваливается. я уже в отчаянии.
|
|
21.10.2009, 19:05 | #11 |
Участник
|
AOS c RU3 + отключенный version control, тож не работает.
|
|
21.10.2009, 19:48 | #12 |
Administrator
|
А в каком слое Вы создаете новый класс? В usr? Тогда это Ваш случай. Когда делали var-слой - в него опустили объектами из usr-слоя. И теперь Вы пытаетесь создать объект, с ID в usr-слое, который присутствует в var-слое
__________________
Возможно сделать все. Вопрос времени |
|
21.10.2009, 20:19 | #13 |
Участник
|
Можно написать джобик, который покажет конфликты с номерами, например, запросить по Вар слою номера старше, чем ему положено.
По описанию это именно та самая бага, что sukhanchik описал, тут он собаку съел, проверял |
|
22.10.2009, 09:42 | #14 |
Ищущий знания...
|
Извеняюсь, неправильно прочитал
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
22.10.2009, 10:04 | #15 |
Участник
|
Объект создаю на var. Ниже Var разработок нет. Usr пустой. На cus только еще есть объекты.Просмотрела ID-шники в UtilIdElements. Корректны. В моем случае у нового класса ID выделяется с номером 3xxxx, что нормально для Var. Но если создать 2 класса , то второму присвоится ID первого и сразу имя подставится первого класса тоже. То есть оба класса я создаю и на одном и том же( var слое) и новый создается с ID предыдущего.
Еще тут присоздании нового класса, AX почему-то думает. что он уже в Version Control. То есть при попытке сохранения абсолютно нового класса с абсолютно новым рандомным(для гарантии, что такого объекта еще не создавалось) именем(не всегда, как-то через раз выдет): "Unable to rename Class [classname]. The application object is checked out. Select Undo checkout to discard your changes or change the name back." Но при этом показывает класс как будто он сохранен. Короче, мозги у нее совсем поехали(( или уже у меня. Последний раз редактировалось kitty; 22.10.2009 в 10:17. |
|
22.10.2009, 10:19 | #16 |
Участник
|
Начнем с того, что вы не указали версию AX.
Цитата:
Цитата:
отключила version control. вроде, заработало
|
|
22.10.2009, 10:20 | #17 |
Administrator
|
Во.. уже более детальное описание последовательности действий.
Проверьте, пожалуйста следующее (по табл. UtilIdElements): 1. Есть ли объекты с кодом 3xxxx на слое cus 2. Есть ли объекты с кодом 4хххх на слое var. В общем-то интересно проверить гипотезу о наличии объекта с Id, следующим по порядку после уже созданного объекта. Т.е., к примеру - Вы создали класс с номером 30123. Но класс с номером 30124 уже есть в системе (его закачивали с сохранением ID). Система не может создать такой объект и "сбрасывается" на предыдущий номер. И вообще - проверьте наличие классов с ID 3хххх, большим чем Ваш новосозданный класс (неважно на каком слое) UPD: Хм.. а про VersionControl я не подумал. В любом случае - проверьте и мою гипотезу тоже.
__________________
Возможно сделать все. Вопрос времени |
|
22.10.2009, 11:24 | #18 |
Участник
|
Не зная какой у вас Вершин Контрол используется, я бы предложил пересоздать репозиторий. Подозреваю, у вас там хранятся объекты с "предыдущего" ВАР слоя, поэтому и ругается.
|
|
22.10.2009, 12:33 | #19 |
Banned
|
UtilElements - это не таблица, а табличное представление AOD-файлов. Там ID и хранятся. Менять их простым редактированием не получится.
Последний раз редактировалось EVGL; 22.10.2009 в 12:37. |
|
|
За это сообщение автора поблагодарили: lev (2). |
22.10.2009, 12:35 | #20 |
Banned
|
Цитата:
Сообщение от kitty
Спасибо. я знаю, где таблица лежит и про AOD я написала "в файле слоя AOD". Проблема в том, что аксапта преиодически не выделяет новых ID, поэтому , когда создаешь новый класс , она "создает" класс с готовым именем (именем того класса, что был создан дрйгим девелопером или даже мной самой). Какие есть возможные пути решения проблемы?
|
|
Теги |
ax3.0, ax4.0, нумерация, объект приложения, utilelements |
|
|