05.12.2019, 10:32 | #1 |
Участник
|
Краудфандинговый проект Егер/Jaeger
Ранее в соответствующем топике озвучивал проблемы с которыми столкнулся в ER:
- неудобный общий интерфейс. - неудобный интерфейс разработки. - архитектурные проблемы ER-framework (наследование например). По причинам озвученным ранее + небольшого совещания с теми, кто общается с MS, стало ясно, что проще сделать своими руками, так, как это будет результативнее (была высказана мысль что какие-то китайцы пошли этим путем без подробностей). Так как моих компетенций недостаточно, то проект соответственно будет краудфандинговым. Результаты будут на github Конечная ближайшая цель: - получить удобную среду разработки. - получить удобный и быстрый интерфейс настроек. - решить проблему наследования. - получить удобный framework для дальнейших работ Полученное видится как Community версия (т.е. без официального бесплатного коммерческого использования) для того чтобы какие-то конторы могли потом при наличии результатов способствовать наличию хакатонов и пива по теме. Последний раз редактировалось axm2017; 05.12.2019 в 10:38. |
|
05.12.2019, 10:35 | #2 |
Участник
|
Проблема 1.
- неудобный интерфейс разработки. Так как ранее не занимался подобным то был бы рад если кто посоветует как можно реализовать подобное в ax 365. Хочется окно разработки с возможностью выбора из словаря и выделением терминов из словаря цветом. Буду рад, если кто чего посоветует. Последний раз редактировалось axm2017; 05.12.2019 в 10:38. |
|
05.12.2019, 10:46 | #3 |
Banned
|
https://microsoft.github.io/monaco-editor/
Есть люди (Marcus Farkas, которого тут некоторые могут знать), которые встроили это в D365. |
|
05.12.2019, 11:04 | #4 |
Участник
|
Цитата:
Сообщение от EVGL
https://microsoft.github.io/monaco-editor/
Есть люди (Marcus Farkas, которого тут некоторые могут знать), которые встроили это в D365. |
|
|
За это сообщение автора поблагодарили: axm2017 (3). |
05.12.2019, 11:11 | #5 |
Moderator
|
Я уточню по терминологии: Краудфандинговый или краудсорсинговый ? Первое предполагает что я плачу какие-то деньги сильно заранее, а потом получаю готовый продукт задешево. Второе предполагает что я (хотя ok - лично я вряд ли буду этим заниматься) жертвую какие-то куски собственного кода, который потом используется в конечном продукте (вероятно бесплатном или полубесплатном).
|
|
05.12.2019, 11:11 | #6 |
Участник
|
Спасибо за советы. Посмотрю в этом направлении.
Проблема 3 - архитектурные проблемы ER-framework (наследование например). Проблема наследования. Сейчас как понял из краткого общения (то есть в тему не погружен) наследование реализовано через разности. То есть наследуемый формат не содержит всех компонентов родительского, а содержит лишь разницу с родительскими. Предлагается в момент создания делать таки полную копию родительской и реализовать процесс синхронизации в случае необходимости по не измененным компонентам. Это позволит при необходимости обойтись работой только с наследуемым форматом и облегчит тестирование и жизнь в дальнейшем. Если кто то из тех кто в теме видит подводные камни велкам с советами. |
|
05.12.2019, 11:17 | #7 |
Участник
|
Цитата:
Сообщение от fed
Я уточню по терминологии: Краудфандинговый или краудсорсинговый ? Первое предполагает что я плачу какие-то деньги сильно заранее, а потом получаю готовый продукт задешево. Второе предполагает что я (хотя ok - лично я вряд ли буду этим заниматься) жертвую какие-то куски собственного кода, который потом используется в конечном продукте (вероятно бесплатном или полубесплатном).
Краудфа́ндинг (народное финансирование, от англ. сrowd funding, сrowd — «толпа», funding — «финансирование») — коллективное сотрудничество людей (доноров), которые добровольно объединяют свои деньги или другие ресурсы вместе, как правило, через Интернет, чтобы поддержать усилия других людей или организаций (реципиентов). Давать деньги без наличия продукта - зло. А вот советам или коду буду рад. Тем более живу в мире Dynamics где код открыт +- и его использование по сути отдано на откуп доброй воли коллег. |
|
05.12.2019, 16:59 | #8 |
Участник
|
В помощь тем кто хочет повторить/поэкспериментировать
Скачать можно тут 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 |
Участник
|
На заметку домохозяйкам:
Начал смотреть к сожалению мало времени Однако поделюсь нарытым. Как выяснилось видимо рыть в сторону Монако оказалось настолько модно и молодежно что есть даже как минимум один соответствующий контрол Опрос квази МС выявил что возможно это китайцы, а может и нет, но точно не наши . В общем коллеги рыли для Tax поэтому нехитрой настройкой типа можно увидеть полученный ими результат. Окружение включает в себя js скрипт с подобным названием на конце + пару классов еще не до конца осознанного назначения Получается в итоге вполне приличный вид Возможен контекстный поиск и еще куча не осознанных до конца вещей |
|
09.12.2019, 14:44 | #10 |
Участник
|
Монако это компонент от visual studio code. Соответственно, можно использовать его справку, чтобы получить представление о возможностях
|
|
09.12.2019, 15:13 | #11 |
Участник
|
Цитата:
Сообщение от belugin
Монако это компонент от visual studio code. Соответственно, можно использовать его справку, чтобы получить представление о возможностях
В чем подвох? Последний раз редактировалось axm2017; 09.12.2019 в 15:28. |
|
16.12.2019, 08:34 | #12 |
Участник
|
Заметки на полях по Проблеме 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++; } } } Примером подобного может служить 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 { |
|
16.12.2019, 10:15 | #13 |
Участник
|
|
|
30.12.2019, 10:36 | #14 |
Участник
|
Сопутствующее
иногда требуется внезапно перевести ер метки зная что есть аксаптовые, а возможности ждать переводчика нет. Может помочь что то типа такого 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 |
Участник
|
Сопутствующее
статья как работать с 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 |
Участник
|
Совет
|
|
09.01.2020, 15:48 | #17 |
Участник
|
Шаги 2 и 3 будут?
|
|
09.01.2020, 16:30 | #18 |
Участник
|
Не могу ничего обещать
|
|
09.01.2020, 16:39 | #19 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: EVGL (5). |
14.01.2020, 15:48 | #20 |
Участник
|
Сопутствующее на заметку домохозяйкам
Try шный дизайн online редактора кода |
|