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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.12.2019, 10:32   #1  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Краудфандинговый проект Егер/Jaeger
Ранее в соответствующем топике озвучивал проблемы с которыми столкнулся в ER:
- неудобный общий интерфейс.
- неудобный интерфейс разработки.
- архитектурные проблемы ER-framework (наследование например).


По причинам озвученным ранее + небольшого совещания с теми, кто общается с MS, стало ясно, что проще сделать своими руками, так, как это будет результативнее (была высказана мысль что какие-то китайцы пошли этим путем без подробностей).


Так как моих компетенций недостаточно, то проект соответственно будет краудфандинговым. Результаты будут на github

Конечная ближайшая цель:
- получить удобную среду разработки.
- получить удобный и быстрый интерфейс настроек.
- решить проблему наследования.
- получить удобный framework для дальнейших работ

Полученное видится как Community версия (т.е. без официального бесплатного коммерческого использования) для того чтобы какие-то конторы могли потом при наличии результатов способствовать наличию хакатонов и пива по теме.

Последний раз редактировалось axm2017; 05.12.2019 в 10:38.
Старый 05.12.2019, 10:35   #2  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Проблема 1.

- неудобный интерфейс разработки.

Так как ранее не занимался подобным то был бы рад если кто посоветует как можно реализовать подобное в ax 365.

Хочется окно разработки с возможностью выбора из словаря и выделением терминов из словаря цветом.

Буду рад, если кто чего посоветует.

Последний раз редактировалось axm2017; 05.12.2019 в 10:38.
Старый 05.12.2019, 10:46   #3  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
https://microsoft.github.io/monaco-editor/

Есть люди (Marcus Farkas, которого тут некоторые могут знать), которые встроили это в D365.
Старый 05.12.2019, 11:04   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от EVGL Посмотреть сообщение
https://microsoft.github.io/monaco-editor/

Есть люди (Marcus Farkas, которого тут некоторые могут знать), которые встроили это в D365.
Еще в качестве примера можно набрать слово monaco в поиске по AOT и увидеть неую функциональность под фичафлагами. Начиная с 10.0.2
За это сообщение автора поблагодарили: axm2017 (3).
Старый 05.12.2019, 11:11   #5  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Спасибо за советы. Посмотрю в этом направлении.

Проблема 3
- архитектурные проблемы ER-framework (наследование например).

Проблема наследования.

Сейчас как понял из краткого общения (то есть в тему не погружен) наследование реализовано через разности. То есть наследуемый формат не содержит всех компонентов родительского, а содержит лишь разницу с родительскими.

Предлагается в момент создания делать таки полную копию родительской и реализовать процесс синхронизации в случае необходимости по не измененным компонентам.
Это позволит при необходимости обойтись работой только с наследуемым форматом и облегчит тестирование и жизнь в дальнейшем.
Если кто то из тех кто в теме видит подводные камни велкам с советами.
Старый 05.12.2019, 11:11   #6  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Я уточню по терминологии: Краудфандинговый или краудсорсинговый ? Первое предполагает что я плачу какие-то деньги сильно заранее, а потом получаю готовый продукт задешево. Второе предполагает что я (хотя ok - лично я вряд ли буду этим заниматься) жертвую какие-то куски собственного кода, который потом используется в конечном продукте (вероятно бесплатном или полубесплатном).
Старый 05.12.2019, 11:17   #7  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от fed Посмотреть сообщение
Я уточню по терминологии: Краудфандинговый или краудсорсинговый ? Первое предполагает что я плачу какие-то деньги сильно заранее, а потом получаю готовый продукт задешево. Второе предполагает что я (хотя ok - лично я вряд ли буду этим заниматься) жертвую какие-то куски собственного кода, который потом используется в конечном продукте (вероятно бесплатном или полубесплатном).
Исходил из сказанного на Вики

Краудфа́ндинг (народное финансирование, от англ. сrowd funding, сrowd — «толпа», funding — «финансирование») — коллективное сотрудничество людей (доноров), которые добровольно объединяют свои деньги или другие ресурсы вместе, как правило, через Интернет, чтобы поддержать усилия других людей или организаций (реципиентов).

Давать деньги без наличия продукта - зло. А вот советам или коду буду рад.
Тем более живу в мире Dynamics где код открыт +- и его использование по сути отдано на откуп доброй воли коллег.
Старый 05.12.2019, 16:59   #8  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
В помощь тем кто хочет повторить/поэкспериментировать
Скачать можно тут
https://microsoft.github.io/monaco-editor/

