Цитата:
Сообщение от
Sergey Batiskaf
День добрый всем. С аксаптой я знаком всего несколько дней, проект ожидается не продолжительный, потому предпочтительно прибегнуть к помощи экспертов.
Кстати Аксапта эта мне очень сильно напоминает SmallTalk, аналогичные идеи, решения.
Ох, какие хорошие вопросы...
И как хорошо вас понимаю...
Цитата:
Сообщение от
Sergey Batiskaf
Значит вопрос первый думаю стандартный, документация по классам, в нете практически ничего нет, как с этим всем разбираться? Вот хочу я создать инстанс другой формы из метода моего класса, нужно использовать ClassFactory::fromRunClassOnClient? Или что то другое? Как заполнить Args, в каком формате это принято делать? Все это можно понять только при наличии документации.
Практически полностью отсутствует.
Ищите по крохам.
Например, как здесь
Описание скрытых объектов
или по ссылкам
http://axapta.mazzy.ru/links
или тренингах или в книжках.
Почему такая ситуация?
Дело в том, что разработчики болели идеей самодокументируемого кода.
Вы постоянно будете натыкаться на зачатки инструментов анализа кода...
Самый импользуемый - перекрестные ссылки
http://axapta.mazzy.ru/lib/xref/
http://axapta.mazzy.ru/lib/explore/
http://axapta.mazzy.ru/lib/explorepricelist/
а также Visual MorphXplorer (он показан здесь
http://axapta.mazzy.ru/lib/querytuning/ )
Есть и другие инструменты, но они почти бесполезны...
Поскольку в какой-то момент объем кода стал настолько большим и взаимосвязей настолько много, что без документации понять принципы работы системы невозможно.
Ваши вопросы именно по принципам работы.
Совет: начните с tutorial-объектов, проштудируйте их.
http://axapta.mazzy.ru/lib/gettingstarted/
Посмотрите тажке сюда
http://erpkb.com/Axapta/Programmirovanie?v=1c65
Цитата:
Сообщение от
Sergey Batiskaf
СОМ взаимодействие. Из примеров более менее ясно как построить ссылку на объект. Меня интересует как в Х++ собрать класс, который я смогу передать в методы СОМ объекта в качестве аргумента, и из СОМ-а уже вызывать эти методы Аксапта обьекта? Где то прочитал что можно унаследоваться от класса СОМ и получится как бы то что нужно. Можно подробности, какие методы, кроме наследования, нужно перекрыть, как имплементировать тот или инной интерфейс, который определен в АктивХ ТЛБ, какой тип интерфейса возможно имплементировать - дюал или только диспинтерфейс для позднего связывания?
Читайте руководство разработчика, раздел Axapta Business Connector.
Проштудируйте классы семейтва ax*.
Эти классы предназначены именно для обращения извне.
Цитата:
Сообщение от
Sergey Batiskaf
Язык видимо джавоидный, значит должна быть рефлексия, как ей воспользоваться для исследования типов в рантайме, для имплементации позднего связывания и вызовов методов посредством рефлексии? Помнится в СмолТоке можно было получить все инстансы конкретного класса, которые были построены сейчас, как с этим обстоят дела в Х++?
Эх... Не хватает смайлика "причмокнул языком от удовольствия"...
Изучите семейство системных классов Dict*
Для работы в рантайме инструментов мало. Функции typеof, dimof, некоторые методы в классе Global и также некоторые статитические методы в классах семейства Dict*
Цитата:
Сообщение от
Sergey Batiskaf
Подписка на GUI controls Events. Судя по тому что я вижу, можно перекрыть метод и обрабатывать таким образом сообщение. Как реализовать множественного наблюдателя, как в Джаве или .Нет, котгда есть возможность засунуть список листнеров\делегатов на одно событие, чтобы можно было это проделать в рантайме, не перекрывая заранее методы в дизайн тайме.
Ох... Правильно сформулированный вопрос содержит...
Нет, такого нет.
Цитата:
Сообщение от
Sergey Batiskaf
Если предыдущий пункт не получается проделать, тогда выхода нет и прийдется править классы контролов (кнопок, списков, таблиц), встраивать тот когд, который мне необходим туда. Принято ли это делать, и можно ли вообще поменять имплементацию классов стандартной библиотеки (опять же в СмолТоке это делалось), к примеру я хочу дописать пару строк в ClassFactory::fromRunClassOnClient, или в Button.clicked
Да, придется.
Да, можно, но осторожно.
Прочитайте главу "Design guidelines for cost-efficient upgrades" в Best Practice.
Цитата:
Сообщение от
Sergey Batiskaf
Если и этого нельзя сделать, тогда может есть какие то метасредства? В некоторых версиях Смолтока можно было добавлять пре и пост кондишнс на конкретные методы, для меня это как раз, например к методу Button.clicked в пост кондишн добавить пару моих строк кода, который будет вызываться с теми же аргументами что и обработчик сообщения. (Такой метод был бы предпочтительнее чем менять библиотечные классы, которые с новыми петчами могут тоже поменяться и вся моя писанина уйдет коту под хвост).
Не увлекайтесь метасредствами.
Метасредства есть. Но их бездумное использование приводит к очень большому объему программирования. Прежде всего вам придется очень внимательно перехватывать код, относящийся к безопасности, включению/выключению функционала, автосвязыванию форм и датасорсов...
Кроме того, стандартный уже существующий функционал, за редким исключением, практически не использует метасредств. Поэтому ваши вставки будут выглядеть инородным телом.
В общем, на первых порах, лучше не используйте метасредства.
Изучите аспекты поведения ядра. Тогда вам перехватывать события будет намного легче.
Цитата:
Сообщение от
Sergey Batiskaf
Если и этого нельзя сделать! Тогда может есть возможность встроить свой типа ClassLoader, который при загрузке мне необходимых классов будет их на лету модифицировать и добавлять строчки кода в нужные мне обработчики?
Самомодификация в Аксапте тоже есть

См. генератор отчетов, генератор классов, а также скрипты в редакторе...
Но будьте осторожны.
Аксапта хороша не как инструмент программирования.
А как готовая бизнес-логика с возможностью быстрой и удобной доработки.
Если ваша "доработка" становится более дорогой, нежели создание новой программы в Delphi, VS или в другой инструментальной среде...
То использование Аксапты теряет всяческий смысл.
Вопрос не в можно/нельзя.
Вопрос в рационально/нерационально.
См. также проекты по самомодификации Аксапты
http://www.axforum.info/forums/showthread.php?t=7788
http://www.axforum.info/forums/showthread.php?t=13282
http://www.axforum.info/forums/showthread.php?t=11701