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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.03.2013, 19:04   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Отсутствующий код не надо читать, не надо разрабатывать, не надо апгрейдить на следующие версии/севиспаки (кстати, сравни сколько надо мерджить в ранбейз по сравнению с SysOperationFramework - фактически только декларацию одной переменной на параметр - метод со всеми причиндалами сам смёрджится за счет слоев).

Нельзя забыть добавить переменную в список созраненных.
Нельзя случайно написать другой тип у DialogField чем у переменной.

Нельзя забыть получить значение поля или поменять при копипасте код, получая значения не того поля.
Хм... а можешь ткнуть в страницу мануала из этой ветки и/или привести цитаты из оного?
что-то я не увидел такого. Может плохо прочитал.
Старый 28.03.2013, 22:35   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
->
Цитата:
Сообщение от mazzy Посмотреть сообщение
Хм... а можешь ткнуть в страницу мануала из этой ветки и/или привести цитаты из оного?
что-то я не увидел такого. Может плохо прочитал.
Глава "SysOperation sample: SysOpSampleBasicController"


См табличку:
Dialog Base getFromDialog putToDialog pack unpack | Base functionality implemented by the framework.
run Implemented by the base framework. Handles marshaling execution to a CLR session

Соответственно нет кода, а раз нет кода - нет проблем.

Вообще у меня получился более минималистичный пример:

Контракт
X++:
[DataContractAttribute]
class TEST_HelloContract
{
    Name name;
}
[DataMemberAttribute]
public Name parmName(Name _name = name)
{
    name = _name;
    return name;
}
Операция
X++:
class TEST_HelloOp
{
}
void sayHello(TEST_HelloContract _contract)
{
    info(strFmt("Hello %1", _contract.parmName()));
}
Запускалка:
\Menu Items\Action\TEST_Hello
  • ObjectType: Class
  • Object: SysOperationServiceController
  • Parameters: TEST_HelloOp.SayHello

И всё - никаких методов main, dialog, pack, unpack, макросов, extendedTypeStr и прочего.

Я немножко наврал - тип таки дублируется у переменной и метода, но хотя бы их совместимость контролируется компилятором.

Единственное что, к сожалению, параметры из не попадают в перекрестные ссылки (но никто не мешает их допилить, чтоб попадали).

А еще плюс, что по умолчанию у нас есть программный интерфейс для операции - никто не мешает вызвать ее из другого кода без модификаций
Вложения
Тип файла: xpo PrivateProject_TEST_Sysop.xpo (2.8 Кб, 354 просмотров)

Последний раз редактировалось belugin; 28.03.2013 в 22:53.
За это сообщение автора поблагодарили: mazzy (2), alex55 (1), S.Kuskov (3).
Старый 28.03.2013, 23:21   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Vadik Посмотреть сообщение
Ну так может перед тем как вендора шпынять сесть таки за букварь, хоть и не царское это дело ?

Образец мышления поколения Copy-Paste приведен прекрасный: один раз слажали, в двадцать мест скопировали, через год обнаружили. Чешем репу. Вывод? Очевидный - СИСТЕМА Г###О!
Цитата:
Сообщение от belugin Посмотреть сообщение
...и иногда забывают поменять код
Цитата:
Сообщение от belugin Посмотреть сообщение
Глава "SysOperation sample: SysOpSampleBasicController"
...
Соответственно нет кода, а раз нет кода - нет проблем.
...
И всё - никаких методов main, dialog, pack, unpack, макросов, extendedTypeStr и прочего.
...
А еще плюс, что по умолчанию у нас есть программный интерфейс для операции - никто не мешает вызвать ее из другого кода без модификаций
Я хочу заметить, что я лично не отношусь к тем людям, которые считают методику Copy & Paste лучшей методикой. Но я вижу суровую реальность у:
- внедренцев, когда они "вводят в строй" нового разработчика. А имеется достаточно большой соблазн купить программиста подешевле, но которого надо "вводить в строй", плюс у некоторых внедренцев существует весьма частая ротация кадров, что приводит к постоянному состоянию "ввода в строй" разработчиков.
- клиентов, когда они набирают к себе либо слабых специалистов, либо новичков, но при этом требуют от исполнителя выполнить задачу "здесь и сейчас и быстро".
- аутсорсеров / фрилансеров, у которых есть интерес только в своей задаче и которым неинтересно создание системы классов, какого-то большого и красивого кода. Вплоть до того, что решением задачи может быть джоб с пунктом меню на себя.

Ну т.е. конечно всем на словах понятно - что чем сложнее система - тем больше требуется мозгов, чтобы ее поддерживать или в ней кодить. И конечно это согласуется с политикой Microsoft в том, что АХ переориентируется на систему уровня SAP.