И разместить тут
AOSService\webroot\Resources

С названием monaco-editor
что следует из соответствующего скрипта в ресурсах (ERMonacoEditorControl)
X++:
<!-- Shall not have script code inside HTML, otherwise it will cause binding error -->
<!-- At runtime, script is moved to the head, and only executed once regardless of the number of controls added to the form -->
<script src="/Resources/monaco-editor/min/vs/loader.js"></script>
<script src="/Resources/Scripts/ERMonacoEditorControl.js"></script>
Старый 09.12.2019, 11:16   #9  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Navision
На заметку домохозяйкам:
Начал смотреть к сожалению мало времени
Однако поделюсь нарытым.
Как выяснилось видимо рыть в сторону Монако оказалось настолько модно и молодежно что есть даже как минимум один соответствующий контрол
Нажмите на изображение для увеличения
Название: monaco1.jpg
Просмотров: 178
Размер:	82.2 Кб
ID:	12507
Опрос квази МС выявил что возможно это китайцы, а может и нет, но точно не наши . В общем коллеги рыли для Tax поэтому нехитрой настройкой типа
Нажмите на изображение для увеличения
Название: monaco2.png
Просмотров: 184
Размер:	59.2 Кб
ID:	12508
можно увидеть полученный ими результат. Окружение включает в себя js скрипт с подобным названием на конце + пару классов еще не до конца осознанного назначения

Получается в итоге вполне приличный вид
Нажмите на изображение для увеличения
Название: monaco3.png
Просмотров: 197
Размер:	22.5 Кб
ID:	12511
Возможен контекстный поиск
Нажмите на изображение для увеличения
Название: monaco4.png
Просмотров: 175
Размер:	14.9 Кб
ID:	12509
и еще куча не осознанных до конца вещей
Нажмите на изображение для увеличения
Название: monaco5.png
Просмотров: 184
Размер:	39.8 Кб
ID:	12510
Старый 09.12.2019, 14:44   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Монако это компонент от visual studio code. Соответственно, можно использовать его справку, чтобы получить представление о возможностях
Старый 09.12.2019, 15:13   #11  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от belugin Посмотреть сообщение
Монако это компонент от visual studio code. Соответственно, можно использовать его справку, чтобы получить представление о возможностях
Круто, а почему не используете этот компонент?
В чем подвох?

Последний раз редактировалось axm2017; 09.12.2019 в 15:28.
Старый 16.12.2019, 08:34   #12  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Заметки на полях по Проблеме 1

Как уже писал ранее у нас после беглого просмотра системы как выяснилось есть все для жизни
Компонент для отображения:
Смотрим в класс ERMonacoEditorControl и ко ака компонент ER Monaco Editor
а так же примеры задания новых языков типа ERMonacoLang_TaxDocConfigFormulaJS скрипта

Не совсем очевидно каким смыслом наполнены фразы скрипта типа

"// A new language code complete in monaco requires at a minimum:
// 1. Register the lanuage
// 2. Register the tokenizer
// 3. Register the completion provider"

но экспериментировать уже можно

Служебными словами будут являться функции Er список которых можно найти чем то типа такого запроса
X++:
ERISession session = ERSessionFactory::getSession();

        ERICategorizedClasses categorizedComponents =
            ERExpression::getExpressionsRepository(session).getCategorizedComponents();
        var test = categorizedComponents.getEnumerator();
        int countRecords;

		while (test.moveNext())
        {
            ERILabeledClasses classes = test.currentClasses();

            ERILabeledClassesEnumerator classEnumerator = classes.getEnumerator();

            while (classEnumerator.moveNext())
            {
                ERILabeledClass labeldClass = classEnumerator.current();
                ERIClass erclass = labeldClass.getClass();
                str s = labeldClass.getLabel();

                if (erclass.getAttribute('ERExpressionDesignerIgnoreAttribute') == null)
                {
                    Info(s);
                    countRecords++;
                }
			}
		}
