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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.09.2006, 21:41   #1  
SolNik is offline
SolNik
Участник
 
58 / 36 (2) +++
Регистрация: 22.10.2003
? Программный импорт xpo
Кто-нибудь пытался выполнить пограммно импорт xpo-шника?
Есть какие-нибудь еще варианты, кроме использования класса SysImportElements и формы SysImportDialog?
В справке есть ссылка на метод xInfo::import, но самого метода я не нашел...
И если кроме SysImportElements других вариантов нет, то как при импорте заставить его не запрашивать подтверждение на импорт уже существующего объекта с таким именем? (игра с флагом в функции InfoLog.ImportElements и его значениями из AotExport ничего не дала).
Старый 05.09.2006, 06:06   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Нет аксы под рукой пишу, потому что в форуме это уже пробегало, поищите поиском. Там был еще как получить список проектов. А там есть метод export.

С Уважением,
Георгий
Старый 05.09.2006, 09:44   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Взято отсюда
X++:
// Import _node from WorkingCopy file
void import(TreeNode _node, FilePath fileName=this.pathFor(_node))
{
    SysImportElements import=new SysImportElements();
    boolean examinedFile=false;
    ;
    Assert::it(VCS_WorkingCopy::isDirectExportable(_node));
    if (!examinedFile)
    {
        import.newFile(fileName);
    }

    //import.bulidImportLabelLanguageSet(languageTree);

    import.parmAddToProject( false);
    //import.parmDeleteSubNodes(deleteSubNodes.allowEdit() && deleteSubNodes.value());
    import.parmDeleteSubNodes(true);
    //import.parmImportWithIds( importWithIds.allowEdit()  && importWithIds.value());
    import.parmImportWithIds(false);
    //import.parmOverrideLocks( overrideLocks.allowEdit()  && overrideLocks.value());
    import.parmOverrideLocks( false);

//    import.parmImportLabels((importActionRbtn.selection() == SysAotImportAction::Label ||
//                                        importActionRbtn.selection() == SysAotImportAction::ElementAndLabel));
    import.parmImportLabels(false);
    import.parmImportAot(true);
    //import.parmLabelModuleId(labelModuleId.text());

    import.import();
}
За это сообщение автора поблагодарили: SolNik (1).
Старый 05.09.2006, 09:46   #4  
SolNik is offline
SolNik
Участник
 
58 / 36 (2) +++
Регистрация: 22.10.2003
С экспортом то все просто - у TreeNode есть метод treeNodeExport, который делает то, что нужно. А вот с импортом сложнее - найти изолированный класс или метод не удалось. Есть только класс SysImportElements, логика которого тесно переплетена со связанным с ним диалогом SysImportDialog...На форуме тоже ничего путного найти не удалось...
Старый 05.09.2006, 10:13   #5  
SolNik is offline
SolNik
Участник
 
