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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.01.2003, 14:53   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
? RecID при экспорте-импорте не восстанавливаются?
В теме Чем грозит использование RecId в качестве ПК?

была фраза о том, что "RecID при экспорте-импорте не восстанавливаются"
Объясните, пожалуйста, что вы имели в виду?

Насколько я знаю, экспорт/имопрт обрабатывает RecID при импорте. Например таблицы LedgerTableInterval, MarkupTrans импортируются корректно.

Да, у него бывают глюки когда таблица после экспорта была включена/исключена в коллекцию.
Да, у него бывают глюки, если в таблице есть больше одного поля с RecID. Например CustSettlement импортируется отвратительно.

Что нибудь еще?
Старый 22.01.2003, 15:05   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Только что экспортнул CustTabel и импортировал ее обратно. Делал это через группы определений.

Экспортировал с одним RecId, когда импортировал - оказались совсем другие.
Старый 22.01.2003, 15:38   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Да, записи то поменялись.

Ты экспортируй те таблицы, которые содержат RecID в качестве внешнего ключа (FK).
Например, LedgerTable и LedgerTableInterval.

После импорта RecID в обеих таблицах изменятся!
Но ссылки будут указывать на те же записи, что и до импорта.
RecID изменяются СОГЛАСОВАННО.

Не всегда правда
Старый 22.01.2003, 15:50   #4  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Насколько я знаю, ссылки наиболее корректно (на 99%) переносятся, если использовать специальный тип RefRecId для FK. Еще важно, чтобы экспорт связанных таблиц проводился в один прием, вместе. И при этом, естественно, primary table должна импортироваться раньше, чем ее child tables!
__________________
Андрей.
Старый 22.01.2003, 15:58   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Насчет RefRecID - не уверен. См. CustSettlement.
С порядком импорта сам импорт разбирается.
С полнотой данных согласен.

Есть ли еще какие пункты, кроме табличных коллекций и множественных RefRecID, при которых импорт может ошибиться?
Старый 22.01.2003, 16:18   #6  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Не нашел в табл. CustSettlement полей с RefRecId Между прочим, про этот тип мне как-то давно сказал один бывалый АХАРТА-программер, и с тех пор я в подобных случаях всегда использую его.
А по поводу порядка импорта - ни#$# он не разбрается Наступил уже на эти грабли при переходе с 2.1 на 2.5. Вроде бы с RefRecId все переносится ОК, из всей массы таблиц примерно десяток (из разработанных нами) содержит ссылки по RecId. А одна таблица (в которой, по закону подлости, приличный объем данных скопился ) ни в какую ссылки не поднимает, хоть ты тресни! В итоге оказалось, что каким-то там макаром эта дочерняя таблица заимела TableId меньше (т.е. раньше), чем родительская! И экспорт, выгружающий данные как раз в порядке id таблиц, переносил дочернюю таблицу раньше родительской, снося по дороге все ссылки.
__________________
Андрей.
Старый 22.01.2003, 16:22   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
О!
Так он их по TableID упорядочивает и импортирует именно в этом порядке?
Уверен?
Старый 22.01.2003, 16:25   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Ага. А OffsetRecID в таблице CustSettlement действительно имеет тип RecID.
Спасибо. Надо подумать.
И... разобрать таки подробно класс импорта/экспорта.
Старый 22.01.2003, 16:29   #9  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Подсмотрел в файле переноса данных
Сам процесс настройки группы импорта при настройке таблиц отображает их именно в порядке их id (что, по-моему, извращение и усложняет настройку), и в том же порядке они оказываются в файле экспорта.
__________________
Андрей.
Старый 22.01.2003, 16:46   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Это да.
Но вроде импорт сначала считывает что содержится в dat-файле и пытается что-то сделать с этими определениями.

Насколько я понял, здесь принимаются решения о согласованном изменении RecID. Здесь же, вроде, принимается решение о порядке импорта.

В свое время, я посмотрел на этот чудовищный код и не стал с ним разбираться. Похоже зря. Может знаешь, где эта байда описана?
Старый 22.01.2003, 16:47   #11  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Мы когда-то всерьез разбирались с процедурами импорта-экспорта. Выяснилось следующее:
При экспорте в файл экспорта записывается максимальный и минимальные recid в текущей компании. (Далее maxOldRecid,minOldRecId).
При импорте - в пространстве recid резервируется MaxOldRecId-minOldRecId штук идентификаторов записей (начиная с newMinRecId). Далее, для любого поля типа recId, или любого расширенного типа, унаследованного от типа recid, в поле записывается значение newMinRecId+oldRecId-minOldRecid. Таким образом ссылки - восстанавливаются. Нужно только чтобы все таблицы, связанные по recid импортировались/экспортировались одновременно. Для ссылок по tableid используется аналогичное правило. Axapta при импорте ведет таблицу соответствия tableid в старом приложении и tableid в новом приложении, и выполняет трансляцию для всех полей, имеющих тип tableid или любой унаследованный от него.

К сожалению - трансляция recid точно не работает при одновременном экспорте таблиц из реальных компаний и виртуальных. Насколько я понимаю - в экспортном файле записывается minOldRecId и maxOldRecId только для одной компании. (Возможно - текущей - тогда с виртуальными компаниями вообще дело плохо) Соответственно - корректно преобразовать одни старые recid в новые система вообще не может. Связано это с тем, что счетчики recid хранятся в разрезе компаний (в таблице systemsequences).

Как итог:
При работе с виртуальными компаниями - импорт-экспорт теряет ссылки по recid
Импортировать связаные по recid таблицы нужно одновременно.
Старый 22.01.2003, 16:52   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Спасибо
Старый 31.01.2003, 20:33   #13  
Pavel is offline
Pavel
SAP
SAP
 
2,760 / 239 (13) ++++++
Регистрация: 14.12.2001
Адрес: Moscow
Цитата:
Изначально опубликовано fed
в пространстве recid резервируется MaxOldRecId-minOldRecId штук идентификаторов записей (начиная с newMinRecId).
А такая вещь как шаг изменения RecId для последовательно создаваемых записей в диапазоне есть? Специфический для каждой конкретной таблицы?
Старый 04.02.2003, 11:02   #14  
SIRS is offline
SIRS
Участник
 
14 / 10 (1) +
Регистрация: 05.09.2002
Адрес: Москва
Таблица SystemSequences - системная, из АОТ-а недоступная.
Там хранится информация по полу доступных RecId.
Старый 04.02.2003, 14:07   #15  
Pavel is offline
Pavel
SAP
SAP
 
2,760 / 239 (13) ++++++
Регистрация: 14.12.2001
Адрес: Moscow
Цитата:
Изначально опубликовано SIRS
Таблица SystemSequences - системная, из АОТ-а недоступная.
Там хранится информация по полу доступных RecId.
Уже нашел ответ на свой вопрос. Через SQL можно открыть базу и любую таблицу и спомощью view просмотреть записи.
Принцип формирования RecId не изменился, значение шага - 48 (как и в XAL ).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
if (record) vs if (record.RecId) kashperuk DAX: Программирование 18 27.11.2008 18:53
поля, содержащие RecId somebody DAX: Программирование 15 16.05.2008 17:50
aEremenko: Дефрагментация RecID Blog bot DAX Blogs 2 06.03.2007 22:25
Проблемы при импорте и экспорте проекта FiGr DAX: Прочие вопросы 0 23.05.2006 16:41
Recid при импорте теряются?.. MironovI DAX: Администрирование 4 19.09.2005 14:27

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

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

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