Из интересного в ходе беглого просмотра список функций по всей видимости расширяем из Ax.
Примером подобного может служить ERExpressionBankCHMod10 класc.
X++:
/// <summary>
/// Calculates MOD10 expression on LSR reference number.
/// </summary>
/// <remarks>
/// THIS IS AN INTERNAL CLASS, API COMPATIBILITY IS NOT GUARANTEED IN THE FUTURE.
/// </remarks>
[
    ERExpressionNameAttribute('CH_BANK_MOD_10'),
    SysOperationHelpTextAttribute("@ApplicationSuiteElectronicReportingIntegration:ExpressionCHBankMod10HelpText"),
    ERComponentGroupAttribute("@ElectronicReporting:PartyRequisites")
    ]
    class ERExpressionBankCHMod10 extends ERExpressionPartyRequisiteBase
{
Но как понимаю список не ограничивается функциями из Ax, хотя так как документация традиционно отсутствует оставим это на будущее.
Старый 16.12.2019, 10:15   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от axm2017 Посмотреть сообщение
Не совсем очевидно каким смыслом наполнены фразы скрипта типа

"// A new language code complete in monaco requires at a minimum:
// 1. Register the lanuage
// 2. Register the tokenizer
// 3. Register the completion provider"
https://microsoft.github.io/monaco-editor/monarch.html
Старый 30.12.2019, 10:36   #14  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Сопутствующее
иногда требуется внезапно перевести ер метки зная что есть аксаптовые, а возможности ждать переводчика нет.
Может помочь что то типа такого
X++:
#File
        Dialog dlg = new Dialog();
        container langCon = languageList();

        DialogField labelIdField = dlg.addFieldValue(extendedTypeStr(LabelId), '');
        labelIdField.mandatory_RU(true);

        DialogField erlabelField = dlg.addFieldValue(extendedTypeStr(Description), '', 'ER label');
        labelIdField.mandatory_RU(true);

        dlg.run();

        dlg.wait();

        if (labelIdField.value() && erlabelField.value())
        {
            str filename = @'C:\Temp\Labels.txt';
            TextIo io;

            io = new TextIo(filename, #IO_Write);

            LabelId labelId = labelIdField.value();

            for (int i = 1; i <= conLen(langCon); i++)
            {
                LanguageId langId = conPeek(langCon, i);

                LabelType labelType = SysLabel::labelId2String(labelId, langId);

                if (labelType)
                {
                    io.write(strFmt('            <ERLabel LabelId="%3" LabelValue="%2" LanguageId="%1" />',
                        langId,
                        labelType,
                        erlabelField.value()));
                }
            }

            io.finalize();
Старый 09.01.2020, 15:22   #15  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Сопутствующее
статья как работать с java script
https://bootes.co/Articles/Extensibl...tions-Tutorial

Сейчас вырисовывается что monaco должно использоваться следующим образом
1 шаг +
добавить словарик функций (FUNCTIONS) - это просто и пример есть.
2 шаг+-
включить выпадающий список
(список root элементов (DATA SOURCE) можно задать сразу)
3 шаг -
выпадающий список (DATA SOURCE) после точки генерировать на основе работы функции аксапты так как формально деревья могут обладать любой глубиной.

Последний раз редактировалось axm2017; 09.01.2020 в 15:59.
Старый 09.01.2020, 15:40   #16  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Совет
Изображения
 
Старый 09.01.2020, 15:48   #17  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Шаги 2 и 3 будут?
Старый 09.01.2020, 16:30   #18  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Не могу ничего обещать
Старый 09.01.2020, 16:39   #19  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от belugin Посмотреть сообщение
Не могу ничего обещать
Постарайтесь пожалуйста сделать. Технически на вид вполне реализуемо.
Тыкание в DATA SOURCE в общем то 90% работы кодера в функциях.
Если это будет в выпадающем списке, то время разработки сильно сократится.
За это сообщение автора поблагодарили: EVGL (5).
Старый 14.01.2020, 15:48   #20  
axm2017 is offline
axm2017
Участник
 
1,922 / 313 (14) ++++++
Регистрация: 15.05.2017
Сопутствующее на заметку домохозяйкам
Try шный дизайн online редактора кода
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Закупка на проект "Время и расходы" Sentry DAX: Функционал 6 19.02.2016 14:09
Visual Studio - новый проект не открывается offenmeier DAX: Программирование 4 04.04.2014 01:10
Ax 2012 Ошибка при добавлении Proxy в Web проект Dreadlock DAX: Программирование 0 20.02.2014 11:43
Существует ли способ импортировать, проект из 4ки в 3ку? Вата DAX: Программирование 3 30.10.2008 09:59
Как экспортирвоать проект? Roman. ~RVS DAX: Программирование 5 22.03.2005 13:54

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

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

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