Просто очень хочется отметить слова fed
Цитата:
Сообщение от fed Посмотреть сообщение
Я бы главную проблему DAX2012 сформулировал так: Разработчики (в широком смысле) в MS не понимали что их продукт, на проектах, будут переписывать люди, у которых значительно меньше времени и значительно шире специализация чем у сотрудников MS.
Все остальное - лишь проявление этой проблемы...
и добавить, что количество людей, которые будут на проектах (неважно, со стороны клиента или внедренца) заниматься красивым построением правильной архитектуры (как того требуют внутри MS) неприлично мало. В том числе из-за политики самого клиента. Т.о., если MS-у будет закладываться на то, что разработка будет правильной и продуманной у всех клиентов, то очень быстро сложится мнение на рынке, что
Цитата:
Сообщение от Vadik Посмотреть сообщение
Вывод? Очевидный - СИСТЕМА Г###О!
. Т.е. разработчику нужно дать такой инструмент, применяя который он совершал бы меньше ошибок. Технология Copy & Paste - одна из такого рода инструментов.

Возьмем к примеру пользовательский интерфейс. Его ж кто-то продумывает; есть команда, который этот UI рисует. Вот тут нужно что-то подобное, но для разработчика, чтобы он был мотивирован перейти на новую технологию. Конечно хорошо, когда количество копируемого кода будет меньше. Но при этом в мозгах у разработчика должно быть четкое понимание того, что так будет и так будет проще как писать, так и поддерживать. В частности, поэтому и жуть как полезны перекрестные ссылки.
__________________
Возможно сделать все. Вопрос времени
Старый 29.03.2013, 11:47   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Вообще у меня получился более минималистичный пример:
Ага. Спасибо. Теперь боль-мень понятно что именно добивались.

Хотя твой пример категорически отличается от того, что в книжке.
Кроме того, текст с названием метода в параметре menuItem - это еще один вариант пушного зверька.
Ну, и у меня:
1. нажатие на кнопку Ок приводит к ошибке (скриншот 1)
2. добавление новой переменной в класс-контракт не приводит к появлению нового элемента в диалоге (см. скриншот 2)
3. изменение типа Name на Description не приводит к изменению Label и StatusText (см. скриншот 2)

Подозреваю, что 2 и 3 из-за того, что я нуб и опозорился.
Но пока все равно выглядит примерно так:

вполне возможно, что это я чего-то не понимаю.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 231
Размер:	53.4 Кб
ID:	8146   Нажмите на изображение для увеличения
Название: 2.PNG
Просмотров: 367
Размер:	23.6 Кб
ID:	8147  

Вложения
Тип файла: xpo PrivateProject_TEST_Sysop (1).xpo (3.1 Кб, 332 просмотров)

Последний раз редактировалось mazzy; 29.03.2013 в 11:47. Причина: добавил проект
Старый 29.03.2013, 12:38   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
Хотя твой пример категорически отличается от того, что в книжке.
То же самое, только убрано необязательное. (main, атрибуты для описания меток и визуального порядка в пареметрах)

Цитата:
Кроме того, текст с названием метода в параметре menuItem - это еще один вариант пушного зверька.
Для перекрестных ссылок можно использовать main как в книжке.
Теоретически можно написать код который будет добавлять по таким менюайтемам записи в базу.
Старый 29.03.2013, 12:43   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Теоретически можно написать код который будет добавлять по таким менюайтемам записи в базу.
я не хочу писать. я хочу пыщ-пыщ со стандартным и крутым Фреймворкам.
ты же не хочешь утвердждать, что у меня и у других внедренцев есть оплачиваемое время, чтобы писать "записи по таким менюайтемам".
Старый 29.03.2013, 12:45   #7  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
я не хочу писать. я хочу пыщ-пыщ со стандартным и крутым Фреймворкам.
ты же не хочешь утвердждать, что у меня и у других внедренцев есть оплачиваемое время, чтобы писать "записи по таким менюайтемам".
Ну у тебя есть выбор - можешь писать мейны, за которые тебе платят
Старый 29.03.2013, 12:48   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Ну у тебя есть выбор - можешь писать мейны, за которые тебе платят
легко. мейны я копирую
Старый 29.03.2013, 12:44   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Для перекрестных ссылок можно использовать main как в книжке.
что-то не работают у меня мои изменения.
буду разбираться (блин-блин-блин еще и с этим разбираться)

а можно попросить у тебя проект с main?
Теги
ax2012, runbase, runbasebatch, sysoperation framework

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Translated User Help on TechNet and downloadable New Features lists available! Blog bot DAX Blogs 0 31.01.2013 05:11
mfp: Microsoft Dynamics AX 2012 is here! Blog bot DAX Blogs 10 04.08.2011 17:11
AIF: Microsoft Dynamics AX 2012 Services and AIF White Papers Blog bot DAX Blogs 0 16.06.2011 00:11
dynamics-ax: Interview with Microsoft's Lachlan Cash on his new role, AX 2012 and more Blog bot DAX Blogs 6 22.04.2011 14:55
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11

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

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

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