AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.04.2020, 16:37   #1  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
DAX2009: где в AX хранятся имена таблиц из SQL базы
Привет.
Если зайти в SQL и посмотреть наименования таблиц то AX всегда сокращает их наименование а в конце добавляет уникальный цифровой код..
Например таблица в AX:
DirPartyECommunicationRelationship
в SQL базе имеет название например такое:
DirPartyECommunicationRela2608

Вопрос, где в аксапте хранится данная ассоциация? И как эту ассоциацию скорректировать?

Столкнулся с такой проблемой что AX упорно ищет таблицу у которой другой цифровой код нежели у таблицы в SQL базе.
Т.е. например ищет MyTable50760 а в SQL базе MyTable50580
Причем я точно уверен что в SQL базе и должна быть таблица с именем MyTable50580.
Из за этого возникает ошибка синхронизации данной таблицы и восстановление из бекапа .xpo файла. Невозможно что либо сделать.
Старый 21.04.2020, 16:58   #2  
eugene egorov is offline
eugene egorov
Участник
Аватар для eugene egorov
 
273 / 97 (4) ++++
Регистрация: 05.06.2002
Адрес: Москва
Исследуйте \System Documentation\Tables\SqlDictionary
Там наше всё.
__________________
любитель портвейна и снов с прокисшей капустой в усах
За это сообщение автора поблагодарили: mazzy (5).
Старый 27.05.2020, 16:32   #3  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
А существует ли какой нибудь класс в AX для работы с таблицей SqlDictionary ?

Как производить вышеуказанные исправления?
Старый 27.05.2020, 17:03   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от oleggy Посмотреть сообщение
А существует ли какой нибудь класс в AX для работы с таблицей SqlDictionary ?
Есть очень ограниченный по функциональности класс SqlDataDictionary. Но он, боюсь, вам не поможет.
Скорее всего, вы создали таблицу с одним TableId, но экспортировав в другое окружение, TableId присвоился совершенно иной.
Не помню, как в 2009, но в АХ4 была галочка, "экспортировать объекты вместе с их id". Можно сохранить таблицу, удалить, накатить из бэкапа, а затем поверх - сохраненную. Без всяких SQL-премудростей.
__________________
// no comments
Старый 27.05.2020, 17:40   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от oleggy Посмотреть сообщение
Вопрос, где в аксапте хранится данная ассоциация? И как эту ассоциацию скорректировать?
SqlDictionary
поскольку длина имени в Аксапте и в разных СУБД может быть разной (в Аксапте 48 символов, в MS SQL 32), то разработчики аксапты придумали такую таблицу соответствий.

ни в коем случае не корректируйте. только читать.

Цитата:
Сообщение от eugene egorov Посмотреть сообщение
Исследуйте \System Documentation\Tables\SqlDictionary
Там наше всё.
точно.
из самой аксапты можно открыть браузер таблиц правой кнопки мыши.
из кода аксапты можно объясвить табличную переменную типа SqlDictionary.

Цитата:
Сообщение от oleggy Посмотреть сообщение
А существует ли какой нибудь класс в AX для работы с таблицей SqlDictionary ?
есть сама эта таблица. как с ней можно работать как с обычной таблицей, для которой есть доступ только на view и нет доступа на добавление/удаление записей.

Цитата:
Сообщение от oleggy Посмотреть сообщение
Как производить вышеуказанные исправления?
ни в коем случае не изменяйте значения в этой таблице. только читайте.

Цитата:
Сообщение от dech Посмотреть сообщение
Есть очень ограниченный по функциональности класс SqlDataDictionary. Но он, боюсь, вам не поможет.
да, это немного про другое.
__________________
полезное на axForum, github, vk, coub.
Старый 27.05.2020, 18:10   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Есть еще стандартный механизм DictTable. Насколько я понимаю, он обращается к той же таблице SqlDictionary, но где-то у себя внутри

X++:
    DictTable dictTable = new DictTable(tablenum(DirPartyECommunicationRelationship));
 

    info(dictTable.name(DbBackend::Sql));
Здесь основной фокус в параметре метода name(). Посмотри еще класс-наследник от DictTable, который называется SysDictTable. Возможно, в dax2009 там есть какие-нибудь соответствующие методы
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: mazzy (5).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxse: November 2018 Release – Dynamics AX2012 R3 update Blog bot DAX Blogs 0 15.11.2018 09:11
axsa: MDM Adapter - Extending Dynamics AX 2012 R3 Master Data Management Blog bot DAX Blogs 0 22.05.2014 03:28
emeadaxsupport: Capturing an AX User’s SQL SPID over multiple AOS servers in AX 2009 Blog bot DAX Blogs 0 16.05.2013 19:11
axinthefield: SQL Server Trace Flags for Dynamics AX Blog bot DAX Blogs 0 23.11.2010 21:11
Dynamics AX: SQL Sever 2008 - Performance with Dynamics AX 2009 - Resource Governor Blog bot DAX Blogs 0 23.01.2009 22:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:46.