Steen Andreasen MORPHX IT Введение в язык программирования в Axapta X++ и среду разработки MorphX MORPHX IT Введение в язык программирования в Axapta X++ и среду разработки MorphX Copyright © 2007 Steen Andreasen, www.steenandreasen.com Редактор: Steen Andreasen Вып. редактор: Steen Andreasen Обложка: Poul Cappelen og Ulla Bjulver Фотограф: Ulla Bjulver Перевод: Михаил Ржевский и Иван Кашперук Denmark 2007 ISBN: 87-991161-4-6 1. edition Все права зарегистрированы. Автор предоставил код только для использования читателями данного издания. Вы обладаете правом ограниченного использования кода из этой публикации только с ссылкой на автора, код не подлежит распространению, размещению online, в интернете, продаже или коммерческой эксплуатации. Никакая часть из этой публикации не может быть использована или переиздана любым способом без предварительного письменного разрешения правообладателя за исключением кратких обзоров в статьях или обзорах. Любое другое использование без письменного разрешения запрещено, согласно Датскому закону об авторском праве. В случае обнаружения любых погрешностей, пожалуйста, сообщите автору по следующему адресу электронной почты: [email protected] Торговые марки Все термины, упомянутые в этой книге, являются торговыми марками и соответственно капитализированы. steenandreasen.com не несет ответственности за эту информацию. Использование термина в этой книге не должно расцениваться, как воздействие на законность любой торговой марки. Обратите внимание Не пытайтесь использовать код, приведенный в качестве примеров, при тестировании на рабочих станциях. Информация в этой книге приведена только в ознакомительных целях. Автор и сайт steenandreasen.com не несут никакой ответственности за потерю данных или любой другой вред,, полученный в результате использования информации из этой книги. “Спасибо моей дорогой жене Улле (Ulla), и моему сыну Оливеру (Oliver), кто создавал со мной и поддерживал меня во время написания этой книги.” S. A. Благодарности Выражаю благодарность всем, кто прямо или косвенно внесли вклад в содержание этой книги, внося вдохновляющие комментарии и предложения. Отдельная благодарность Ларису Холму (Lars Holm) за его вклад в Приложение Свойств. Полю Капелену (Poul Cappelen) и Улле Бюлвер (Ulla Bjulver) www.photo- art.dk за дизайн. А так же Jens Thrane, Christian Beck, Erik Pedersen, Lars Kjærsgaard, Jim Long, Hanne Paarup, Eric Fisher www.unitederp.com, Craig Brown www.edenbrook.co.uk, Daryl Spires www.avionsystems.co.uk, кто читал, редактировал рукопись и более всего поощрял меня к написанию этой книги. Рецензия на это издание "Стин Андресен (Steen Andreasen) - это превосходный программист по Axapta и технический специалист, а так же терпеливый преподаватель. В этой книге Стин Андресен тщательно разработал для Вас, увлекательное путешествие в мир разработки Axapta. Я настоятельно рекомендую эту книгу, как должную быть у разработчика и опытного и новичка, который хочет сделать карьеру в Axapta Programming. Выражаю вам большую благодарность, Стин Андресен, за ваши усилия по предложению такой хорошо структурированной информации для открытой публикации." С теплыми пожеланиями, Harish Mohanbabu Microsoft Dynamics Ax - MVP http://www.harishm.com/ От переводчиков Много лет моей сознательной жизни прошли в изучении продуктов Microsoft. Иногда вспоминаются времена первых операционных систем Windows 3.1, Windows’ 95. Разработка в среде СУБД SQL прошла наиболее плотно для меня. Теперь разработка Axapta. Счастливый случай свел меня со Стином. Я сразу же, не раздумывая сел за перевод книги. Надеюсь, что мой перевод поможет начинающим разработчикам в освоении продукта. Уверен, что вам будет интересно окунуться в этот мир под названием Axapta. Там много интересного и неизведанного. Теперь правда это уже называется Dynamics Ax. Если у вас возникнет необходимость в контакте со мной, то прошу [email protected] Так же можете ознакомиться с моими публикациями на http://miker-developer.blogspot.com Ржевский Михаил Я занимаюсь разработкой в Dynamics AX чуть более трех лет. За это время очень часто сталкивался с ситуацией, когда молодые разработчики отказываются от работы с этой ERP системой по причине отсутствия хорошей документации по разработке в среде MorphX. Поэтому такие книги, как эта, не только помогают самим разработчикам, но и повышают популярность продуктов Dynamics в целом, за что я особенно благодарен автору. Посетив мой блог по адресу http://kashperuk.blogspot.com, Вы найдете полезные инструменты, советы и статьи по разработке в Dynamics AX. Кашперук Иван MORPHX IT Содержание ПРЕДИСЛОВИЕ ........................................................................................... 15 ВВЕДЕНИЕ ................................................................................................... 17 Почему эта книга важна .............................................................................. 18 Структура книги ............................................................................................ 18 1 ВВЕДЕНИЕ В MORPHX ................................................................... 19 1.1 Репозитарий Прикладных Объектов (AOT) .......................................... 19 Слои .............................................................................................................. 20 Свойства ....................................................................................................... 23 Add-ins ........................................................................................................... 24 Редактор ....................................................................................................... 24 Отладчик ....................................................................................................... 27 Окно сообщения компилятора .................................................................... 29 Импорт и Экспорт ........................................................................................ 30 Сравнение объектов .................................................................................... 32 Обновление кода ......................................................................................... 33 Поиск ............................................................................................................. 34 Infolog ............................................................................................................ 35 Мусорная корзина ........................................................................................ 37 Настройки пользователя ............................................................................. 37 1.2 Проект .......................................................................................................... 41 Изменения в проекте ................................................................................... 41 Типы проектов .............................................................................................. 42 1.3 Резюме ......................................................................................................... 42 2 ВВЕДЕНИЕ В X++ ............................................................................. 43 2.1 Переменные ................................................................................................ 44 2.2 Операторы .................................................................................................. 48 Операторы присваивания ........................................................................... 48 Операторы отношения ................................................................................ 49 Бинарные операторы .................................................................................. 50 2.3 Условные операторы и операторы цикла ............................................ 51 Циклы ............................................................................................................ 51 Условные операторы ................................................................................... 53 Исключительные ситуации ......................................................................... 56 Вспомогательные операторы ..................................................................... 58 2.4 Запросы к базе данных ............................................................................ 59 2.5 Функции ....................................................................................................... 66 © 2007 Steen Andreasen 7 MORPHX IT 2.6 Резюме ......................................................................................................... 67 3 СЛОВАРЬ ДАННЫХ [DATA DICTIONARY] .................................... 69 3.1 Таблицы ....................................................................................................... 69 Компания ...................................................................................................... 70 Прикладные таблицы .................................................................................. 71 Системные таблицы .................................................................................... 77 Поля .............................................................................................................. 78 Группы полей ............................................................................................... 81 Индексы ........................................................................................................ 83 Связи [Отношения] ...................................................................................... 84 Действия при удалении [Delete Actions] .................................................... 86 Методы ......................................................................................................... 88 3.2 Карты соответствия (Maps) ..................................................................... 94 3.3 Представления ........................................................................................... 97 3.4 Расширенные типы данных .................................................................... 98 Расширенный тип данных из нескольких элементов ............................. 101 3.5 Перечислимые типы ............................................................................... 102 3.6 Функциональные ключи......................................................................... 104 3.7 Лицензионные коды................................................................................ 105 3.8 Конфигурационные ключи .................................................................... 105 3.9 Ключи контроля доступа ........................................................................ 107 3.10 Табличные коллекции ............................................................................ 109 3.11 Расширенные возможности использования таблиц ........................ 110 Использование системных классов ......................................................... 110 Внешние базы данных ............................................................................... 111 3.12 Резюме ....................................................................................................... 113 4 МАКРОСЫ ....................................................................................... 115 4.1 Команды макроса .................................................................................... 115 4.2 Определение констант ............................................................................ 116 4.3 Создание макроса.................................................................................... 117 4.4 Резюме ....................................................................................................... 119 5 КЛАССЫ .......................................................................................... 121 8 © 2007 Steen Andreasen MORPHX IT 5.1 Основы класса ......................................................................................... 121 Методы ....................................................................................................... 122 Компоненты класса .................................................................................... 124 Модификаторы ........................................................................................... 127 Передача значений .................................................................................... 133 5.2 AOS ............................................................................................................. 137 Установка места выполнения ................................................................... 138 Объекты для оптимизации ........................................................................ 139 5.3 Структура класса Runbase ..................................................................... 139 Использование структуры класса Runbase ............................................. 140 Диалог ......................................................................................................... 144 5.4 Фундаментальные классы .................................................................... 149 ClassFactory ................................................................................................ 149 Global .......................................................................................................... 150 Info ............................................................................................................... 150 5.5 Системные классы .................................................................................. 150 Object .......................................................................................................... 151 Изменения во время исполнения ............................................................. 151 Args ............................................................................................................. 151 Базовые классы ......................................................................................... 152 Оптимизация операции записи................................................................. 153 Обработка файлов..................................................................................... 153 5.6 Специальное использование классов ................................................ 154 Использование COM ................................................................................. 154 X++ Compiler ............................................................................................... 155 5.7 Резюме ....................................................................................................... 157 6 ФОРМЫ ........................................................................................... 159 6.1 Создание форм ........................................................................................ 159 6.2 Запрос формы .......................................................................................... 162 Объединение источников данных ............................................................ 162 Установка доступа ..................................................................................... 166 6.3 Дизайн ........................................................................................................ 168 Создание дизайна ...................................................................................... 168 Поля в дизайне .......................................................................................... 171 Модификаторы Display и Edit .................................................................... 177 6.4 Методы на форме .................................................................................... 180 Методы формы .......................................................................................... 180 Методы источника данных формы ........................................................... 184 Методы полей источника данных ............................................................. 188 Методы полей формы ............................................................................... 190 Последовательность выполнения методов формы ............................... 190 Переопределение запроса формы .......................................................... 193 Изменение источника данных из X++ ...................................................... 195 © 2007 Steen Andreasen 9 MORPHX IT Построение форм выпадающих списков ................................................. 198 Форма диалога ........................................................................................... 200 6.5 Специальные формы ............................................................................. 202 Вызов определенных методов формы .................................................... 202 Переопределение методов ....................................................................... 203 Общие изменения формы ......................................................................... 206 Цвета ........................................................................................................... 208 6.6 Резюме ....................................................................................................... 209 7 ОТЧЕТЫ........................................................................................... 211 7.1 Мастер отчета ........................................................................................... 211 7.2 Создание отчета ....................................................................................... 211 7.3 Запрос отчета ........................................................................................... 214 7.4 Шаблоны ................................................................................................... 217 Шаблон Отчета .......................................................................................... 217 Шаблон секции ........................................................................................... 220 7.5 Дизайн ........................................................................................................ 220 Создание дизайна ...................................................................................... 220 Авто дизайн ................................................................................................ 223 Генерируемый дизайн ............................................................................... 226 Поля в дизайне .......................................................................................... 226 7.6 Методы Отчета ......................................................................................... 228 Структура RunBase отчета....................................................................... 231 Динамические отчеты ................................................................................ 236 Последовательность методов отчета ...................................................... 238 7.7 Специальные Отчеты ............................................................................. 242 Выполнение отчета из X++ ....................................................................... 242 Использование временных таблиц .......................................................... 243 Подкраска рядов ........................................................................................ 245 Печать отчета, используя Microsoft Word ................................................ 247 7.8 Резюме ....................................................................................................... 250 8 ЗАПРОСЫ ....................................................................................... 251 8.1 Создание запросов .................................................................................. 252 Запрос AOT ................................................................................................ 252 X++ Запрос ................................................................................................. 259 8.2 Запросы в формах и отчетах ................................................................ 261 8.3 Резюме ....................................................................................................... 262 10 © 2007 Steen Andreasen