![]() |
#11 |
Moderator
|
Мы когда-то всерьез разбирались с процедурами импорта-экспорта. Выяснилось следующее:
При экспорте в файл экспорта записывается максимальный и минимальные 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 таблицы нужно одновременно. |
|
|
![]() |
||||
Тема | Ответов | |||
if (record) vs if (record.RecId) | 18 | |||
поля, содержащие RecId | 15 | |||
aEremenko: Дефрагментация RecID | 2 | |||
Проблемы при импорте и экспорте проекта | 0 | |||
Recid при импорте теряются?.. | 4 |
|