1 / 90

Средства разработки

Средства разработки. Компания Тренер E-mail. План занятий. Среда разработки MorphX Язык X++ Макросы Таблицы Формы Запросы Классы Меню и пункты меню Отчеты Конфигурационные ключи Стандарты разработки. Где мы сейчас. Среда разработки MorphX Язык X++ Макросы Таблицы Формы

kenyon-hunt
Download Presentation

Средства разработки

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Средства разработки Компания Тренер E-mail

  2. План занятий • Среда разработки MorphX • Язык X++ • Макросы • Таблицы • Формы • Запросы • Классы • Меню и пункты меню • Отчеты • Конфигурационные ключи • Стандарты разработки

  3. Где мы сейчас • Среда разработки MorphX • Язык X++ • Макросы • Таблицы • Формы • Запросы • Классы • Меню и пункты меню • Отчеты • Конфигурационные ключи • Стандарты разработки

  4. MorphX – интегрированная среда разработки • Независимый словарь данных и объектов • Единая база данных • Единое приложение • Единый исходный код • Единый наборинструментов • Несколько интерфейсов • Windows • Web • WAP All In One

  5. MorphX объединяет все этапы создания программного продукта • Полный набор средств для создания приложений любого уровня сложности • Дизайнер форм и отчетов • Специализированный текстовый редактор • Компилятор • Отладчик • Редактор контекстной справки

  6. Основные объекты AOT • Data Dictionary • Macros • Jobs • Classes • Queries • Forms • Reports • Menus • Menu Items • Web

  7. Создание нового приложения 1. Разработка структуры данных 2. Создание типов данных и таблиц в DataDictionary 3. Cоздание классов для обработки данных 4. Создание форм для диалога с пользователем 5. Создание отчетов для извлечения и анализа данных 6. Создание меню для организации доступа к новой функциональности

  8. Средства ведения проектов • Вся модификация в одном окне • Удобный перенос изменений на другие версии • Позволяют собрать вместе все объекты, реализующие определенную функциональность

  9. Архитектура слоев USPUser Patch CUPCustomer Patch VAPVar Patch BUPBusiness Patch LOPLocal Patch DIPDistributor Patch GLPGlobal Patch SYPStandard Patch USRUser Solutions Пользовательские модификации CUSCustomer Solutions Слой клиентских модификаций VARVar Solutions Слой партнерских модификаций BUSBusiness Solutions Вертикальные решения партнера LOSLocal Solutions Интегрированные решения страны DISDistributor Solutions Требования законодательства страны GLSGlobal Solutions Слой интегрированных решений SYSStandard Application Стандартная функциональность

  10. Исполнение программного кода 1 index file: axapd.aoi

  11. Сравнение модификаций разных слоев

  12. Экспорт объектов приложения • Позволяет сохранить прикладные объекты репозитария во внешнем файледля использования их в других приложениях или в качестве резервной копии • Возможен экспорт как отдельного или нескольких выделенных объектов из AOT, так и всех объектов, входящих в проект

  13. Импорт объектов приложения • Посредством импорта производится загрузка в систему ранее экспортированных объектов приложения • Импорт объектов приложения производится в слой, установленный в конфигурационной утилите

  14. Визуальное моделирование с MorphXplorer • Создание моделей данных и связей между ними в стандарте UML • Для построения моделей используются существующие объекты таблиц и классов репозитария • Связи устанавливаются на основе данных таблиц перекрестных ссылок

  15. Метки на английском языке, файл AXSYSen-us.ald Метки на русском языке, файл AXSYSru.ald @SYS30 Person '%1' does not exist. @SYS31 Variance @SYS32 Group by @SYS35 Default lead time or lead time in number of days @SYS30 Сотрудник '%1' не существует. @SYS31 Расхождение @SYS32 Группировать по @SYS35 Время упреждения в днях Меточные файлы • Вынесенный за приложение текстовый интерфейс • Поддержка многоязыкового интерфейса • Повторное использование меток

  16. Где мы сейчас • Среда разработки MorphX • Язык X++ • Макросы • Таблицы • Формы • Запросы • Классы • Меню и пункты меню • Отчеты • Функциональные ключи • Стандарты разработки

  17. Объектно–ориентированный язык X++ C++ Syntax • Принципы инкапсуляции и наследования • Легкий синтаксис • Встроенный язык запросов (SQL) Java Syntax SQL Syntax

  18. Типы данных • Скалярные типы данных • Составные типы данных • Расширенные типы данных

  19. Скалярные типы данных • boolean логический тип true, false • integer тип целых чисел -1000, 0, 1, 123 • real действительные 0.0, 5.789 • date дата 1\1\1901..31\12\2154 • timeOfDay время часы:мин:сек • str строка «MorphX» • enum перечислениеEnum::Literal Перечислимый тип данных Enum создается в узле Base Enums репозитария прикладных объектов

  20. Скалярные типы данных. Определение • Определение скалярной переменной: • тип_переменнойимя_переменной{= значение}; • Примеры: • boolean bVar1, bVar2 = true; • int iVar1, iVar2 = -123; • real rVar1, rVar2 = 4.56; • date dVar1 = 31\12\2002; • timeOfDay tVar1 = 0; • str sVar1 = “Declare string variable”; • NoYes eVar1 = NoYes::Yes;

  21. Составные типы данных. Массивы • Массивы -Список элементов одного типа • Динамические тип_массиваимя_массива[] тип_массиваимя_массива[, memory] • Фиксированные тип_массиваимя_массива[length] тип_массиваимя_массива[length, memory] • Примеры: • int iArray1[], iArray2[100], iArray3[100, 20]; • real rArray4[] = 0;

  22. Составные типы данных. Контейнеры • Контейнеры - Динамический список элементов базисного или составного типа • Определение переменной типа контейнер • containerимя_контейнера = [значение1, значение2, …]; • Примеры: • container c1, c2[]; • container c3 = [false, 16, 3.14, “MorphX”];

  23. Составные типы данных. Контейнеры • Функции для работы с контейнером • container c;Объявление контейнера • conins(c, n, value); Вставка нового элемента • condel(c, n, num); Удаление элементов из контейнера • conpoke(c, n, value);Замена существующего элемента • conpeek(c, n);Извлечение значения элемента • confind(с, value); Поиск последовательности элементов • conlen(с); Число элементов контейнера • с = connull(); Удаление из памяти, • где n – индекс элемента, value – значение элемента, • num – кол-во удаляемых позиций

  24. Составные типы данных. Классы • Определение переменной типа класс: • Имя_Классаимя_переменной_класса; • Создание объекта класса: • имя_переменной_класса = newИмя_Класса(); • Примеры: • LedgerVoucher ledgerVoucher; • ledgerVoucher = new LedgerVoucher();

  25. Составные типы данных. Таблицы • Определение переменной типа таблица: • Имя_Таблицыимя_переменной_таблицы; • Примеры: • LedgerTable ledgerTable; • Common common;

  26. Расширенные типы данных • РТД создается в узле Extended Data Types репозитария прикладных элементов • В основе РТД лежат скалярные типы данных и контейнер • РТД имеет уникальное пользовательское наименование. Тем самым РТД реализует пользовательский тип данных MorphX • РТД по умолчанию определяет формат отображения данных на формах и отчетах • РТД можно наследовать. При этом потомок РТД наследует свойства родителя РТД. • Объявление переменных РТД аналогично объявлению скалярных типов данных

  27. Операторы X++ по старшинству • postfix [] . ()expr++expr-- • unary ++expr--expr-expr~ ! • creation new • multiplicative * / % • additive + - • shift << >> • relational <> <= >= • equality == != • bitwise AND & • bitwise XOR ^ • botwise OR | • logical && || • conditional ? : • assignment = +=-=

  28. Синтаксис X++ • Операторы ветвления • if (expression) statement [else statement] • switch (expression) {case expression : statement} • expression ? statement1 : statement2 • Циклы • while (expression) statement • do {statement} while (expression) • for (initialization; expression; update) statement • Исключения • try {throw exception} … catch (expression) statement

  29. Синтаксис предложения SELECT • SelectStatement = selectParameters • Parameters = [[ FindOptions ] [ FieldList from ] ]TableVariable [IndexClause] • [ Options ] [ Where Clause ] [ JoinClause ] • FindOptions = reverse|firstfast|firstonly|forupdate|nofetch • FieldList = Field { , Field } | * • Field = Aggregate ( FieldIdentifier ) | FieldIdentifier • Aggregate = sum|avg|minof|maxof|count • Options = ( order by | group by ) FieldIdentifier [ Direction ] • { , FieldIdentifier [ Direction ] } • IndexCaluse = index Idx | index hint idx • Direction = asc|desc • WhereClause = where Expression • JoinClause = [exists|not exists|outer ] joinParameters

  30. Транзакции • ttsbegin- начало транзакции • ttscommit - конец успешной транзакции, все • изменения сохранены в БД • ttsabort- отмена транзакции, все • (throw) изменения в пределах транзакции • отменены • Допускаются вложенные транзакции

  31. Где мы сейчас • Среда разработки MorphX • Язык X++ • Макросы • Таблицы • Формы • Запросы • Классы • Меню и пункты меню • Отчеты • Функциональные ключи • Стандарты разработки

  32. Макросы

  33. Где мы сейчас • Среда разработки MorphX • Язык X++ • Макросы • Таблицы • Формы • Запросы • Классы • Меню и пункты меню • Отчеты • Конфигурационные ключи • Стандарты разработки

  34. Таблицы (Tables) • Таблицы могут быть временными и постоянными • Постоянные таблицы имеют отображение на сервере БД • Временные таблицы обрабатывает Axapta. Данные в этих таблицах не сохраняются после работы • С точки зрения программиста работа с временными и постоянными таблицами практически не различается • Все таблицы наследованы от системной таблицы Common

  35. Поля таблиц (Tables/Fields) • Поля таблицы могут иметь базовый тип: • String • Integer • Real • Date • Time • Enum • Container

  36. Группы полейна таблицах • Поля в таблицах объединяются в группы • Группы полей автоматически обрабатываются генератором форм • При добавлении нового поля в группу во всех элементах системы, использующих эту группу, добавляется новое поле

  37. Индексына таблицах • Индексы определяются на некотором наборе полей таблицы – ключе • Свойство AllowDuplicates показывает, может ли таблица иметь несколько записей с одинаковым ключом • Индекс может быть неактивен • Доступность индекса также зависит от того, доступен ли связанный с ним функциональный ключ

  38. 1 * Отношенияна таблицах • Отношения показывают, каким образом поля данной таблицы связаны с полями других таблиц • Отношения между полями могут быть заданы как на самой таблице, так и на расширенном типе данных поля • Отношения на таблице могут быть трех типов: • Normal • Field fixed • Related field fixed LedgerTable LedgerTrans

  39. Действия при удалении • None - нет действия • Cascade - каскадное удаление строк в связанных таблицах • Restricted - удаление лишь при отсутствии связанных строк • Cascade + Restricted

  40. Методы на таблицах • При работе с табличными данными система генерирует ряд событий. Для каждого события определен собственный метод • Примерами таких методов служат Update(), Insert(), Delete() • Эти и другие методы на таблицах могут быть перекрыты программистом • Помимо событийных методов можно создавать собственные методы • Такие методы могут быть динамическими и статическими

  41. Maps • Если для нескольких таблиц предполагается однотипная обработка, то эти таблицы целесообразно объединить в Map Table 3 Map Table 2 Table 1

  42. Где мы сейчас • Среда разработки MorphX • Язык X++ • Макросы • Таблицы • Формы • Запросы • Классы • Меню и пункты меню • Отчеты • Функциональные ключи • Стандарты разработки

  43. Формы (Forms) • Формы имеют три составляющие: • Методы • Системные (classDeclaration, init, и пр) • Пользовательские • Источники данных • Дизайн • Все составляющие задаются статически при построении формы. Но в процессе работы формы программным образом можно изменить как дизайн, так и источники данных

  44. Источники данных на формах • Источники данных предоставляют данные для формы (заполнение) • Каждый источник данных является запросом, состоящим из одной таблицы. Это позволяет пользователю использовать фильтры и сортировки • Источники данных можно соединять (join)

  45. Дизайн форм • Дизайн на форме определяет ее внешний вид и поведение • Дизайн является древовидной структурой, узлами и листьями которой являются control-элементы • Примерами таких элементов служат закладки, кнопки, элементы ввода текстовой строки, числа, даты и прочее

  46. Методы на элементах форм • Каждый элемент формы имеет специальный узел Methods, где содержится программный код • Каждый элемент формы (источник данных, control и даже сама форма) имеет ряд предопределенных методов, соответствующих событиям внешнего мира • щелчок мыши • drag’n’drop …

  47. Методы на элементах форм • При работе с формой система генерирует ряд событий. Для каждого события определен собственный системный метод, который может быть перекрыт разработчиком Нажали кнопку OK кнопку Отменить CloseOK CloseCancel CanClose CanClose Close Close

  48. Где мы сейчас • Среда разработки MorphX • Язык X++ • Макросы • Таблицы • Формы • Запросы • Классы • Меню и пункты меню • Отчеты • Конфигурационные ключи • Стандарты разработки

  49. Запросы (Queries) • Запросы являются удобной альтернативой использования оператора while selectязыка X++ • Запросы предоставляют пользователю интерфейс для определения ограничения выборки и сортировки данных • Запрос не выводит данные на устройство вывода. Этим занимается тот элемент системы, который использует данный запрос (запросы в основном используются в классах и отчетах)

  50. Структура запросов • Запросы состоят из: • Источников данных (таблицы). Источники данных могут быть связаны между собой • Методов. Существуют методы для стандартных событий, также можно создавать собственные методы

More Related