21.04.2020, 16:37 | #1 |
Участник
|
DAX2009: где в AX хранятся имена таблиц из SQL базы
Привет.
Если зайти в SQL и посмотреть наименования таблиц то AX всегда сокращает их наименование а в конце добавляет уникальный цифровой код.. Например таблица в AX: DirPartyECommunicationRelationship в SQL базе имеет название например такое: DirPartyECommunicationRela2608 Вопрос, где в аксапте хранится данная ассоциация? И как эту ассоциацию скорректировать? Столкнулся с такой проблемой что AX упорно ищет таблицу у которой другой цифровой код нежели у таблицы в SQL базе. Т.е. например ищет MyTable50760 а в SQL базе MyTable50580 Причем я точно уверен что в SQL базе и должна быть таблица с именем MyTable50580. Из за этого возникает ошибка синхронизации данной таблицы и восстановление из бекапа .xpo файла. Невозможно что либо сделать. |
|
21.04.2020, 16:58 | #2 |
Участник
|
Исследуйте \System Documentation\Tables\SqlDictionary
Там наше всё.
__________________
любитель портвейна и снов с прокисшей капустой в усах |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
27.05.2020, 16:32 | #3 |
Участник
|
А существует ли какой нибудь класс в AX для работы с таблицей SqlDictionary ?
Как производить вышеуказанные исправления? |
|
27.05.2020, 17:03 | #4 |
Участник
|
Цитата:
Скорее всего, вы создали таблицу с одним TableId, но экспортировав в другое окружение, TableId присвоился совершенно иной. Не помню, как в 2009, но в АХ4 была галочка, "экспортировать объекты вместе с их id". Можно сохранить таблицу, удалить, накатить из бэкапа, а затем поверх - сохраненную. Без всяких SQL-премудростей.
__________________
// no comments |
|
27.05.2020, 17:40 | #5 |
Участник
|
Цитата:
поскольку длина имени в Аксапте и в разных СУБД может быть разной (в Аксапте 48 символов, в MS SQL 32), то разработчики аксапты придумали такую таблицу соответствий. ни в коем случае не корректируйте. только читать. Цитата:
из самой аксапты можно открыть браузер таблиц правой кнопки мыши. из кода аксапты можно объясвить табличную переменную типа SqlDictionary. Цитата:
ни в коем случае не изменяйте значения в этой таблице. только читайте. да, это немного про другое. |
|
27.05.2020, 18:10 | #6 |
Участник
|
Есть еще стандартный механизм DictTable. Насколько я понимаю, он обращается к той же таблице SqlDictionary, но где-то у себя внутри
X++: DictTable dictTable = new DictTable(tablenum(DirPartyECommunicationRelationship)); info(dictTable.name(DbBackend::Sql));
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
|
|