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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.08.2011, 19:37   #21  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Ярослав Щекин Посмотреть сообщение
To Link: Вы не пробовали реализовать автоэкспорт отчета и вызов утилиты с параметром пути к файлу??
Готово. Сделана в 2009ой Аксапте.

Реализовано через SysContextMenu, так же есть кнопочка для Табакса.
Вложения
Тип файла: xpo SharedProject_DEV_ReportEditorExternal.xpo (59.8 Кб, 203 просмотров)
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
За это сообщение автора поблагодарили: S.Kuskov (4), Ярослав Щекин (1).
Старый 18.08.2011, 20:08   #22  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Выкладываю новую версию. Изменения:
. Исправлены значения по умолчанию для свойств SignDisplay, LabelLineBelow.
. Сделано игнорирование при сохранении отсутствующих в исходном файле значений "по умолчанию".

Последний раз редактировалось Ярослав Щекин; 01.09.2011 в 19:52.
За это сообщение автора поблагодарили: virhundo (1).
Старый 19.08.2011, 14:43   #23  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Спасибо. Но, когда я пытался адаптировать этот проект под свою Axapta 3.0, то выяснил, что отчёт экспортируется без меток (вызовом treeNodeExport). Вы не знаете, каким образом заставить Axapta экспортировать их?
Старый 19.08.2011, 15:07   #24  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Ярослав Щекин Посмотреть сообщение
Спасибо. Но, когда я пытался адаптировать этот проект под свою Axapta 3.0, то выяснил, что отчёт экспортируется без меток (вызовом treeNodeExport). Вы не знаете, каким образом заставить Axapta экспортировать их?
X++:
// >> DEV:mxk 18/08/11-16:09:19  DEV_ReportEditorExternal>>
/* System export flags
#define.noExport(0)                 // Do not export
#define.export(1)                   // Export
#define.expKeepIds(0x0100)          // Export with ID's
#define.expLables(0x0400)           // Export labels
#define.expProjectOnly(0x800)       // Export project only
#define.expLockOnExport(0x1000)     // Lock exported elements
#define.expDefaultValues(0x2000)    // Export default properties values
#define.expLayer(0x4000)            // Export current layer only*/
protected void export(  TreeNode _node      = reportNode,
                        FilePath _fileName  = xpoFile)
{
    int                     flag            = (#expKeepIds + #expLables + #expLockOnExport);
;
    if (_node)
    {
        _node.treeNodeExport(_fileName, flag);
    }
}
X++:
// >> DEV:mxk 18/08/11-16:09:19  DEV_ReportEditorExternal>>
/* System import flags
#define.impOk(0x0000)               // Element imported
#define.impError(0x0001)            // Element is not imported
#define.impReImport(0x0002)         // Reimport is needed
#define.impReImporting(0x0004)      // Reimporting
#define.impStopped(0x0008)          // Stop import
#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
#define.impRemoveExcess(0x0080)     // Delete subelements not found in tree
#define.impKeepIds(0x0100)          // Keep ID's after import
#define.impFormCopyPaste(0x0200)    // Using import to copy and paste form-controls
#define.impLabels(0x0400)           // Import labels
#define.impOverrideLocks(0x0800)    // Override locks
#define.impAddToProject(0x2000)     // Import into project
#define.impIgnoreCheckStatus(0x8000)// Import even if object is checked in*/
protected void import(  TreeNode _importNode    = reportNode,
                        FilePath _fileName      = xpoFile)
{
    SysImportElements       import;
    SysCompilerOutput       compiler;
    TmpAotImport            tmpAotImport;

    TreeNode                treeNodeImport;
    int                     importId;
    int                     elements;
    int                     flag            = (#impKeepIds + #impOverrideLocks + #impLabels + #impIgnoreCheckStatus + #impRemoveExcess);
    boolean                 importOk
;
    try
    {
        // Import file and compile it
        import = new SysImportElements();
        import.newFile(xpoFile);

        import.parmAddToProject(false);
        import.parmImportAot(true);
        import.parmImportWithIds(false);
        import.import(#impRemoveExcess | #impIgnoreCheckStatus);

        // retrieve the compilation log and use it to produce the external log
        tmpAotImport = import.getTmpImportAot();
        compiler = infolog.compilerOutput();

        info(strfmt("Report %1 successfully imported.", _importNode.treeNodeName()));
    }
    catch(Exception::Error)
    {
        error(strfmt("@SYS97044", xpoFile));
    }
}
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 19.08.2011, 15:09   #25  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
В AX2009 используемые константы объявлены в макросе AotExport
Старый 19.08.2011, 15:12   #26  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
В AX2009 используемые константы объявлены в макросе AotExport
В предыдущих версиях тоже. В коде это коменты, что бы было удобнее изменить под себя. Не думаю, что многие знают эти флаги наизусть
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 19.08.2011, 15:28   #27  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Нет, метки всё равно не экспортируются.
Старый 19.08.2011, 16:15   #28  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Ярослав Щекин Посмотреть сообщение
Нет, метки всё равно не экспортируются.
Проверил в 2009 - работает. Только нужно изменить код в \Classes\SysImportLabel\label2Xml для нужного языка иначе будет ошибка.

X++:
    setIterator = new SetIterator(_languageSet ? Set::create(_languageSet.pack()) : con2Set(['en-gb']));
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 19.08.2011, 16:27   #29  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
А в Axapta 3.0 --- не работает. Интересно, в ней это вообще возможно сделать?
Старый 19.08.2011, 16:36   #30  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Ярослав Щекин Посмотреть сообщение
А в Axapta 3.0 --- не работает. Интересно, в ней это вообще возможно сделать?
Как минимум можно сделать через стандартную форму экспорта, но это уже отдельная песня )
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 19.08.2011, 19:10   #31  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Жаль, то есть автоматизировать не получится. Выкладываю новую версию.

Изменения:
. Добавлена (в меню групп) возможность вертикального и горизонтального разбиения всех control-ов в группе.
. Немного откорректирована прорисовка сетки.
. Открыты для редактирования/поиска свойства LabelLineBelow, LabelLineThickness.

Последний раз редактировалось Ярослав Щекин; 01.09.2011 в 19:52.
Старый 19.08.2011, 19:29   #32  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Ярослав Щекин Посмотреть сообщение
Жаль, то есть автоматизировать не получится
Ну почему же можно, просто это будет немного не так красиво: добавить галочку в стандартную форму экспорта и вызывать редактор после того как стандартный экспорт отработает.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 24.08.2011, 12:35   #33  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Выкладываю новую версию.
Изменения:
. Исправлена ошибка при попытке открыть несуществующий отчёт.
. Исправлена ошибка в "Paste/import here".
. Добавлен cache для быстрого поиска control-ов по названию.
. Добавлены шаблоны (Templates) в дистрибутив.
. Оптимизирован PreCalcControl (расчёт размеров control'a).

Последний раз редактировалось Ярослав Щекин; 28.04.2012 в 08:11.
За это сообщение автора поблагодарили: mazzy (2).
Старый 24.08.2011, 15:17   #34  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Ярослав, а можно попросить здесь привести некое описание рекламного характера вашего редактора отчетов? С картинками, перечнем основных функций, и какие кнопки клавиатуры (мыши) нажимать, чтобы создать отчет. Что-то вроде из серии "для чайников".
Могу ли я с помощью вашего инструмента изменить уже существующий в Аксапте отчет, который был создан без вашего инструмента? А существующий отчет наподобие товарной накладной (с линиями) смогу отредактировать?
Устроят картинки и описание для Аксапты 3.0.
Спасибо!

PS: Люблю всякие фишки и примочки в Аксапте, которые запускаются одной-двумя кнопками типа ALT~ или правой кнопкой мыши. А вот Tabax так и не прижился у меня

Последний раз редактировалось Ace of Database; 24.08.2011 в 15:20.
Старый 24.08.2011, 16:04   #35  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Закачал вашу программу, загрузил в нее проект с отчетом из Аксапты 3.0
Редактор корректно заработал с отчетом (сначала загрузил отчет без GENERATED DESIGN, потом прочитал README-файл и понял что к чему)
Теперь хочу понять основное. Почему мне лучше пользоваться данной утилитой, а не встроенным в Аксапту редактором отчетов?

Может из-за этого:
1) данный редактор отчетов позволяет сдвигать один или несколько контролов мышкой и вставлять в освободившееся место новые контролы.

А еще можно продолжить этот список?
Старый 24.08.2011, 16:35   #36  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
PS: Люблю всякие фишки и примочки в Аксапте, которые запускаются одной-двумя кнопками типа ALT~ или правой кнопкой мыши. А вот Tabax так и не прижился у меня
Табакс удобен для управления окнами. Хотя я много из него перенес на горячие клавишы (HKFrameWork), теперь столько времени экономит. Табакс у меня тоже под себя хорошо кастомизирован.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 24.08.2011, 17:06   #37  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Могу ли я с помощью вашего инструмента изменить уже существующий в Аксапте отчет, который был создан без вашего инструмента?
Да, в этом-то и смысл программы.

Цитата:
Сообщение от Ace of Database Посмотреть сообщение
А существующий отчет наподобие товарной накладной (с линиями) смогу отредактировать?
Почему нет?

Что касается описания, прочитайте Readme и попробуйте все функции во всех контекстных меню, если что-то непонятно --- спрашивайте.
Старый 24.08.2011, 18:02   #38  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
А еще можно продолжить этот список?
2) Изменение любых свойств для всех control'ов группы, например установка Font=Bold или изменение толщины линий.
3) Экспорт/импорт групп control'ов, что позволяет создавать и использовать шаблоны.
4) С помощью "Mark lowest" можно быстро найти, почему секции на печати неплотно прилегают друг к другу (не всегда очевидно).
5) С помощью "Mark rightmost" можно найти, по какому control'у будет масштабироваться отчёт при "Fit to page".
6) "Show too wide texts" и "Highlight field/shape intersections" подсвечивают возможные ошибки в позиционировании control'ов.
7) Можно изменять тип существующих control'ов и секций, например, превратить DBLFIELD в STRFIELD.
8) "Scale controls" позволяет масштабировать группы control'ов.
9) "Align as table" --- автоматическое выравнивание таблиц.
10) "Link as table" --- автоматическое связывание control'ов в таблицы, что даёт возможность легко изменять размеры строк и столбцов.
За это сообщение автора поблагодарили: Ace of Database (2).
Старый 24.08.2011, 18:44   #39  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ярослав Щекин Посмотреть сообщение
2) Изменение любых свойств для всех control'ов группы, например установка Font=Bold или изменение толщины линий.
э-э-э... это можно сделать и в стандарте, если выделить несколько контролов и задать значение свойства.

остальное - да, круто.
__________________
полезное на axForum, github, vk, coub.
Старый 24.08.2011, 19:08   #40  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Цитата:
Сообщение от mazzy Посмотреть сообщение
э-э-э... это можно сделать и в стандарте, если выделить несколько контролов и задать значение свойства.
Тогда это можно заменить , например, на такое:

2) Слияние/разделение (групп) control-ов, что позволяет, например, быстро добавить столбец в таблицу: Link as table -> растянуть один столбец в ширину -> выделить в одну группу control'ы этого столбца -> split controls horizontally.
Теги
xpo, xpo editor, законченный пример, полезное, редактор

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Альтернативные конструкторы отчетов в Axapta Jox DAX: Программирование 22 25.04.2009 22:02
Просмотр отчетов Axapta через WEB OliaM DAX: Функционал 17 24.01.2005 23:46
Target - новый инструментарий формирования отчетов для Axapta?! OliaM DAX: Программирование 35 15.01.2005 11:09
Отчеты: стандартные средства Axapta или сторонние генераторы отчетов? ArturK DAX: Функционал 6 14.08.2003 13:54
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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