58 / 36 (2) +++
Регистрация: 22.10.2003
Спасибо belugin - это то, что нужно...правда остается вопрос: какие флаги нужно передавать методу infolog.importelements, чтобы не вызывался запрос на подтверждение перезаписи существующего объекта?
Старый 05.09.2006, 10:29   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
\Classes\SysImportElements\import:
X++:
 if (importAot)
        {
            flag = #impQueryOverwrite;
Скорее всего надо приделать новый параметр к SysImportElements и переделать
так
X++:
 if (importAot)
        {
            if(queryOverwrite)
               flag = #impQueryOverwrite;
Старый 05.09.2006, 10:48   #7  
SolNik is offline
SolNik
Участник
 
58 / 36 (2) +++
Регистрация: 22.10.2003
Да я этот флаг нарыл, но его НЕустановка на моем SP1 на появление диалога никак не влияет ...
За это сообщение автора поблагодарили: kashperuk (2).
Старый 05.09.2006, 10:52   #8  
SolNik is offline
SolNik
Участник
 
58 / 36 (2) +++
Регистрация: 22.10.2003
...и на SP4 кстати тоже.
Старый 05.09.2006, 11:14   #9  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,309 / 3546 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от SolNik
В справке есть ссылка на метод xInfo::import, но самого метода я не нашел...
Метод не статический и называется importElement, который действительно сидит на xInfo. На него даже есть мини-дока в \System Documentation\. Этот метод (согласно этой мини-доке) должен использоваться совместно с \System Documentation\xInfo\startImport и \System Documentation\xInfo\endImport.
По сути - класс SysImportElements есть механизм использования этих трех методов. Поэтому на мой взгляд не имеет смысл ковыряться с методами. Лучше пользоваться классом SysImportElements (или на базе него сделать свой / отнаследовать свой и т.д.).
Код, который привел belugin базируется как раз на SysImportElements
__________________
Возможно сделать все. Вопрос времени
Старый 15.09.2006, 13:16   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Angry
flag = #impQueryOverwrite;

Кто-нибудь флажок этот поборол?

В макросе AOTExport есть вот эти три строки:
Код:
#define.impNeverOverwrite(0x0010)   // Do not overwrite elements
#define.impQueryOverwrite(0x0020)   // Display a dialog asking if you want to override or not
#define.impGetCompareNode(0x0040)   // Import into node not in tree
Причем, что в если ставишь первый или второй (16 или 32 соответственно), то диалог вылазит все равно (хотя вроде в первом случае не должен бы был)
Если же поставить последний флаг (64), то диалога нет - но при этом же ничего не импортируется (этот флаг используется при построении дерева при сравнении объекта из файла и из приложения).

Как быть?
Старый 29.09.2006, 12:17   #11  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от SolNik Посмотреть сообщение
...как при импорте заставить его не запрашивать подтверждение на импорт уже существующего объекта с таким именем? (игра с флагом в функции InfoLog.ImportElements и его значениями из AotExport ничего не дала).
Цитата:
Сообщение от kashperuk Посмотреть сообщение
flag = #impQueryOverwrite;

Кто-нибудь флажок этот поборол?
Использование или неиспользование флага #impQueryOverwrite в xinfo.startImport() у меня тоже ничего не меняет.

Для того чтобы не выдавался запрос на подтверждение, можно в метод xinfo.importElement(int _id, int _utilfiletype, UtilElementType _utiltype, str _name, int _fileposition, int _Flag) подставить _Flag = #impReImporting (использовать с осторожностью! ).

Применительно к классу SysImportElements - можно, например, в методе import() вместо
Код:
importOk = this.importElements(exportId, #impOk);
(строка 48) использовать что-то типа
Код:
importOk = this.importElements(exportId, #impOk | #impReImporting);
естественно не всегда, а по некоторому условию (кстати в строке 52 этот флаг используется для повторного импорта).

Последний раз редактировалось vallys; 29.09.2006 в 12:20.
За это сообщение автора поблагодарили: Logger (1).
Старый 02.10.2006, 13:03   #12  
Antant is offline
Antant
Участник
 
82 / 17 (1) ++
Регистрация: 03.12.2005
Решение, конечно, ерундовое, но оно единственное, когда у меня все правильно заработало:
класс Box, метод yesAllNoAllCancel, в начале метода вставить код:

if (_title == 'Import')
return DialogButton::YesToAll;
__________________
И почему никто меня не любит?
Да, я надоедливый
Старый 02.10.2006, 13:06   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от vallys Посмотреть сообщение
Для того чтобы не выдавался запрос на подтверждение, можно в метод xinfo.importElement(int _id, int _utilfiletype, UtilElementType _utiltype, str _name, int _fileposition, int _Flag) подставить _Flag = #impReImporting (использовать с осторожностью! ).
А почему использовать с осторожностью?
Чем это чревато?
На что наткнулись при использовании?
Старый 02.10.2006, 14:53   #14  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от kashperuk Посмотреть сообщение
А почему использовать с осторожностью?
Чем это чревато?
На что наткнулись при использовании?
Собственно, теперь нельзя этот флаг использовать... НЕ работает.
Приношу свои извинения.

Последний раз редактировалось vallys; 02.10.2006 в 15:22.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Стандартный импорт данных. Обновление sparur DAX: Функционал 0 24.03.2008 19:07
axaptabuilder: How to build Axapta application from XPO files stored in Visual Source Safe. Blog bot DAX Blogs 0 12.04.2007 16:10
Ещё книга про Ax на английском - Inside Microsoft Dynamics AX 4.0 StasD DAX: База знаний и проекты 36 22.03.2007 12:51
axaptabuilder: How to build Axapta application from XPO files stored in Visual Source Safe. Blog bot DAX Blogs 0 22.11.2006 15:20
mfp: Building a layer file from XPO files Blog bot DAX Blogs 0 13.11.2006 22:30

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

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

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