|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от belugin
![]() Отсутствующий код не надо читать, не надо разрабатывать, не надо апгрейдить на следующие версии/севиспаки (кстати, сравни сколько надо мерджить в ранбейз по сравнению с SysOperationFramework - фактически только декларацию одной переменной на параметр - метод со всеми причиндалами сам смёрджится за счет слоев).
Нельзя забыть добавить переменную в список созраненных. Нельзя случайно написать другой тип у DialogField чем у переменной. Нельзя забыть получить значение поля или поменять при копипасте код, получая значения не того поля. что-то я не увидел такого. Может плохо прочитал. |
|
![]() |
#2 |
Участник
|
![]() Цитата:
См табличку: 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
И всё - никаких методов main, dialog, pack, unpack, макросов, extendedTypeStr и прочего. Я немножко наврал - тип таки дублируется у переменной и метода, но хотя бы их совместимость контролируется компилятором. Единственное что, к сожалению, параметры из не попадают в перекрестные ссылки (но никто не мешает их допилить, чтоб попадали). А еще плюс, что по умолчанию у нас есть программный интерфейс для операции - никто не мешает вызвать ее из другого кода без модификаций Последний раз редактировалось belugin; 28.03.2013 в 22:53. |
|
|
За это сообщение автора поблагодарили: mazzy (2), alex55 (1), S.Kuskov (3). |
![]() |
#3 |
Administrator
|
Цитата:
Цитата:
Сообщение от belugin
![]() Глава "SysOperation sample: SysOpSampleBasicController"
... Соответственно нет кода, а раз нет кода - нет проблем. ... И всё - никаких методов main, dialog, pack, unpack, макросов, extendedTypeStr и прочего. ... А еще плюс, что по умолчанию у нас есть программный интерфейс для операции - никто не мешает вызвать ее из другого кода без модификаций - внедренцев, когда они "вводят в строй" нового разработчика. А имеется достаточно большой соблазн купить программиста подешевле, но которого надо "вводить в строй", плюс у некоторых внедренцев существует весьма частая ротация кадров, что приводит к постоянному состоянию "ввода в строй" разработчиков. - клиентов, когда они набирают к себе либо слабых специалистов, либо новичков, но при этом требуют от исполнителя выполнить задачу "здесь и сейчас и быстро". - аутсорсеров / фрилансеров, у которых есть интерес только в своей задаче и которым неинтересно создание системы классов, какого-то большого и красивого кода. Вплоть до того, что решением задачи может быть джоб с пунктом меню на себя. Ну т.е. конечно всем на словах понятно - что чем сложнее система - тем больше требуется мозгов, чтобы ее поддерживать или в ней кодить. И конечно это согласуется с политикой Microsoft в том, что АХ переориентируется на систему уровня SAP. Просто очень хочется отметить слова fed Цитата:
Сообщение от fed
![]() Я бы главную проблему DAX2012 сформулировал так: Разработчики (в широком смысле) в MS не понимали что их продукт, на проектах, будут переписывать люди, у которых значительно меньше времени и значительно шире специализация чем у сотрудников MS.
Все остальное - лишь проявление этой проблемы... Возьмем к примеру пользовательский интерфейс. Его ж кто-то продумывает; есть команда, который этот UI рисует. Вот тут нужно что-то подобное, но для разработчика, чтобы он был мотивирован перейти на новую технологию. Конечно хорошо, когда количество копируемого кода будет меньше. Но при этом в мозгах у разработчика должно быть четкое понимание того, что так будет и так будет проще как писать, так и поддерживать. В частности, поэтому и жуть как полезны перекрестные ссылки.
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#4 |
Участник
|
Ага. Спасибо. Теперь боль-мень понятно что именно добивались.
Хотя твой пример категорически отличается от того, что в книжке. Кроме того, текст с названием метода в параметре menuItem - это еще один вариант пушного зверька. Ну, и у меня: 1. нажатие на кнопку Ок приводит к ошибке (скриншот 1) 2. добавление новой переменной в класс-контракт не приводит к появлению нового элемента в диалоге (см. скриншот 2) 3. изменение типа Name на Description не приводит к изменению Label и StatusText (см. скриншот 2) Подозреваю, что 2 и 3 из-за того, что я нуб и опозорился. Но пока все равно выглядит примерно так: ![]() вполне возможно, что это я чего-то не понимаю. Последний раз редактировалось mazzy; 29.03.2013 в 11:47. Причина: добавил проект |
|
![]() |
#5 |
Участник
|
То же самое, только убрано необязательное. (main, атрибуты для описания меток и визуального порядка в пареметрах)
Цитата:
Кроме того, текст с названием метода в параметре menuItem - это еще один вариант пушного зверька.
Теоретически можно написать код который будет добавлять по таким менюайтемам записи в базу. |
|
![]() |
#6 |
Участник
|
Цитата:
ты же не хочешь утвердждать, что у меня и у других внедренцев есть оплачиваемое время, чтобы писать "записи по таким менюайтемам". ![]() |
|
![]() |
#7 |
Участник
|
|
|
![]() |
#8 |
Участник
|
|
|
![]() |
#9 |
Участник
|
|
|
Теги |
ax2012, runbase, runbasebatch, sysoperation framework |
|
|