08.03.2017, 01:14 | #101 |
Microsoft Dynamics
|
Цитата:
Я полагаю, что ничего. Что там требуется переводить то? Все и так уже переведено. ЗЫ. У меня есть опыт апргейда на 7-ку ISV (Demand Forecasting) с минимальным использованием стандартных таблиц и форм.И тулза - есть. Называется LCS. Последний раз редактировалось AlexSD; 08.03.2017 в 01:18. |
|
|
За это сообщение автора поблагодарили: skuull (3). |
08.03.2017, 04:20 | #102 |
NavAx
|
Ну, в принципе, они стараются. Но в нашем регионе у них ресурсов не хватает пока что. Когда с emergency на первую линию поддержки попадаешь, им долго приходится объяснять что такое AX и что да, их контора действительно такое продает, это входит в линейку dynamics. Потом они посреди ночи ищут инжинера по всем миру. Находят. Инжинер читает описание ошибки, делает озадаченное лицо и говорит:"у нас в CRM склада нет". В конце концов вопрос решается, но в процессе бывает весело.
Но несмотря на накладки система работает. Баги расследуются, выпускаются фиксы. И вот когда фикс выпущен, его нужно как можно быстрее накатить всем клиентам, прежде чем пользователи столкнулись с проблемой. Похоже что изоляция между ядром и isv как раз для этого и вводится, чтобы фиксить ядро без необходимости merge с кастомизациями. Как оно будет работать и будет ли работать вообще. Но процесс движется именно в этом направлении.
__________________
Isn't it nice when things just work? |
|
08.03.2017, 08:55 | #103 |
Участник
|
Цитата:
самый простой пример - поля на таблице. т.е. у вас есть новое поле "A" на CustTable лежащее в кастомизации этой таблицы, вы решаете сделать по модному.. создаете новую extension модель, далее вам надо в ней создать новый объект - extension для custTable, удалить поле из CustTable, добавить его в новый extension. как только вы сделаете это "бонусом" получите неработоспособность тулзов в Visual Studio таких как обновить дата ентити по таблице. далее если те кто установят ваше решение кодируют используя кастомизацию в AppSuite и захотят заюзать ваши поля, тут их тоже ждет сюрприз, так как поля собственно будут недоступны из AppSuite или есть новый метод на классе - тут вообще переделка на экстеншены может быть невозможна если внутри него вы обращаетесь к private переменным Последний раз редактировалось trud; 08.03.2017 в 09:59. |
|
08.03.2017, 10:41 | #104 |
Модератор
|
Цитата:
не по фэншую же
__________________
-ТСЯ или -ТЬСЯ ? |
|
08.03.2017, 12:03 | #105 |
Участник
|
Цитата:
Если вы уже стоите на шатком пути оверлеинга App Suite, такие мелочи вас не должны останавливать. Создается третья модель, котороя ссылаеться на экстеншен и предастваляет доступ к полям, а App Suite ссылаеться на нее. Все легко и немного извращенно Последний раз редактировалось skuull; 08.03.2017 в 12:08. |
|
08.03.2017, 14:50 | #106 |
Участник
|
Цитата:
Цитата:
Создается третья модель, котороя ссылаеться на экстеншен и предастваляет доступ к полям, а App Suite ссылаеться на нее.
вообще есть кстати третий путь, который я думаю используют большинство - т.е. создается модель кастомизации, и далее все экстеншены уже делаются в ней. это сводит на нет начальную идею экстеншенов(отдельные бинарники), но зато можно смело говорить всем что "мы используем экстеншены" (но не везде ). кроме этого со стороны микрософт сделано не совсем честно - т.е. экстеншены позволяют более гранурярно изменять стандартный функционал, самый наверное простой пример на это - с экстеншеном можно добавить пункт в существующее меню, а с помощью кастомизации добавить без оверлея не получится, все меню при добавлении одного элемента попадет в ваш слой. тоже самое с датасорсами на формах и т.д. идеальным вариантом конечно было бы сделать возможности изменения теми которые сейчас есть в экстеншенах(т.е. возможность менять меню, форм, каких-то св-в без перекрытия базового кода) + предложить разработчику решать - хочет ли он помещать код в отдельную DLL(в этом случае компилятор уже должен следить чтобы не было обращений к приватным переменным и прочему) или вместе с основной. зачем они сделали 2 разных по сути формата файлов изменений (кастомизацию и экстеншн) это не очень понятно несомненный негатив от экстеншенов в том виде как они сейчас есть - это то что это другой объект в AOT с произвольным названием и визуально их наличие реализовано слабо - т.е. раньше хотя бы все эвенты было видно в AOT, теперь можно подписаться на метод, это вообще никак визуально будет не видно как разбираться в таком коде - особенно если он изначально разрабатывался не вами - не очень понятно, на мой взгляд время проведенное за анализом будет поболее чем время за обновлением на очередной CU вообще если подумать вся эта идея с отдельными частями системы уже была придумана дамгардами и называлась файлами слоев. т.е. если ваш слой не трогал каких то приватных методов из sys его можно было скопировать и при некотором везении использовать без компиляции на другом приложении. в 2012 это убрали, а сейчас они заново по сути изобретают тоже самое. |
|
08.03.2017, 15:23 | #107 |
Moderator
|
В дискуссии trud vs skuull, меня больше всего удивляет, что никто даже не рассматривает вариант "Сделать все на overlay, а если Микрософт будет докапываться - предложить им оплатить дополнительные затраты на использование extensions"
Последний раз редактировалось fed; 08.03.2017 в 15:30. |
|
08.03.2017, 16:39 | #108 |
Banned
|
Microsoft никогда ничего вам не оплатит. Просто не сможете обновиться, будете смотреть на свежие хотфиксы и кусать локти.
|
|
08.03.2017, 17:25 | #109 |
Moderator
|
|
|
08.03.2017, 17:38 | #110 |
Участник
|
Ну речь немного не про это. Т.е. сейчас существует 2 типа моделей - вы выбираете этот тип при создании модели экстеншн модель и модель кастомизации.
физически это означает будет ваш код лежать в отдельной папке или подпапки у какой-то модели если выбрана экстеншн модель - в ней можно создавать только экстеншн, в модели кастомизации можно создавать как экстеншены так и кастомизации Утверждение 1 - нужно по возможности как можно меньше перекрывать (делать overlay) кода и объектов микрософт - это всегда было так, дает массу преимуществ и т.д. с этим я думаю никто спорить не будет это можно достигать как кастомизациями, так и там где невозможно экстеншенами теперь следующая ситуация - вот у вас есть приложение 2012 где оверлея вообще нет(или он минимальный). решение не аддон где-то сбоку, а к примеру небольшое расширение логистики или типа того(т.е. затрагивает и использует стандартные таблицы - добавляет туда поля, методы и т.п.) автоматом это решение мигрирует на D365, где тоже не будет оверлея - мигрирует оно в модель кастомизации вопрос в следующем - выиграите ли вы и имеет ли вообще смысл перводить этот код в модель типа экстеншн. на мой взгляд нет, ибо объем работы(при условии что у вас созданы какие-то поля, методы и т.п. на стандартных таблицах) будет просто огромный, преимуществ особо никаких нет и более того есть ряд негативных моментов. собственно это обсуждаем |
|
08.03.2017, 18:05 | #111 |
Moderator
|
Мне как раз просто интересно - а зачем вообще использовать extensions, если они явно повышают трудозатраты на разработку, а трудозатраты на апгрейд, в типичном случае, снижают несильно ? Ну то есть - я могу представить какого-то нишевого ISV, который, например, написал приблуду для печати бар-кодов, интегрировал ее только через extensions и счастлив. Там этот подход вполне жизнеспособен.
Но вот когда я гляжу на типичный внедренческий проект, я понимаю что на одних extensions его в принципе не сделаешь. Более того - есть ощущение что процентов 70 типичных доработок будет уходить в overlay независимо от того, насколько сильно вам хочется использовать extensions. И вот отсюда и вопрос - а стоит ли городить огород с extensions на типичном проекте, если мы точно знаем что апгрейдить и мерджить приложение все равно придется (из за тех самых 70% типичных доработок ушедших в overlay...)? |
|
08.03.2017, 18:27 | #112 |
Участник
|
Extension для элементов или extension модели? Это же разные вещи
Extension для элементов позволяет менять меньше системного кода – тот же меню айтем добавить в меню, или в формах можно обойтись без перекрытия. Т.е. цель использования – сократить изменения в коде, чтобы легче фиксы ставить. Это вполне такой рабочий инструмент если использовать без фанатизма extension модели – это другое. Зачем его используют на проектах я не понимаю, пример использования я видел и это было мягко говоря не очень. На вопрос – а собственно нафига, следовал стандартный ответ – ну мы же AX7, тут надо Extension |
|
|
За это сообщение автора поблагодарили: fed (2), mazzy (2). |
08.03.2017, 22:14 | #113 |
Участник
|
Вариант рассматриваетсяю Но вместе с ним рассматривается вариант что возьмут модель и залочат для оверлея, как случилось с некоторыми Будет и смешно и грустно.
|
|
09.03.2017, 00:47 | #114 |
Microsoft Dynamics
|
LCS сама екстеншины не создает. Но, мы говорим о ISV с нулевым оверлеингом. Екстеншины для ISV с нулевым оверлеем не особо нужны.
Цитата:
По поводу новой модели. Зачем создавать новую модель для екстеншинов? У ISV с нулевым оверлеем есть своя модель, добавляйте екстеншины в эту же модель с ISV. Последний раз редактировалось AlexSD; 09.03.2017 в 00:52. |
|
09.03.2017, 06:47 | #115 |
Участник
|
Цитата:
Сообщение от AlexSD
Но, мы говорим о ISV с нулевым оверлеингом. Екстеншины для ISV с нулевым оверлеем не особо нужны.
С полями, можно обойтись без екстеншина. По поводу новой модели. Зачем создавать новую модель для екстеншинов? У ISV с нулевым оверлеем есть своя модель, добавляйте екстеншины в эту же модель с ISV. разговор собственно начался с фразы ниже, и обсуждению зачем это нужно. Цитата:
МС поставил перед ними срок 12 месяцев чтобы переделать свой ISV на 100% экстеншен
но народ кстати на яммере довольно активно этим занимает, некоторые используя подход описанный skuull, насоздавали уже по 10 моделей, зачем то они ж это делают Цитата:
Cоздается третья модель, котороя ссылаеться на экстеншен и предастваляет доступ к полям, а App Suite ссылаеться на нее
|
|
09.03.2017, 07:11 | #116 |
Microsoft Dynamics
|
Если интересно мое мнение (я уже больше года екстендю)
Мне пока "везло", мне не попалось еще ни одной фичи для разработки, которую бы я не смог так или иначе заэкстендить. Т.е. технически я еще не заоверлеил ни одной строки кода. В паре случаях пришлось закопипастить половину приватного кода одного класса и писать доступ к приватным полям через рефлексию. Я совсем не горжусь копипастом и рефлексией. По моему мнению реализация кустомерской фичи на екстеншинах привносит в код много дополнительных (по сути ненужных) строк, которые не относятся к реализации задуманного функционала, а являются некоторым мусором, через который придется продираться тому, кто будет поддерживать этот написанный на екстеншинах функционал. Не считая того, что найти необходимый код, который спрятался в event handler - тоже задача не очевидная. |
|
|
За это сообщение автора поблагодарили: trud (2), Vadik (1). |
09.03.2017, 09:32 | #117 |
Участник
|
Цитата:
Под этой фразой я имел в виду отсутствие Overlayering. Не забываем о том что ребята продают ISV и как только клиент захочет купить два разных ISV с оверлеингом App suite кто интересно будет ему их сводить? Вернее свести то не проблема, в 12 сводили и норм, но радужная картина апп стора и деплойментов 1 кнопкой из LCS рушиться к чертям Мне кажется эта тема тут уже обсуждалась и не раз. Пока весь мир вокруг уменьшает coupling, придумывает всякие микросервисы и прочей дурью маються мы 20 с лишним лет валим все в один неймспейс и тычим пальцем в дураков которые создают больше одной модели. |
|
|
За это сообщение автора поблагодарили: trud (2). |
09.03.2017, 10:19 | #118 |
Участник
|
как раз для AppStore и нужны extension модели. тип модели задается при создании
|
|
09.03.2017, 10:30 | #119 |
Участник
|
Это не тип модели это пакет модели. Вы выбираете создавать новый пакет или использовать существующий. Пакет компилируется в dll, модель же несет характер метаданных, как и проект и нужна только для того чтобы логически группировать ваш код. Преимущество своего пакета в том что вы его можете поставлять отдельно, если же ваша модель принадлежит пакету App Suite вы деплоите одну огромную dll которая содержит 2 строчки вашего кода, пускай даже в вашей модели, и еще большую часть АХ.
|
|
09.03.2017, 10:41 | #120 |
Участник
|
Да, правильно. но выбрав первый пункт вы уже на существующем классе или таблице новый метод не создадите. во втором случае вы этот метод можете создать(не перекрывая существующий код- т.е. мержинг 2 решений пойдет без проблем)
|
|
Теги |
#многоходовочка, ax7, axanywhere, d365, toincrease, whs, wmdp |
|
|