axapta development training

139
Тренинг по Средствам Разработки

Upload: brobenvick

Post on 14-Oct-2014

516 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Axapta Development Training

Тренинг по Средствам Разработки

Page 2: Axapta Development Training
Page 3: Axapta Development Training

Тренинг по Средствам Разработки

Page 4: Axapta Development Training

NOTICE

This material is for informational purposes only. Microsoft Business Solutions ApS disclaims all warranties and conditions with regard to use of the material for other purposes. Microsoft Business Solutions ApS shall not, at any time, be liable for any special, direct, indirect or consequential damages, whether in an action of contract, negligence or other action arising out of or in connection with the use or performance of the material. This material is subject to change without notice.

According to Danish copyright legislation it is against the law to reproduce any part of this material in any form or by any means without the permission of Microsoft Business Solutions ApS.

The software described is supplied under license and must be used and copied in accordance with the enclosed license terms and conditions.

COPYRIGHT NOTICE

Copyright 2003 Microsoft Business Solutions ApS, Frydenlunds Allé 6, 2950 Vedbaek, Denmark. All rights reserved.

TRADEMARKS

The trademarks referenced herein and marked with either TM or are either trademarks or registered trademarks of Navision a/s or Navision Development a/s. However, the trademarks Microsoft, Windows, Windows NT, SQL Server and BackOffice are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

Any rights not expressly granted herein are reserved.

The trademarks of Navision a/s and Navision Development a/s are listed on this Web site: http://trademarks.navision.com/

The Arial font was used.

Published by Microsoft Business Solutions ApS.

Published in Denmark 2003.

Page 5: Axapta Development Training

СОДЕРЖАНИЕ

УРОК 1

СРЕДСТВА РАЗРАБОТКИ MORPHX............................................................... 1-1

1.1 Обзор ............................................................................................... 1-1

1.2 Сквозной пример ............................................................................ 1-2

1.3 Упражнения ..................................................................................... 1-5

УРОК 2

ЯЗЫК X++ ................................................................................................. 2-1

2.1 Обзор ............................................................................................... 2-1

2.2 Сквозной пример ............................................................................ 2-2

2.3 Упражнения ..................................................................................... 2-3

УРОК 3

МАКРОСЫ .................................................................................................. 3-1

3.1 Обзор ............................................................................................... 3-1

3.2 Упражнения ..................................................................................... 3-2

УРОК 4

ТАБЛИЦЫ .................................................................................................. 4-1

4.1 Обзор ............................................................................................... 4-1

4.2 Сквозной пример ............................................................................ 4-2

4.3 Упражнения ..................................................................................... 4-4

Page 6: Axapta Development Training

УРОК 5

ФОРМЫ ..................................................................................................... 5-1

5.1 Обзор ............................................................................................... 5-2

5.2 Сквозной пример ............................................................................ 5-3

5.3 Упражнения ................................................................................... 5-10

УРОК 6

ЗАПРОСЫ .................................................................................................. 6-1

6.1 Обзор ............................................................................................... 6-2

6.2 Сквозной пример ............................................................................ 6-3

6.3 Упражнения ..................................................................................... 6-4

УРОК 7

КЛАССЫ..................................................................................................... 7-1

7.1 Обзор ............................................................................................... 7-2

7.2 Сквозной пример ............................................................................ 7-3

7.3 Упражнения ..................................................................................... 7-4

УРОК 8

МЕНЮ И ПУНКТЫ МЕНЮ .............................................................................. 8-1

8.1 Обзор ............................................................................................... 8-2

8.2 Сквозной пример ............................................................................ 8-3

8.3 Упражнения ..................................................................................... 8-4

УРОК 9

ОТЧЕТЫ..................................................................................................... 9-1

9.1 Обзор ............................................................................................... 9-2

Page 7: Axapta Development Training

9.2 Сквозной пример ............................................................................ 9-3

9.3 Упражнения ..................................................................................... 9-4

УРОК 10

ВНЕШНИЕ ПРИЛОЖЕНИЯ........................................................................... 10-1

10.1 Обзор ............................................................................................. 10-2

10.2 Упражнения ................................................................................... 10-3

УРОК 11

ФУНКЦИОНАЛЬНЫЕ КЛЮЧИ ...................................................................... 11-1

11.1 Обзор ............................................................................................. 11-2

11.2 Сквозной пример .......................................................................... 11-3

11.3 Упражнения ................................................................................... 11-4

ВОПРОСЫ К ТРЕНИНГУ

12.1 Вопросы ......................................................................................... 12-2

Page 8: Axapta Development Training

Урок 1

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

После изучения урока Вы сможете:

Работать с репозитарием прикладных объектов

Создавать новые проекты

Проводить экспорт и импорт объектов приложения

Сравнивать объекты, находящиеся в разных прикладных слоях

Моделировать с MorphXplorer

Создавать новые меточные файлы и метки

DocID: Type DocID here

Page 9: Axapta Development Training

Средства разработки MorphX Страница 1-1

1.1 ОБЗОР

В данном уроке Вы познакомитесь со встроенной в Axapta средой разработки прикладных объектов MorphX.

Система Аксапта является динамичной и гибкой системой, ориентированной на оперативную кастомизацию и развитие функциональных возможностей. Достигнуто это с помощью интегрированных в систему средств разработки и использованием объектно-ориентированной технологии. Инструментальные средства среды позволяют реализовать как общие требования всей компании, так и индивидуальные запросы конечных пользователей.

Среда разработки MorphX включает средства проектирования, редактирования, отладки и компиляции. MorphX поддерживает технологию DRAG and DROP, многоязыковую поддержку пользовательского интерфейса, набор графических дизайнеров и мастеров для автоматического создания форм и отчетов. Она специально создана для разработки финансово-управленческих систем; до 80% автоматически создаваемых прикладных компонентов не требуют последующего изменения.

В основе среды разработки MorphX лежит объектно-ориентрованная технология. Объектно-ориентированный подход к проектированию и программированию позволяет повысить надежность системы и ускорить ее разработку за счет сокращения исходного кода.

Все компоненты приложения собраны в единой древовидной структуре – репозитарии прикладных объектов, Application Object Tree (AOT). Вы разворачиваете «ветви» этой структуры, быстро получая доступ к отдельным программным элементам. Вся разработка приложения заключается в выполнении следующих операций над репозитарием прикладных объектов:

1. Создание типов данных и таблиц в словаре Data dictionary

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

функциональности приложения Кроме того, из репозитария прикладных объектов организован удобный доступ к мощной контекстной помощи для разработчиков, которая содержит детальное описание ее свойств, примеры кода, стандарты и рекомендации.

DocID: Type DocID here

Page 10: Axapta Development Training

Средства разработки MorphX Страница 1-2

1.2 СКВОЗНОЙ ПРИМЕР

Данный урок, в рамках сквозного примера, включает описание требований к информационной системе управления ремонтами и выполнение упражнений 1 и 8.

В упражнении 1 создается проект, где в последующем будут собраны объекты приложения, реализующие модуль Управление ремонтами.

Упражнение 8 создает меточный файл axREPru.ald для хранения текстового интерфейса модуля.

1.2.1 Требования к модулю Управление ремонтами

Данная система должна обеспечивать автоматизацию следующих задач:

• учет оборудования, его состояния и характеристик (в т.ч. наработки), учет состояния зданий и сооружений;

• учет всех видов ремонтных и профилактических работ, монтажа, демонтажа и модернизации;

• планирование ремонтных работ;

• контроль за ходом выполнения ремонтных работ.

Чтобы обеспечить сопоставимость информации, возникающей в различных точках информационной системы, и обеспечить возможность составления сводных по Компании отчетов, она должна оперировать едиными справочниками, базовыми из которых являются справочники:

• оборудования;

• групп оборудования со счетами разноски в Главную книгу;

• видов ремонтных работ с нормативами и счетами разноски в ГК.

В целях поддержания целостности и полноты информации информационная система должна иметь встроенный контроль правильности, полноты и непротиворечивости вносимых в нее сведений. Эти функции должны быть реализованы путем системы предупреждений и напоминаний, а также запретов на ввод заведомо некорректных сведений.

DocID: Type DocID here

Page 11: Axapta Development Training

Средства разработки MorphX Страница 1-3

Ниже представлен краткий перечень задач по разработке модуля Управление ремонтами в предполагаемом порядке реализации.

№ Приоритет Краткое описание функции

1 Высший 0 Создание справочника групп оборудования с настройкой разноски, справочника видов работ с нормативами (дневной ставкой) на выполнение работ и разноской

2 Высший 0 Создание таблицы оборудования и ремонтов, формы Оборудование, в которой ведется справочник оборудования и перечень ремонтов по каждому

3 Высокий 1 Периодическая функция проводки затрат по ремонтам в Главную Книгу согласно настройкам разноски

4 Средний 2 Отчет Ремонты, в котором выводится список оборудования и ремонтов по каждому

Активизация системы управления ремонтами должна осуществляться посредством вызова пунктов меню. Дизайн меню должен быть таким:

Рассмотрим общую процедуру работы в модуле Управление ремонтами:

DocID: Type DocID here

Page 12: Axapta Development Training

Средства разработки MorphX Страница 1-4

№ Действие пользователя

1 Перед началом работы с модулем пользователь создает справочники групп оборудования и нормативов работ

2 Далее в форме Оборудование оператор заводит все инвентарное оборудование, находящееся на балансе предприятия

3 В рамках ежедневной работы в модуле оператор регистрирует в форме Оборудование информацию о планируемых ремонтах. По мере начала выполнения ремонтных работ в записях о ремонтах меняется статус

4 На периодической основе бухгалтер предприятия запускает периодическую функцию Разноска в Главную Книгу, которая обрабатывает данные о ремонтах и переносит информацию о них в денежном выражении в Главную Книгу

DocID: Type DocID here

Page 13: Axapta Development Training

Средства разработки MorphX Страница 1-5

1.3 УПРАЖНЕНИЯ

Упражнение 1 Создание проекта RRepairModule

1 Откройте раздел проектов среды разработки Аксапта MorphX

(Файл/Открыть/Проект или по специальной кнопке на панели инструментов).

2 В открывшейся форме Projects на узле Private щелкните правой кнопкой мыши и выберите пункт «Создать новый проект». В списке проектов появиться новая строчка Project1.

3 Откройте форму нового проекта Project1 двойным нажатием левой кнопки мышки.

4 Переименуйте название проекта в RRepairModule, вызвав окно свойств проекта.

DocID: Type DocID here

Page 14: Axapta Development Training

Средства разработки MorphX Страница 1-6

5 Создайте специальный узел-группу для хранения форм. Для этого нажмите правой кнопкой мышки на узле с названием проекта и, в предложенном системой списке, выберите пункт Создать/Group. В окне свойств созданной группы определите название и тип группы:

Свойство Значение

Name Forms

ProjectGroupType Forms

GroupMask -

6 Аналогично создайте группы для хранения таблиц Tables, расширенных типов данных Extended Data Types, типов перечислений Base Enums, функциональных ключей Feature Keys, классов Classes, запросов Queryes, отчетов Report, меню Menus, пунктов меню MenuItems, заданий Jobs.

DocID: Type DocID here

Page 15: Axapta Development Training

Средства разработки MorphX Страница 1-7

Упражнение 2 Сбор объектов модуля Основные средства в одном проекте

1 Создайте в узле Private новый проект RAsset (см. Упражнение

1).

2 В форме проекта на панели инструментов нажмите кнопку Фильтрация записей. В открывшейся диалоговой панели Фильтр по проектам установите группировку по АОТ и нажмите кнопку Выбрать.

3 В открывшейся форме определите критерий выборки объектов приложения RAsset* по полю Наименование. Все объекты приложения, реализующие модуль Основные средства, имеют в своем наименовании префикс RAsset.

DocID: Type DocID here

Page 16: Axapta Development Training

Средства разработки MorphX Страница 1-8

Упражнение 3 Сравнение модификаций объекта, находящихся в разных слоях

1 Откройте репозитарий прикладных объектов

(Файл/Открыть/Репозитарий прикладных объектов или по специальной кнопке на панели инструментов).

2 Найдите объект приложения (таблицу, класс, форму), имеющий модификации в нескольких слоях. В качестве примера, можно взять таблицу LedgerTable.

3 Нажмите правую кнопку мышки в узле наименования объекта и выпадающем меню выберите пункт Add-Ins/Сравнить.

4 В открывшейся диалоговой панели Сравнение, путем выбора сравниваемых слоев в верхних полях формы, произведите сравнение модификаций объекта в слоях gls и dis.

5 Для получения результата сравнения нажмите кнопку Сравнить.

Упражнение 4 Экспорт из репозитария прикладных объектов

1 Откройте репозитарий прикладных объектов

DocID: Type DocID here

Page 17: Axapta Development Training

Средства разработки MorphX Страница 1-9

(Файл/Открыть/Репозитарий прикладных объектов или по специальной кнопке на панели инструментов).

2 Выделите один или несколько объектов репозитария.

3 Нажмите правую кнопку мышки и в выпадающем меню выберите пункт Экспорт.

4 В открывшейся диалоговой панели Экспорт укажите имя файла и нажмите кнопку OK.

5 Проверьте наличие файла экспорта в указанной директории.

Упражнение 5 Экспорт объектов, входящих в проект

1 Откройте проект RAsset (см. Упражнение 2).

2 Кликните правой кнопкой мышки на узле с названием проекта и произведите экспорт объектов проекта (см. Упражнение 3).

Упражнение 6 Импорт объектов приложения

1 Откройте репозитарий прикладных объектов или форму

проектов.

2 Выведите на экран диалоговую панель Импорта, для этого

DocID: Type DocID here

Page 18: Axapta Development Training

Средства разработки MorphX Страница 1-10

нажмите на панели инструментов формы репозитария или проектов кнопку Импорт, либо пункт Импорт в системном меню Команда.

3 Введите файл с импортируемыми объектами приложения в поле Имя файла. В нижней части панели будет отображена структура импортируемых объектов.

4 Нажмите кнопку OK.

Упражнение 7 Проектирование модели двух связанных таблиц

1. В системном меню по пути Сервис/Разработка/Визуальное

проектирование с MorphXplorer откройте форму визуального проектировщика MorphXplorer.

2. Постройте модель по двум связанным таблицам LedgerTable

DocID: Type DocID here

Page 19: Axapta Development Training

Средства разработки MorphX Страница 1-11

и LedgerTrans.

3. Таблица LedgerTable буксируется в проектировщик мышкой из репозитария прикладных объектов. Для этого необходимо, удерживая левую кнопку мышки, перетащить таблицу LedgerTable из узла Tables репозитария прикладных объектов в форму визуального проектировщика MorphXplorer.

4. В форме проектировщика кликнуть правой кнопкой мышки на модели таблицы LedgerTable, в выпадающем списке выбрать пункт Связи/1:n/LedgerTrans и создать модель таблицы LedgerTrans.

5. Обратите внимание система создала связь между таблицами LedgerTable и LedgerTrans, как один ко многим по полю AccountNum.

Упражнение 8 Создание нового меточного файла

1. Для создания новых меточных файлов используется мастер

меточных файлов (Системное меню/Сервис/Разработка/Мастера/Мастер меточных файлов).

2. На первом шаге мастера установите параметр Создать

DocID: Type DocID here

Page 20: Axapta Development Training

Средства разработки MorphX Страница 1-12

новый код меточного файла.

3. На следующем шаге мастера задайте код меточного файла REP.

4. Выйдите из системы. После того, как система создаст файл axREPen-us.ald (или axREPda.ald) в каталоге ..\Appl\Standard, скопируйте его в axREPru.ald.

DocID: Type DocID here

Page 21: Axapta Development Training

Средства разработки MorphX Страница 1-13

DocID: Type DocID here

Page 22: Axapta Development Training

Урок 2

Язык X++

После изучения урока Вы сможете:

Работать со встроенным текстовым редактором

Создавать новые задания Jobs в репозитарии прикладных объектов

Работать с различными типами данных языка X++

Обрабатывать исключительные ситуации

Создавать в языке X++ операции цикла, условий и запросов к БД

DocID: Type DocID here

Page 23: Axapta Development Training

Язык X++ Страница 2-1

2.1 ОБЗОР

В данном уроке рассматривается объектно-ориентированный язык X++.

Объектно-ориентированный язык программирования X++ вобрал лучшее от существующих систем программирования - удобный синтаксис Java, мощь языка C++ и гибкие средства доступа к данным SQL. Язык X++ напоминает C++ и Java настолько, насколько он выглядит знакомым. В языке X++ удалены ненужные с точки зрения Аксапта сложности этих языков. Так как MorphX - платформа для разработки сложных систем бизнеса, бухгалтерского учета и деловых систем управления, язык X++ включает в себя большое количество команд SQL. В то же время X++ сохраняет многие объектно-ориентированные черты и по "виду, и восприятию" является языком типа C++, Java, и SQL.

Одна из характерных особенностей языка X++ - это его простота, на нем можно начать программировать без интенсивного обучения. Фундаментальные концепции языка X++ могут быть схвачены быстро и программисты могут производительно программировать с самого начала.

DocID: Type DocID here

Page 24: Axapta Development Training

Язык X++ Страница 2-2

2.2 СКВОЗНОЙ ПРИМЕР

Данный урок, в рамках сквозного примера, включает иерархическую модель расширенных и перечислимых типов данных и выполнение упражнений 11 и 12.

В упражнении 11 и 12 создаются расширенные и перечислимые типы, используемые в модуле Управление ремонтами.

2.2.1 Иерархия основных расширенных и перечислимых типов данных

RRepRate<<EDT>>

AmountMST<<EDT>>

moneyMST<<EDT>>

SysGroup<<EDT>>

RRepRepairTypeId<<EDT>>

RRepEquipmentGroupId<<EDT>>

Real<<EDT>>

String<<EDT>>

Num<<EDT>>

RRepEquipmentId<<EDT>>

BaseEnum

RRepRepairStatusEstimatedStartedFinished

DocID: Type DocID here

Page 25: Axapta Development Training

Язык X++ Страница 2-3

2.3 УПРАЖНЕНИЯ

Упражнение 9 Объявление скалярных типов данных

1 Откройте узел заданий Jobs репозитария прикладных

объектов.

2 Для создания нового задания Jobs нажмите на правую кнопку мышки на узле Jobs и в выпадающем меню выберите пункт New Jobs. Система откроет текстовый редактор с объявленным заданием Job1.

3 Заполните тело задания Job1 следующими командами языка X++:

4 Проведите компиляцию созданного кода (F7 или кнопка Compile на панели инструментов) и, при отсутствии ошибок, выполните задание (F5 или кнопка GO на панели инструментов).

DocID: Type DocID here

Page 26: Axapta Development Training

Язык X++ Страница 2-4

Упражнение 10 Объявление составных типов данных

1 Заполните тело нового задания Job2 следующими командами

языка X++:

2 Проведите компиляцию созданного кода (F7 или кнопка Compile на панели инструментов) и, при отсутствии ошибок, выполните задание (F5 или кнопка GO на панели инструментов).

Упражнение 11 Создание расширенных типов данных (РТД)

1 Откройте узел расширенных типов данных Extended Data

Types репозитария прикладных объектов.

2 Для создания нового расширенного типа данных нажмите на правую кнопку мышки на узле Extended Data Types и в выпадающем меню выберите пункт New. Система предложит выбор типа создаваемого расширенного типа данных.

DocID: Type DocID here

Page 27: Axapta Development Training

Язык X++ Страница 2-5

Выберите тип String.

3 Задайте следующие свойства для нового расширенного типа данных:

4 Для задания свойства Label использована новая метка @REP1 меточного файла REP (см. Упражнение 8). Поиск существующих меток и создание новых производится в специальной форме Поиск меток. Вызовите форму на экран, нажатием на кнопку в правой части поля свойства Label.

5 В форме Поиск меток, нажатием на комбинацию клавиш Ctrl-N, создайте новую метку @REP1 в меточном файле REP. Текущий меточный файл задается на закладке Расширенно в поле Код меточного файла.

6 Определите русское (код языка Ru) значение метки - Оборудование. Код языка предварительно устанавливается в поле Язык.

7 В правой части формы Поиск меток нажмите кнопку

DocID: Type DocID here

Page 28: Axapta Development Training

Язык X++ Страница 2-6

Вставить метку для задания свойства Label расширенного типа данных значением созданной метки.

8 Аналогичным образом создайте два расширенных типа данных RrepEquipmentGroupID и RrepRepairTypeID на основе базового типа String, один РТД RRepDuration на основе Integer и один РТД RrepRate на основе Real. Определите следующие свойства:

Расширенный тип данных

Lablel Значение метки Extends

RrepEquipmentGroupID @REP2 Группа оборудования

SysGroup

RrepRepairTypeID @REP3 Вид работ SysGroup

RRepDuration @SYS52550 Продолжительность -

RrepRate @REP4 Ставка AmountCur

Остальные свойства определены системой по умолчанию.

DocID: Type DocID here

Page 29: Axapta Development Training

Язык X++ Страница 2-7

9 Перенесите все созданные расширенные типы данных в соответствующую группу проекта RrepairModule (см. Упраженние 1).

Упражнение 12 Создание перечислимого типа данных

1 Откройте узел заданий Base Enums репозитария прикладных

объектов.

2 Для создания нового перечислимого типа данных нажмите на правую кнопку мышки на узле Base Enums и в выпадающем меню выберите пункт Создать Base Enums.

3 Определите следующие свойства для нового перечислимого типа:

Свойства Значение

Name RRepRepairStatus

Label @REP5 (Статус)

Остальные свойства определены системой по умолчанию.

DocID: Type DocID here

Page 30: Axapta Development Training

Язык X++ Страница 2-8

4 Определите перечень принимаемых значений. Для чего нажмите правой кнопкой мышки на созданном перечислимом типе данных и в предложенном списке выберите пункт Создать Element . Создайте три таких элемента.

5 Определите следующие свойства элементов перечислимого типа данных:

Элемент Name Label EnumValue

Element1 Estimated @REP6 (Запланировано) 0

Element2 Started @REP7 (Начато) 1

Element3 Finished @REP8 (Завершено) 2

6 Перенесите созданный перечислимый тип данных в соответствующую группу проекта RrepairModule (см. Упраженние 1).

Упражнение 13 Основные операторы языка X++

1 Создайте следующее задание Job3 и наберите в нем код:

DocID: Type DocID here

Page 31: Axapta Development Training

Язык X++ Страница 2-9

2 Проведите компиляцию набранного кода (F7 или кнопка Compile на панели инструментов) и, при отсутствии ошибок, выполните задание (F5 или кнопка GO на панели инструментов).

Упражнение 14 Создание запросов SQL

1 Создайте следующее задание Job4 и наберите в нем код:

DocID: Type DocID here

Page 32: Axapta Development Training

Язык X++ Страница 2-10

2 Проведите компиляцию набранного кода (F7 или кнопка Compile на панели инструментов) и, при отсутствии ошибок, выполните задание (F5 или кнопка GO на панели инструментов).

DocID: Type DocID here

Page 33: Axapta Development Training

Урок 3

Макросы

После изучения урока Вы сможете:

Создавать в репозитарии прикладных объектов новые макробиблиотеки

Объявлять и использовать в коде X++ макросы

DocID: Type DocID here

Page 34: Axapta Development Training

Макросы Страница 3-1

3.1 ОБЗОР

В данном уроке рассматриваются приемы работы с макросами в среде разработки MorphX.

Назначением макросов является возможность повторного использования операторов кода языка X++ в произвольных местах программы.

DocID: Type DocID here

Page 35: Axapta Development Training

Макросы Страница 3-2

3.2 УПРАЖНЕНИЯ

Упражнение 15 Определение макроконструкций в языке X++

1 Создайте новое задание Job5 и наберите в нем код:

2 Выполните задание (F5 или кнопка GO на панели инструментов).

Упражнение 16 Определение макроконстант

1 Создайте новое задание Job6 и наберите в нем код:

DocID: Type DocID here

Page 36: Axapta Development Training

Макросы Страница 3-3

2 Выполните задание (F5 или кнопка GO на панели инструментов).

3 Анализируя полученный результат, помните, что определение значений макросов происходит во время компиляции.

Упражнение 17 Создание и определение макробиблиотек

1 Откройте узел макробиблиотек Macros репозитария

прикладных объектов.

2 Для создания новой макробиблиотеки нажмите на правую кнопку мышки на узле Macros и в выпадающем меню выберите пункт Создать Macro.

3 В теле созданной макробиблиотеки Macro1 определите следующую макроконстанту:

DocID: Type DocID here

Page 37: Axapta Development Training

Макросы Страница 3-4

4 Дополните задание Job6, включив в него обработку макросов из созданной макробиблиотеки:

5 Выполните задание (F5 или кнопка GO на панели инструментов).

DocID: Type DocID here

Page 38: Axapta Development Training

Урок 4

Таблицы

После изучения урока Вы сможете:

Создавать новые таблицы в репозитарии прикладных объектов

Создавать в таблицах поля, группы полей, индексы, связи к другим таблицам и действия при удалении

Перегружать системные и создавать новые пользовательские методы таблиц

Работать с табличными переменными в коде X++

DocID: Type DocID here

Page 39: Axapta Development Training

Таблицы Страница 4-1

4.1 ОБЗОР

В данном уроке рассматриваются упражнения для создания таблиц и их компонентов.

Таблицы – фундаментальные элементы функциональности. Состоят из записей. Записи состоят из полей. Набор полей в записях одинаковый, поэтому записи и поля еще называют строками и столбцами. Значение столбца также используется в контексте, где важно не одно значение в поле определенной записи, а все возможные (или существующие) значения во всех полях столбца. Каждое поле содержит наименьший фрагмент информации определенного типа. Поля могут быть простых типов, но предпочтительно пользоваться расширенными типами.

Все таблицы, созданные в MorphX, могут рассматриваться как определения классов. Записи в таком случае рассматриваются как объекты. Есть возможность ссылаться к полям записей, но перед этим необходимо определить так называемые табличные переменные. Таким образом, работа с полями таблицы организуется как последовательная обработка записей. Для создания табличной переменной необходимо создать новое или использовать существующее определение таблицы.

DocID: Type DocID here

Page 40: Axapta Development Training

Таблицы Страница 4-2

4.2 СКВОЗНОЙ ПРИМЕР

Данный урок, в рамках сквозного примера, включает модель данных модуля Управление ремонтами и выполнение упражнений 18-23.

В упражнении 18 создаются таблицы RrepRepairType, RrepEquipmentGroup, RrepEquipmentTable и RrepRepairLine для хранения данных модуля. Таблицы RrepRepairType и RrepEquipmentGroup являются таблицами-справочниками соответственно видов ремонтных работ и групп оборудования. В таблице RrepEquipmentTable задается справочник всего оборудования, находящегося на балансе предприятия. Перечень запланированных и выполненных ремонтных работ по оборудованию ведется в таблице RrepRepairLine.

Выполнение упражнений 19 и 20 позволит создать связи и действия при удалении между таблицами. Связи организуются созданием отношений на расширенных типах данных, используемых в таблицах-справочниках.

В упражнениях 21 создается пользовательский метод find для поиска строк таблицы RrepRepairType по уникальному ключу.

Метод duration упражнения 22 рассчитывает количество дней, потребовавшихся для проведения ремонта оборудования.

В упражнении 23 перекрывается системный метод initValue для инициализации некоторых значений полей по умолчанию при создании новых записей в таблице RrepRepairLine.

DocID: Type DocID here

Page 41: Axapta Development Training

Таблицы Страница 4-3

4.2.1 Физическая модель данных в формате UML

Обратите внимание: после двоеточия указан расширенный тип данных поля.

RRepEquipmentGroupEquipmentGroupId : RRepEquipmentGroupIdDescription : Descripti onAccountNum : LedgerAccount

RRepEquipmentTableEquipmentId : RRepEquipmentIdDescription : Descripti onEquipmentGroupId : RRepEquipmentGroupId

<<table>>

10..* 10..*

RRepRepairTypeRepai rTypeId : RRepRepairTypeIdDescription : Descripti onRate : RRepRateAccountNum : LedgerAccount

RRepRepairLineEquipmentId : RRepEquipmentIdRepairTypeId : RRepRepairTypeIdRate : RRepRateWorkerId : EmplIdStatus : RRepRepairStatusNote : NotesStartDate : FromDateEstimatedDate : TransDateFinishDate : ToDatePosted : NoYes

duration()

0..*

1

0..*

1

10..* 10..*

DocID: Type DocID here

Page 42: Axapta Development Training

Таблицы Страница 4-4

4.3 УПРАЖНЕНИЯ

Упражнение 18 Создание таблиц и их компонентов

1 Откройте узел таблиц Tables репозитария прикладных

объектов.

2 Для создания новой таблицы нажмите правой кнопкой мышки на узле Tables и в выпадающем меню выберите пункт Создать/Table.

3 Вызовите на экран окно свойств созданной таблицы. Для этого нажмите правой кнопкой мышки на узле с наименованием таблицы и в выпадающем списке выберите пункт Свойства (Окно свойств выделенного объекта репозитария можно также вызвать горячей клавишей Alt+Enter или нажатием кнопки

на панели инструментов).

4 Установите следующие свойства

Свойства Значение

Name RRepRepairType

Label @REP9 (Виды ремонтных работ)

CasheLookup EntireTable

TableGroup Group

Остальные свойства определены системой по умолчанию.

DocID: Type DocID here

Page 43: Axapta Development Training

Таблицы Страница 4-5

5 В узле Fields создайте три поля таблицы типа String (Field1, Field2, Field3) и одно поле типа Real (Field4). Для создания полей нажмите правой кнопкой мышки на компоненте таблицы Fields и в выпадающем меню выберите пункт Создать/тип поля.

6 Определите следующие свойства для созданных полей:

Свойства Значение

Поле Field1 тип String

Name RepairTypeID

Mandatory Yes

AllowEdit No

ExtendedDataType RRepRepairTypeID

DocID: Type DocID here

Page 44: Axapta Development Training

Таблицы Страница 4-6

Поле Field2 тип String

Name Description

ExtendedDataType Description

Поле Field3 тип String

Name AccountNum

ExtendedDataType LedgerAccount

Поле Field4 тип Real

Name Rate

ExtendedDataType RrepRate

7 В узле Field Groups создайте три группы полей со следующими характеристиками:

Свойства Значение

Группа полей Group1

Name @REP4 (Ставка)

Содержит поля Rate

Группа полей Group2

Name @SYS5711 (Идентификация)

Содержит поля RepairTypeID, Description

Группа полей Group3

Name @SYS7084 (Кредит)

Содержит поля AccountNum

8 В узле Indexes создайте один уникальный индекс со свойствами:

Свойства Значение

Name RepairTypeIDX

DocID: Type DocID here

Page 45: Axapta Development Training

Таблицы Страница 4-7

AllowDuplicates No

Содержит поля RepairTypeID

9 После создания полей и индексов можно доопределить некоторые свойства таблицы, а именно:

Свойства Значение

TitleField1 RepairTypeID

TitleField2 Description

PrimaryIndex RepairTypeIDX

ClasterIndex RepairTypeIDX

10 Аналогично создайте таблицы RrepEquipmentGroup,

DocID: Type DocID here

Page 46: Axapta Development Training

Таблицы Страница 4-8

RrepEquipmentTable, RrepRepairLine со следующим набором свойств и компонентов:

Свойства Значение

Таблица RrepEquipmentGroup

Name RRepEquipmentGroup

Label @REP2 (Группа оборудования)

TitleField1 EquipmentGroupID

TitleField2 Description

CasheLookup EntireTable

TableGroup Group

PrimaryIndex EquipmentGroupIDX

ClasterIndex EquipmentGroupIDX

Поле Field1 тип String

Name EquipmentGroupID

Mandatory Yes

AllowEdit No

ExtendedDataType RrepEquipmentGroupID

Поле Field2 тип String

Name Description

ExtendedDataType Description

Поле Field3 тип String

Name AccountNum

ExtendedDataType LedgerAccount

Группа полей Group1

Name @SYS5711 (Идентификация)

Содержит поля EquipmentGroupID, Description

DocID: Type DocID here

Page 47: Axapta Development Training

Таблицы Страница 4-9

Группа полей Group2

Name @SYS9512 (Дебет)

Содержит поля AccountNum

Индекс Index1

Name EquipmentGroupIDX

AllowDuplicates No

Содержит поля EquipmentGroupID

Таблица RrepEquipmentTable

Name RrepEquipmentTable

Label @REP10 (Список оборудования)

TitleField1 EquipmentID

TitleField2 Description

CasheLookup Found

TableGroup WorksheetHeader

PrimaryIndex EquipmentIdx

ClasterIndex EquipmentIdx

Поле Field1 тип String

Name EquipmentID

Mandatory Yes

AllowEdit No

ExtendedDataType RRepEquipmentID

Поле Field2 тип String

Name Description

ExtendedDataType Description

Поле Field3 тип String

Name EquipmentGroupID

DocID: Type DocID here

Page 48: Axapta Development Training

Таблицы Страница 4-10

Mandatory Yes

ExtendedDataType RrepEquipmentGroupID

Группа полей Group1

Name @SYS5711 (Идентификация)

Содержит поля EquipmentID, Description, EquipmentGroupID

Индекс Index1

Name EquipmentIdx

AllowDuplicates No

Содержит поля EquipmentID

Таблица RrepRepairLine

Name RrepRepairLine

Label @REP11 (Ремонтные работы)

TitleField1 EquipmentID

TitleField2 RepairTypeID

CasheLookup NotInTTS

TableGroup WorksheetLine

PrimaryIndex -

ClasterIndex EquipmentTypeIdx

Поле Field1 тип String

Name EquipmentID

Mandatory Yes

AllowEdit No

ExtendedDataType RRepEquipmentID

Поле Field2 тип String

Name Voucher

DocID: Type DocID here

Page 49: Axapta Development Training

Таблицы Страница 4-11

ExtendedDataType Voucher

Поле Field3 тип String

Name WorkerId

Label @REP12 (Исполнитель)

ExtendedDataType EmplId

Поле Field4 тип String

Name Note

ExtendedDataType Notes

Поле Field5 тип Date

Name StartDate

AllowEditOnCreate No

AllowEdit No

ExtendedDataType FromDate

Поле Field6 тип Date

Name EstimatedDate

Label @REP13 (Запланированная дата)

ExtendedDataType TransDate

Поле Field7 тип Date

Name FinishDate

AllowEditOnCreate No

AllowEdit No

ExtendedDataType ToDate

Поле Field8 тип Enum

Name Posted

Label @SYS1711 (Разнесен)

AllowEdit No

DocID: Type DocID here

Page 50: Axapta Development Training

Таблицы Страница 4-12

AllowEditOnCreate No

EnumType NoYes

Поле Field9 тип String

Name RepairTypeID

Mandatory Yes

AllowEdit No

ExtendedDataType RRepRepairTypeID

Поле Field10 тип Real

Name Rate

ExtendedDataType RrepRate

Поле Field11 тип Enum

Name RepairStatus

Label @REP5 (Статус)

AllowEdit No

AllowEditOnCreate No

EnumType RRepRepairStatus

Группа полей Group1

Name @SYS5711 (Идентификация)

Содержит поля EquipmentID, RepairTypeID, Posted

Группа полей Group2

Name @SYS7402 (Дата)

Содержит поля EstimatedDate, StartDate, FinishDate

Группа полей Group3

Name @SYS43 (Примечание)

Содержит поля Note

Группа полей Group4

DocID: Type DocID here

Page 51: Axapta Development Training

Таблицы Страница 4-13

Name @SYS25532 (Статус)

Содержит поля RepairStatus, WorkerId

Индекс Index1

Name EquipmentTypeIdx

AllowDuplicates Yes

Содержит поля EquipmentID, RepairTypeID

11 Перенесите созданные таблицы в соответствующую группу проекта RrepairModule (см. Упражнение 1).

Упражнение 19 Создание отношений на расширенных типах данных

1. Откройте узел, содержащий расширенные типы данных,

проекта RrepairModule.

2. В узле Relations расширенного типа данных RRepRepairTypeID создайте отношение к таблице RrepRepairType по полю RepairTypeID. Для этого нажмите правой кнопкой мышки на узле Relations и в выпадающем списке выберите пункт Создать\Нормально.

3. Определите следующие свойства для нового отношения:

4. Аналогично для расширенных типов данных RrepEquipmentGroupID и RRepEquipmentID соответственно создайте отношения к таблицам RRepEquipmentGroup и RrepEquipmentTable по полям EquipmentGroupID и

DocID: Type DocID here

Page 52: Axapta Development Training

Таблицы Страница 4-14

EquipmentID.

Упражнение 20 Определение действий при удалении

1 Откройте узел, содержащий таблицы, проекта RrepairModule. 2 В узле DeleteActions таблицы RrepEquipmentTable создайте

действие при удалении по отношению к таблице RRepRepairLine. Для этого нажмите правой кнопкой мышки на узле DeleteActions и в выпадающем списке выберите пункт Создать DeleteAction.

3 Определите следующие свойства для созданного действия при удалении:

DocID: Type DocID here

Page 53: Axapta Development Training

Таблицы Страница 4-15

Упражнение 21 Создание пользовательских методов на таблицах

1 Откройте узел, содержащий таблицы, проекта RrepairModule. 2 В узле Methods таблицы RRepRepairType создайте

пользовательский метод find для поиска строк таблицы по уникальному ключу. Для этого нажмите правой кнопкой мышки на узле Methods и в выпадающем списке выберите пункт Создать Method.

3 В теле метода наберите следующий код:

4 Сохраните (кнопка на панели инструментов редактора) и откомпилируйте созданный метод таблицы (F7 или кнопка

).

Упражнение 22 Создание display-методов на таблицах

1 Откройте узел, содержащий таблицы, проекта RrepairModule. 2 В узле Methods таблицы RrepRepairLine создайте display-

DocID: Type DocID here

Page 54: Axapta Development Training

Таблицы Страница 4-16

метод duration для отображения в полях форм и отчетов продолжительности ремонтных работ. Для этого нажмите правой кнопкой мышки на узле Methods и в выпадающем списке выберите пункт Создать Method.

3 В теле метода наберите следующий код:

4 Сохраните (кнопка на панели инструментов редактора) и откомпилируйте созданный метод таблицы (F7 или кнопка

).

5 Откройте узел групп полей FieldGroups таблицы RrepRepairLine и мышкой перетащите созданный display-метод в группу полей Дата.

6 Сохраните проделанные изменения (кнопка на панели инструментов формы проекта).

Упражнение 23 Перекрытие системных методов таблиц

1 Перекройте системный метод initValue таблицы

RrepRepairLine для инициализации некоторых значений полей по умолчанию. Для этого нажмите правой кнопкой мышки на узле Methods и в выпадающем списке выберите пункт Перекрыть метод\initValue.

2 В теле метода наберите следующий код:

DocID: Type DocID here

Page 55: Axapta Development Training

Таблицы Страница 4-17

3 Сохраните (кнопка на панели инструментов редактора) и откомпилируйте созданный метод таблицы (F7 или кнопка

).

DocID: Type DocID here

Page 56: Axapta Development Training

Урок 5

Формы

После изучения урока Вы сможете:

Создавать новые формы в репозитарии прикладных объектов

Задавать в формах источники данных, редактировать дизайн

Работать с визуальным редактор форм

Перегружать системные и создавать новые пользовательские методы форм

Открывать формы из репозитария прикладных объектов и проектов

DocID: Type DocID here

Page 57: Axapta Development Training

Формы Страница 5-2

5.1 ОБЗОР

В данном уроке рассматривается работа с формами среды разработки MorphX.

Форма состоит из источников данных, дизайна и методов, которые разработчик перекрывает или создает. Источник данных формы представляет собой список источников данных, каждый из которых связан с конкретной таблицей БД Axapta. При этом как весь источник данных, так и каждое поле источника данных могут содержать методы дополнительной обработки событий на форме. В случае нескольких источников данных формы между отдельными источниками можно использовать связь, определенную в узлах отношений таблиц. Дизайн – представляет собой вид формы и в большинстве случаев предпочтительным является автоматическое его формирование при простом переносе полей с помощью мышки.

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

Page 58: Axapta Development Training

Формы Страница 5-3

5.2 СКВОЗНОЙ ПРИМЕР

Сквозной пример данного урока предусматривает выполнение упражнений 24-27. Здесь также приведен порядок работы с формами модуля Управление ремонтами.

В упражнениях 24 и 25 создаются формы RrepRepairType, RrepEquipmentGroup и RrepEquipmentTable.

Метод active, создаваемый в упражнении 26, запрещает редактирование строк ремонтных работ со статусом Завершено. Системный метод modified, перекрытый на поле RepairTypeId источника данных формы RrepEquipmentTable, по умолчанию инициализирует значение поля Ставка при выборе Вида работ.

В упражнении 27 перекрываются системные методы clicked для кнопок начала и завершения ремонтных работ.

5.2.1 Справочники групп оборудования и типов ремонтов

Рассмотрим дизайн справочника (формы) групп оборудования:

Форма состоит из двух закладок: Обзор и Разное

На закладке Обзор указываются общие сведения о группе оборудования:

Page 59: Axapta Development Training

Формы Страница 5-4

Поле Описание

Группа оборудования Уникальный идентификатор (ключ) группы оборудования, используется для ссылок на группу

Название Необязательное название группы оборудования

На второй закладке представлены две группы полей. В группе полей Идентификация приводятся те же самые поля, что и на первой закладке. В группе полей Дебет присутствует единственное поле – Счет, в котором задается счет по дебету разноски затрат по ремонту.

Дизайн формы Виды ремонтных работ аналогичен:

Page 60: Axapta Development Training

Формы Страница 5-5

Форма также состоит из двух закладок: Обзор и Разное. На закладке Обзор указываются код, название видов работ, а также почасовая ставка:

Поле Описание

Вид работ Уникальный идентификатор (ключ) вида работ

Название Необязательное описание вида работ

Ставка Дневная ставка выполнения данного вида работы в основной валюте компании

На второй закладке представлены три группы полей. В группе полей Идентификация продублированы поля Вид работ и Название, в группе поле Ставка – поле Ставка. В новой группе полей Кредит создается поле Счет, в котором задается счет по кредиту разноски затрат по ремонту.

5.2.2 Работа с формой Оборудование

Форма Оборудование является ключевой формой, с которой работает оператор модуля. В ней одновременно задается справочник всего оборудования на балансе предприятия и перечень запланированных и выполненных ремонтных работ по оборудованию.

Page 61: Axapta Development Training

Формы Страница 5-6

Рассмотрим подробнее дизайн формы Оборудование.. Форма состоит из двух частей: в верхней водится перечень оборудования, а в нижней – список ремонтных работ.

Рассмотрим поля на закладке Обзор в верхней части формы:

Поле Описание

Оборудование Уникальный идентификатор (ключ) единицы оборудования

Описание Необязательное описание оборудования.

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

На закладке Разное в группе полей Идентификация должны быть указаны те же самые поля, что и на закладке Обзор.

Page 62: Axapta Development Training

Формы Страница 5-7

В нижней части формы на закладке Обзор можно видеть поля:

Поле Описание

Вид работ Обязательный для заполнения код вида произведенных работ (необходим выпадающий справочник)

Дата начала Дата фактического начала работ по ремонту. Непосредственному редактированию не подлежит

Дата окончания Дата фактического окончания работ по ремонту. Непосредственному редактированию не подлежит

Исполнитель Код сотрудника, ответственного за выполнение работ (из таблицы сотрудников предприятия)

Статус Статус выполнения работ: Запланировано, Начато, Завершено. Редактирование этого поля запрещено

Ставка Дневная ставка исполнителя работ. Значение по умолчанию подставляется при выборе Вида работ

По кнопке Обработка доступны функции регистрации начала работы (Начато) и ее завершения (Завершено).

Page 63: Axapta Development Training

Формы Страница 5-8

На закладке Разное в нижней части представлены:

Поле Описание

Группа полей Идентификация

Оборудование Код оборудования, по которому выполняются работы. Не редактируется, заполняется автоматически

Вид работ См. выше.

Проведено Ремонтные работы проведены в Главную книгу. Поле не редактируется

Группа полей Статус

Статус, Исполнитель

См. выше.

Группа полей Дата

Запланированная дата

Дата, на которую планировалось начать работы. Заполняется при создании записи о ремонте

Дата начала, Дата окончания

См. выше.

Page 64: Axapta Development Training

Формы Страница 5-9

Длительность Срок проведения ремонта в днях

Группа полей Примечание

Примечания Необязательные многострочные примечания

Процедура ввода нового оборудования не требует детального описания; рассмотрим поэтапную процедуру регистрации ремонтных работ:

№ Действие пользователя Отклик системы

1 Оператор открывает форму Оборудование, курсор на нужной записи об оборудовании

В нижней части формы отображается существующий перечень запланированных/выполненных ремонтных работ по выбранному оборудованию

2 Оператор переходит в нижнюю часть формы и создает новую строку (запись о ремонте) с помощью клавиш Ctrl-N

Появляется строка с записью о ремонте. Статус ремонта принимает значение Запланировано. В поле Запланированная дата проставляется текущая системная дата. В поле Исполнитель – код пользователя, соответствующий текущему пользователю системы

3 Оператор выбирает тип ремонта. При необходимости оператор корректирует Запланированную дату и сохраняет запись о ремонте

При выборе типа ремонта система автоматически проставляет почасовую Ставку

4 Как только исполнитель приступает к выполнению ремонтных работ, находит соответствующую запись о ремонте, нажимает кнопку Обработка и выбирает пункт Начато

Статус ремонтной работы меняется на Начато. В поле Дата начала проставляется текущая системная дата. Редактирование записи о ремонте с этого момента запрещается

5 Как только работа завершена, пользователь активизирует функцию Обработка/Завершено

Статус ремонтной работы меняется на Завершено. В поле Дата окончания проставляется текущая системная дата. В поле Длительность отображается длительность ремонта в днях, рассчитанная как (Дата окончания - Дата начала)

Page 65: Axapta Development Training

Формы Страница 5-10

5.3 УПРАЖНЕНИЯ

Упражнение 24 Создание форм с одним источником данных

1 Откройте узел форм Forms репозитария прикладных

объектов.

2 Для создания новой формы нажмите правой кнопкой мышки на узле Forms и в выпадающем меню выберите пункт Создать Form.

3 Вызовите на экран окно свойств созданной формы. Для этого нажмите правой кнопкой мышки на узле с наименованием формы и в выпадающем списке выберите пункт Свойства.

4 В окне свойств определите название формы RrepRepairType.

5 Добавьте в узел DataSources формы новый источник данных. Для этого позиционируем курсор на узел DataSources, нажимаем правую кнопку мышки и в выпадающем меню выбираем пункт Создать Data source.

6 Определите следующие свойства для нового источника данных:

Свойства Значение

Name RRepRepairType

Table RRepRepairType

Значения остальных свойств оставляем по умолчанию.

Page 66: Axapta Development Training

Формы Страница 5-11

7 Определите свойства дизайна формы:

Свойства Значение

Caption @REP9 (Виды ремонтных работ)

TitleDatasource RRepRepairType

8 На узле дизайна формы Design нажмите на правую кнопку мышки и выберите пункт Создать Control\Tab. Система создаст поле формы Tab, в котором можно создавать закладки.

9 Нажмите правой кнопкой мышки на поле формы Tab и выберите пункт Создать Control\TabPage. Создайте два поля TabPage и TabPage1 со свойствами:

Свойства Значение

Page 67: Axapta Development Training

Формы Страница 5-12

Поле формы TabPage

Name Overview

Caption @SYS9039 (Обзор)

Поле формы TabPage1

Name General

Caption @SYS2952 (Разное)

10 На первой закладке TabPage создайте поле формы Grid.

11 Мышкой перетащите из источника данных формы поля RepairTypeId, Description, Rate в узел поля Grid. Система автоматически создать поля формы соответствующего типа и включит их в таблицу формы Grid.

12 На вторую закладку TabPage1 мышкой перенесите из источника данных формы группы полей Идентификация, Ставка, Кредит. В дизайне закладки системой будут созданы группы полей с полями, определенными в узлах соответствующих групп полей FieldGroups таблицы RRepRepairType.

Page 68: Axapta Development Training

Формы Страница 5-13

13 Сохраните проделанные изменения (кнопка на панели инструментов репозитария прикладных объектов).

14 Аналогично создайте формы RrepEquipmentGroup и RrepEquipmentTable со следующими источниками данных и дизайном:

Свойства Значение

Источник данных формы RrepEquipmentTable

Name RrepEquipmentTable

Page 69: Axapta Development Training

Формы Страница 5-14

Table RrepEquipmentTable

Источник данных формы RrepEquipmentGroup

Name RRepEquipmentGroup

Table RRepEquipmentGroup

Свойства дизайна формы RrepEquipmentTable

Caption @REP1 (Оборудование)

TitleDatasource RRepEquipmentTable

SaveSize Yes

DataSource RrepEquipmentTable

Columns 1

Свойства дизайна формы RrepEquipmentGroup

Caption @REP14 (Группы оборудования)

TitleDatasource RRepEquipmentGroup

Поле TabPage формы RrepEquipmentTable

Name HeaderOverView

Caption @SYS9039 (Обзор)

Поле TabPage1 формы RrepEquipmentTable

Name HeaderGeneral

Caption @SYS2952 (Разное)

Поле TabPage формы RrepEquipmentGroup

Name Overview

Caption @SYS9039 (Обзор)

Поле TabPage1 формы RrepEquipmentGroup

Name General

Caption @SYS2952 (Разное)

15 В поле Grid формы RrepEquipmentGroup перетащите поля

Page 70: Axapta Development Training

Формы Страница 5-15

EquipmentGroupId, Description, AccountNum. В поле Grid формы RrepEquipmentTable перетащите поля EqipmentId, Description, EquipmentGroupID.

16 На вторые закладки TabPage1 форм RrepEquipmentGroup и RrepEquipmentTable соответственно перенесите группы полей Идентификация, Дебет и Идентификация.

17 Перенесите созданные формы в соответствующую группу проекта RrepairModule (см. Упражнение 1).

18 Открыть созданные формы (вывести на экран) можно нажатием правой кнопки мыши на узле с названием формы и выбором пункта Открыть.

19 Если в списке, вызывающемся нажатием правой кнопки мыши на узле Design, выбрать пункт Правка, на экран будет выведен визуальный редактор форм. Разработчик может редактировать дизайн формы непосредственно в нем.

Упражнение 25 Создание форм с двумя источниками данных

1 Откройте узел, содержащий формы, проекта RrepairModule.

2 Добавьте второй источник данных в узел DataSources формы RrepEquipmentTable. Установите свойства второго источника данных следующим образом:

Свойства Значение

Name RRepRepairLine

Table RRepRepairLine

AllowCheck No

JoinSource RRepEquipmentTable

Page 71: Axapta Development Training

Формы Страница 5-16

3 В дизайне формы RrepEquipmentTable измените свойства следующих элементов:

Свойства Значение

группа закладок Tab:Tab

Width Column width

Height Column height

таблица Grid:Grid

Width Column width

Height Column height

Page 72: Axapta Development Training

Формы Страница 5-17

4 Дополнительно создайте группу Group со свойствами:

Свойства Значение

Width Column width

FrameType None

ArrangeMethod Horizontal, flush right

Остальные свойства определены системой по умолчанию.

5 В поле группы Group внесите группу закладок Tab со свойствами:

Свойства Значение

Name TabLine

Width Column width

DataSource RRepRepairLine

и группу кнопок MenuButton:

Свойства Значение

Name GRUP

Text @SYS605 (Обработка)

Left Right edge

Page 73: Axapta Development Training

Формы Страница 5-18

6 В группе закладок Tab:TabLine создайте две закладки со свойствами:

Свойства Значение

Закладка TabPage

Name OverViewLine

Caption @SYS9039 (Обзор)

Закладка TabPage1

Name GeneralLine

Caption @SYS2952 (Разное)

Columns Auto

в группе кнопок MenuButton:GRUP создайте две кнопки формы MenuItemButton и MenuItemButton1 :

Свойства Значение

Page 74: Axapta Development Training

Формы Страница 5-19

Кнопка MenuItemButton

Name StartItemButton

Text @REP7 (Начато)

Кнопка MenuItemButton1

Name FinishItemButton

Text @REP8 (Завершено)

7 На первой закладке TabPage:OverViewLine создайте поле

Grid:

Свойства Значение

Name LineGrid

Width Column width

Height Column height

VisibleRows 9

DataSource RRepRepairLine

Перетащите из источника данных RRepRepairLine в Grid поля RepairTypeID, StartDate, FinishDate, WorkerId, RepairStatus, Rate.

8 На вторую закладку TabPage: GeneralLine перенесите группы полей Идентификация, Статус, Дата и Примечания.

9 Сохраните проделанные изменения (кнопка на панели инструментов проекта).

Упражнение 26 Перекрытие системных методов в источнике данных формы

1 Откройте узел методов Methods источника данных

RrepRepairLine формы RrepEquipmentTable. Перекройте системный метод active (аналогично перекрытию системных

Page 75: Axapta Development Training

Формы Страница 5-20

методов таблиц, см. Упражнение 23) и наберите следующий код:

2 Сохраните (кнопка на панели инструментов редактора) и откомпилируйте созданный метод (F7 или кнопка ).

3 Перекройте системный метод modified поля RepairTypeId источника данных RrepRepairLine (Поля источника данных находятся в узле Fields):

Page 76: Axapta Development Training

Формы Страница 5-21

Упражнение 27 Перекрытие системных методов в полях дизайна формы

1 Откройте узел методов Methods кнопки MenuItemButton:StartItemButton дизайна формы RrepEquipmentTable. Перекройте системный метод clicked и наберите следующий код:

2 Аналогично перекройте метод clicked для кнопки MenuItemButton:FinishItemButton:

Page 77: Axapta Development Training

Формы Страница 5-22

Page 78: Axapta Development Training

Урок 6

Запросы

После изучения урока Вы сможете:

Создавать новые запросы в репозитарии прикладных объектов

Задавать в запросах источники данных

Открывать запросы из репозитария прикладных объектов или проектов

Работать с системными классами Query

DocID: Type DocID here

Page 79: Axapta Development Training

Запросы Страница 6-2

6.1 ОБЗОР

В данном уроке вы научитесь создавать запросы в среде разработки Аксапта.

Запросы позволяют выбирать данные из таблиц для их вывода в формах и отчетах, или для их обработки в процедурах X++. Перед созданием запроса, необходимо определить из каких источников данных (таблиц) будут выбираться данные. Запросы не предназначены для визуального представления информации, но могут использоваться в составе форм и отчетов. Единственный визуальный элемент, с которым взаимодействует пользователь, это специально разработанная средствами X++ форма, в которой пользователь устанавливает параметры выполнения запроса при его запуске. Она используется в запросах по умолчанию. Программист может изменить эту форму, создать другую или вообще не использовать никакую форму при создании своего запроса.

Запрос состоит из трех компонентов: Форма SysQueryForm, иерархической структуры источников данных и методов запроса. Форма SysQueryForm состоит из трех закладок:

• Критерии отбора

• Сортировка

• Запись/Сохранение параметров

В этой форме пользователь настраивает параметры работы запроса при каждом его запуске. Форма умеет запоминать введенные значения.

Page 80: Axapta Development Training

Запросы Страница 6-3

6.2 СКВОЗНОЙ ПРИМЕР

Сквозной пример данного урока предусматривает выполнение упражнения 28.

В упражнении 28 создается запрос RrepRepairLine. Запрос позволяет выбрать записи из таблицы RrepRepairLine по заданным критериям в порядке заданной сортировке. Данный запрос используется в процедуре разноски в Главную Книгу стоимости завершенных ремонтных работ.

Page 81: Axapta Development Training

Запросы Страница 6-4

6.3 УПРАЖНЕНИЯ

Упражнение 28 Создание запросов в репозитарии прикладных объектов

1. Откройте узел форм Queries репозитария прикладных

объектов.

2. Для создания нового запроса нажмите правой кнопкой мышки на узле Queries и в выпадающем меню выберите пункт Создать Query.

3. В окне свойств созданного запроса определите название запроса RRepRepairLine.

4. Добавьте в узел DataSources запроса новый источник данных (см. Упражнение 24).

5. Определите следующие свойства для нового источника данных:

Свойства Значение

Name RrepRepairLine

Table RrepRepairLine

Значения остальных свойств оставляем по умолчанию.

6. В узел критериев Ranges источника данных мышкой перетащите из узла полей Fields поле RepairStatus

7. Сохраните полученный запрос (кнопка на панели

Page 82: Axapta Development Training

Запросы Страница 6-5

инструментов репозитария прикладных объектов) и перенесите в соответствующую группу проекта RrepairModule (см. Упражнение 1).

Упражнение 29 Открытие запроса

1. Откройте узел, содержащий запросы, проекта RrepairModule.

2. Выполните запрос RRepRepairLine нажатием правой кнопки мышки на узле с названием запроса и выбором пункта Открыть. Система выведет на экран системную форму запроса SysQueryForm.

3. Нажмите кнопку Расширенно и, помечая галочкой поля в дереве всех полей таблицы Ремонтные работы, добавьте в таблицу выборок критерий по исполнителю работ.

Page 83: Axapta Development Training

Запросы Страница 6-6

4. Перейдите на закладку Сортировка, где назначьте порядок чтения записей из таблицы по полю Начальная дата в возрастающем порядке.

Page 84: Axapta Development Training

Запросы Страница 6-7

5. На закладке Загрузить/Сохранить нажмите на кнопку Сохранить для сохранения текущих настроек.

6. Запуск запроса производится нажатием на кнопку ОК.

Упражнение 30 Создание запроса в коде X++ системными классами Query

1. Создайте в репозитарии прикладных объектов новое задание

Job7 и наберите в нем следующий код:

Page 85: Axapta Development Training

Запросы Страница 6-8

2. Проведите компиляцию созданного кода (F7 или кнопка Compile на панели инструментов) и, при отсутствии ошибок, выполните задание (F5 или кнопка GO на панели инструментов).

Page 86: Axapta Development Training

Урок 7

Классы

После изучения урока Вы сможете:

Создавать новые классы в репозитарии прикладных объектов

Создавать в классах статические и нестатические методы

Вызывать методы класса из других методов

Выполнять методы класса

DocID: Type DocID here

Page 87: Axapta Development Training

Классы Страница 7-2

7.1 ОБЗОР

В данном уроке вы научитесь работать с классами в среде разработки Аксапта.

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

Класс - не является объектом. Класс можно определить как проект, который определяет, как объект будет вести себя, когда будет создан на основе спецификации, объявленной классом. Класс создается в репозитарии прикладный объектов. Объект класса может быть создан только в коде X++ в методах классов, таблиц, форм или заданий. Для создания нового объекта класса служит оператор new.

Классы можно наследовать, причем в Аксапта реализована, так называемая, прямая модель наследования, т.е. любой класс может быть подклассом (быть порожденным) только одного другого класса. Подкласс наследует все методы и переменные от родительского класса, который называется суперклассом. Подклассы позволяют использовать не просто уже существующий код но и, что еще важнее, уже оттестированный код. Часть кода при этом может быть перекрыта, часть не использоваться, часть может быть написана заново, при этом в целом экономится время разработки, кодирования и тестирования.

Page 88: Axapta Development Training

Классы Страница 7-3

7.2 СКВОЗНОЙ ПРИМЕР

Данный урок, в рамках сквозного примера, включает описание процедуры разноски в Главную книгу стоимости ремонтных работ и выполнение упражнений 31 и 32.

В упражнениях 31 и 32 создается класс RRepLedgerPosting разноски стоимости ремонтных работ в ГК.

7.2.1 Разноска в Главную Книгу

Бухгалтер предприятия на периодической основе запускает функцию разноски в Главную Книгу стоимости завершенных ремонтных работ. При запуске функции перед пользователем должно появиться диалоговое окно с кнопками ОК, Отмена, Пакет и Выбрать. Назначение первых двух кнопок очевидно, третья используется для запуска функции в пакетном режиме, а четвертая – для установки дополнительных условий выборки записей о ремонтах.

При запуске функции система должна выбрать записи всех завершенных ремонтных работ, рассчитать стоимость работ по формуле Ставка * Длительность и провести их по счетам Главной Книги, указанным для группы оборудования, по которому выполняется ремонт (счет по дебету) и вида ремонта (счет по кредиту). Проводки регистрируются датой завершения соответствующего ремонта в основной валюте компании. После того, как проводка по очередному ремонту выполнена, в записи о соответствующем ремонте проставляется пометка Проведено, чтобы не было повторных проводок. Номер документа ГК извлекается из настроек модуля Производство.

Page 89: Axapta Development Training

Классы Страница 7-4

7.3 УПРАЖНЕНИЯ

Упражнение 31 Создание класса в репозитарии прикладных объектов

1. Откройте узел классов Classes репозитария прикладных

объектов.

2. Для создания нового класса нажмите правой кнопкой мышки на узле Classes и в выпадающем меню выберите пункт Создать Class.

3. Вызовите на редактирование метод-заголовок ClassDeclaration. Определите название класса RRepLedgerPosting и класс-родитель RunBaseBatch.

4. Добавьте в класс статически метод main. Для этого нажмите правой кнопкой мышки на узел с названием класса и в выпадающем меню выберите пункт Создать Method. Система откроет на редактирование новый метод класса Method1. Переименуйте метод, назвав его main. В строке объявления класса также укажите модификаторы static и void.

5. В статический метод main Аксапта передает системную переменную Args. Определите данную переменную в параметрах метода main.

Page 90: Axapta Development Training

Классы Страница 7-5

6. В теле метода main создайте объект текущего класса:

7. Проведите компиляцию созданного кода (F7 или кнопка Compile на панели инструментов). Перетащите созданный класс в соответствующий узел проекта RRepairModule.

Упражнение 32 Перекрытие в подклассе методов класса-родителя

1. Откройте узел, содержащий классы, проекта RrepairModule.

2. В методе ClassDeclaration класса RrepLedgerPosting объявите переменную класса QueryRun:

3. Перекройте метод canGoBatchJournal. Для этого нажмите правой кнопкой мышки на узле-заголовке класса и выберите пункт Перекрыть метод\ canGoBatchJournal. Переопределите код метода:

Page 91: Axapta Development Training

Классы Страница 7-6

4. Аналогично перекройте методы dialog, queryRun, new.

Page 92: Axapta Development Training

Классы Страница 7-7

5. Создайте методы description

и postLedgerTrans:

Page 93: Axapta Development Training

Классы Страница 7-8

Page 94: Axapta Development Training

Классы Страница 7-9

6. Перекройте метод run:

7. Дополните метод main вызовами методов promt и run:

8. Выполните класс RrepLedgerPosting. Для этого необходимо нажать правой кнопкой мышки на узле-заголовке класса и выбрать пункт Открыть.

Page 95: Axapta Development Training

Классы Страница 7-10

Page 96: Axapta Development Training

Урок 8

Меню и пункты меню

После изучения урока Вы сможете:

Создавать меню и пункты меню в репозитарии прикладных объектов

Привязывать к пунктам меню формы, отчеты или классы

Размещать меню в виде закладок формы главного меню

Объединять пункты меню в папки и размещать их в структуре главного меню

DocID: Type DocID here

Page 97: Axapta Development Training

Меню и пункты меню Страница 8-2

8.1 ОБЗОР

В данном уроке рассматривается создание меню как закладок главного меню, папок, пунктов меню для вызова на экран форм, отчетов и классов.

Меню и пункты меню в Аксапта служат для создания структуры пользовательского меню. Пользовательское меню представлено в форме главного меню в виде перечня закладок-модулей, каждая из которых состоит из дерева папок, разделителей и пунктов меню, вызывающих на экран форму, отчет или класс. Перечень закладок-модулей регламентируется структурой системного меню MainMenu. Каждая закладка представляет собой ссылку на существующее меню. Меню, в свою очередь, содержит папки и пункты меню. Пункты меню делятся на три категории Display, Output и Action, в зависимости от вызываемого объекта - формы, отчета или класса.

Page 98: Axapta Development Training

Меню и пункты меню Страница 8-3

8.2 СКВОЗНОЙ ПРИМЕР

Сквозной пример данного урока предусматривает выполнение упражнений 33-35.

Активизация системы управления ремонтами должна осуществляться посредством вызова пунктов меню. Пункты меню размещаются на отдельной закладке Управление ремонтами главного меню. Дизайн меню должен быть таким:

Пункты меню форм-справочников Группы оборудования и Виды ремонтных работ располагаются в специальной папке Настройки. Периодическая процедура разноски в ГК активизируется посредством пункта меню, расположенном в папке Периодические операции.

В упражнениях 33 и 34 создаются пункты меню для вызова на экран форм и запуска процедуры разноски в ГК.

В упражнении 35 создается меню модуля Управление ремонтами, где размещаются папки и, сгруппированные в них, пункты меню. В свою очередь, меню помещается в виде закладки в главное меню.

Page 99: Axapta Development Training

Меню и пункты меню Страница 8-4

8.3 УПРАЖНЕНИЯ

Упражнение 33 Создание пунктов меню для вызова форм

1. Откройте узел Display пунктов меню MenuItems репозитария

прикладных объектов.

2. Для создания нового пункта меню нажмите правой кнопкой мышки на узле Display и в выпадающем меню выберите пункт Создать Menu Item.

3. В окне свойств созданного пункта меню MenuItem1 установите следующие свойства:

Свойства Значение

Name RRepRepairType

Label @REP9 (Виды ремонтных работ)

Class Form

Object RRepRepairType

Page 100: Axapta Development Training

Меню и пункты меню Страница 8-5

4. Сохраните полученный пункт меню (кнопка на панели инструментов репозитария прикладных объектов).

5. Аналогично создайте пункты меню RrepEquipmentTable и RrepEquipmentGroup:

Свойства Значение

Пункт меню RrepEquipmentTable

Name RrepEquipmentTable

Label @SYS16276 (Оборудование)

Class Form

Object RRepEquipmentTable

Пункт меню RrepEquipmentGroup

Name RrepEquipmentGroup

Label @REP14 (Группы оборудования)

Class Form

Object RRepEquipmentGroup

6. Перенесите все созданные пункты меню в соответствующий узел проекта RRepairModule.

Упражнение 34 Создание пунктов меню для вызова классов

1. Откройте узел Action пунктов меню MenuItems репозитария

прикладных объектов.

2. Создайте новый пункт меню и определите для него следующие свойства:

Свойства Значение

Name RRepLedgerPosting

Page 101: Axapta Development Training

Меню и пункты меню Страница 8-6

Label @REP15 (Разноска в ГК)

Class Class

Object RRepLedgerPosting

3. Сохраните созданный пункт меню и перенесите в проект RrepairModule.

Упражнение 35 Создание и размещение меню в виде закладки главного меню

1. Откройте узел Menu репозитария прикладных объектов.

2. Создайте новое меню. Для этого нажмите правой кнопкой мышки на узле Menu и выберите пункт Создать Menu.

3. В окне свойств созданного меню Menu1 установите следующие свойства:

Свойства Значение

Name RRepair

Label @REP16 (Управление ремонтами)

setCompany No

Page 102: Axapta Development Training

Меню и пункты меню Страница 8-7

4. Нажмите правой кнопкой мышки на узле созданного меню и в выпадающем списке выберите пункт Создать\Пункт меню.

5. Определите свойства пункта меню:

Свойства Значение

MenuItemtype Display

MenuItemName RRepEquipmentTable

6. Создайте три подменю (папки) в структуре меню. Для этого нажмите правой кнопкой мышки на узле меню и в выпадающем списке выберите пункт Создать\Подменю. Определите для них свойства:

Свойства Значение

Подменю Submenu1

MenuItemName @SYS8782 (Периодические операции)

Подменю Submenu2

MenuItemName @SYS2186 (Настройки)

Подменю Submenu3

MenuItemName @SYS6845 (Отчеты)

7. В подменю Периодические операции создайте пункт меню Разноска в ГК, привязав его к пункту меню RrepLedgerPosting. Для этого нажмите правой кнопкой

Page 103: Axapta Development Training

Меню и пункты меню Страница 8-8

мышки на узле Периодические операции и выберите пункт Создать Menu. Определите свойства пункта меню:

Свойства Значение

MenuItemtype Action

MenuItemName RRepLedgerPosting

8. В подменю Настройки разместите пункты меню RrepRepairType и RRepEquipmentGroup.

9. Сохраните полученное меню (кнопка на панели инструментов репозитария прикладных объектов) и перенесите в проект RrepairModule.

10. Найдите в узле Menu системное меню MainMenu. Нажмите правой кнопкой мыши на заголовке MainMenu и выберите в списке пункт Создать\Ссылка меню. Система выведет на экран вспомогательную форму Select:Menus. Мышкой перетаскиваем меню RRepair из формы Select:Menus в структуру MainMenu. Таким образом, как ссылка на меню, будет создана новая закладка в главном меню.

11. Сохраните все последние изменения (кнопка на панели инструментов репозитария прикладных объектов).

Page 104: Axapta Development Training

Урок 9

Отчеты

После изучения урока Вы сможете:

Пользоваться автоотчетом

Создавать новые отчеты при помощи мастера создания отчетов

Изменять источники данных и дизайн отчета

DocID: Type DocID here

Page 105: Axapta Development Training

Отчеты Страница 9-2

9.1 ОБЗОР

В данном уроке вы научитесь создавать отчеты в среде разработки Аксапта.

Отчет состоит из запроса, методов, дизайнов и шаблонов отчета. Отчет использует обычный запрос Query для доступа к данным, которые отчет представляет.

Среда разработки MorphX управляет выводом данных отчета при помощи событий, при наступлении которых выполняются определенные системные методы отчета. Разработчик может перекрывать действие системного метода, изменяя тем самым стандартное поведение отчета.

Дизайны отчетов представляют собой описание видимой структуры (бланка) отчета. В качестве дизайна отчета могут использоваться спецификация и шаблоны отчетов. Шаблоны отчетов определяют внешний вид пролога, эпилога, верхнего и нижнего колонтитула отчета. Кроме того, он может содержать программируемые секции. Спецификация содержит внешний вид тела отчета – основных данных запроса, выводимых на печать. На основе спецификации и шаблона может быть сгенерирован дизайн отчета, который позволяет строить сложные по структуре отчеты. Основное преимущество отчетов, построенных с использованием спецификаций, в том, что все такие отчеты автоматически изменяются с изменением шаблона, которого они используют.

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

Page 106: Axapta Development Training

Отчеты Страница 9-3

9.2 СКВОЗНОЙ ПРИМЕР

Данный урок, в рамках сквозного примера, включает описание отчета Ремонтные работы и выполнение упражнений 37 и 38.

В упражнении 37 при помощи мастера отчета создается отчет RrepRepairLine – список ремонтных работ.

В упражнении 38 отчет, созданный мастером, дорабатывается.

9.2.1 Отчет Ремонтные работы

При активизации отчета РРееммооннттнныыее ррааббооттыы с помощью пункта главного меню Управление ремонтами/Отчеты/Ремонтные работы система должна выводить отчет вида:

Ремонтные работы Оборудование Название Группа оборудования

0001 Кабельная линия 0001 Линии

Вид ремонта Дата начала Дата окончания Исполнитель

Проверка 03.04.1999 04.04.1999 САВР

Проверка 02.04.2000 02.04.2000 САВР

Ремонт 29.05.2000 ЕЛАН

В отчет не должны попадать запланированные ремонтные работы.

Page 107: Axapta Development Training

Отчеты Страница 9-4

9.3 УПРАЖНЕНИЯ

Упражнение 36 Использование автоотчетов

1. Выведите на экран форму Группы оборудования.

2. Если источник данных, привязанный к форме, не содержит данных, введите их:

3. Не закрывая формы, нажмите на комбинацию клавиш Ctrl+P или на инструментальную кнопку . Система выведет на экран диалоговую панель автоотчета.

4. Нажмите на кнопку Настройка принтера и в открывшейся форме определите канал вывода Экран.

5. Для определения критериев выборки данных и полей сортировки нажмите кнопку Критерии (см. Упражнение 29).

6. Нажмите на кнопку Расширенно. В открывшейся форме Генератор автоматических отчетов на закладке Выбор полей отчета определите таблицу и ее перечень полей, данные из которых будут отображены автоотчетом.

Page 108: Axapta Development Training

Отчеты Страница 9-5

7. На закладке Формат отчета определите выходную форму – Tabular и шаблон отчета – FrontPage.

8. Сохраните автоотчет и закройте форму генератора отчетов (кнопка Сохранить и закрыть).

9. Выведите отчет на печать (кнопка Печать в диалоговой панели автоотчета).

Page 109: Axapta Development Training

Отчеты Страница 9-6

Упражнение 37 Создание отчета с помощью мастера

1. Вызов мастера отчетов производится из раздела Сервис

системного меню (Сервис/Разработка/Мастера/Мастер отчетов). Создайте отчет, отображающий список оборудования и периодов ремонтных работ из таблиц RrepEquipmentTable и RrepRepairLine.

2. На первом шаге выставьте признак показа системных имен таблиц.

3. На втором шаге определите название отчета RRepRepairLine и его заголовок Ремонтные работы. Также подключите автосоздание метки в меточном файле REP.

4. На следующем шаге выберите в качестве главной таблицу RrepEquipmentTable зависимую – RrepRepairLine. Из этих таблиц будут выбираться данные для печати в отчете.

Page 110: Axapta Development Training

Отчеты Страница 9-7

5. На следующем шаге определите для таблицы RrepEquipmentTable список полей EquipmentID, Description, EquipmentGroupID. Для таблицы RrepRepairLine – RepairTypeID, StartDate, FinishDate, WorkerId, Rate.

6. Следующий шаг – определение итоговых полей. В качестве поля, по которому будет собираться сумма, определите поле Rate.

7. Определите сортировку в порядке возрастания по полям EquipmentID (таблица RrepEquipmentTable) и StartDate (таблица RrepRepairLine).

8. Печать подзаголовков и итогов групп следует отключить.

9. На шаге определения условий задайте для таблицы RrepRepairLine выборку данных по полю RepairStatus.

Page 111: Axapta Development Training

Отчеты Страница 9-8

10. Внешний вид отчета задается выбором выходной формы в виде таблицы (Tabular) и шаблона FrontPage.

11. На следующем шаге имеется возможность предварительного просмотра дизайна и выходной отчетной формы. Здесь же в группе полей Добавить отчет в меню установите значение Да, отчет будет вставлен в существующее меню.

12. Следующий шаг – определение места в главном меню, где будет создан пункт меню для вызова формируемого отчета. Определите вызов отчета на закладке Управление ремонтами в подменю Отчеты.

Page 112: Axapta Development Training

Отчеты Страница 9-9

13. После завершения работы мастера система создан новый отчет RRepRepairLine в узле Reports репозитария прикладных объектов. Также будет создан пункт меню для вызова отчета из главного меню.

14. Перенесите отчет RRepRepairLine в соответствующий узел проекта RRepairModule.

Упражнение 38 Доработка отчета, созданного мастером

1. Откройте узел, содержащий отчеты, проекта RrepairModule.

2. Измените свойства критерия RepairStatus источника данных RRepRepairLine_1:

Свойства Значение

Value !Запланировано

Status Lock

Page 113: Axapta Development Training

Отчеты Страница 9-10

3. В дизайне отчета измените свойства всех ячеек, привязанных к источникам данных, установив для них следующие одинаковые свойства:

Свойства Значение

Width 20.00 Char

LabelBold Bold

Page 114: Axapta Development Training

Отчеты Страница 9-11

4. Сохраните проделанные изменения (кнопка на панели инструментов проекта).

Page 115: Axapta Development Training

Урок 10

Внешние приложения

После изучения урока Вы сможете:

Создавать отчеты на основе шаблонов MS Word и Excel

Работать с классами ComWordDocument_RU и ComExcelDocument_RU

DocID: Type DocID here

Page 116: Axapta Development Training

Внешние приложения Страница 10-2

10.1 ОБЗОР

В данном уроке рассматриваются приемы работы в среде разработки Аксапта с приложениями MS Word и MS Excel.

Для организации взаимодействия системы Аксапта с другими приложениями разработчику предоставляется богатый выбор средств. В частности, он может воспользоваться:

ODBC-доступом к данным;

механизмом DDE для обмена с приложениями Microsoft Office (на этом и основана встроенная система документооборота, позволяющая, например, с помощью заданных шаблонов MS Word и данных из Axapta формировать готовые документы и связывать их с данными в системе)

элементами ActiveX (именно так реализованы графические инструменты – статистический анализ, графики Ганта, дерево спецификации и т.д.)

интерфейсом COM/DCOM

• функциями операционной системы WinAPI

COM-технологии широко используются в базовой функциональности системы. Например, встроенные в формы АКСАПТА компоненты ActiveX визуализируют данные, отображая графики и диаграммы. Для построения отчетов могут использоваться такие популярные офисные приложения, как MS Word и MS Excel. Вся инфрастуктура Web-приложений АКСАПТА построена на двунаправленном обмене данными по спецификации COM с серверами MS Internet Information Server и MS Transaction Server.

Технологии COM, дают возможность использования интерфейсных элементов и кода, разработанных сторонними поставщиками; обеспечивают глубокую интеграцию с существующими приложениями.

Page 117: Axapta Development Training

Внешние приложения Страница 10-3

10.2 УПРАЖНЕНИЯ

Упражнение 39 Создание отчета с использованием шаблона MS Word

1. В текстовом редакторе MS Word создайте небольшой

документ-шаблон и сохраните как template.dot в директории templates диска С (C:\templates\ template.dot).

2. Обратите внимание на именованные ячейки CreateDate и Table (выделены серым цветом). Имя ячейки можно задать в диалоговой панели свойств в поле Bookmark.

Page 118: Axapta Development Training

Внешние приложения Страница 10-4

3. Создайте новый класс RrepOutputToWord, состоящий из методов makeDocument, saveDocument, run и main. Класс прочитает данные из таблицы RrepEquipmentGroup и отобразит их в новом документе Word, созданном на основе шаблона.

Page 119: Axapta Development Training

Внешние приложения Страница 10-5

Page 120: Axapta Development Training

Внешние приложения Страница 10-6

4. В результате выполнения класса RrepOutputToWord будет открыт текстовый редактор Word c формированным отчетом:

Упражнение 40 Создание отчета с использованием шаблона MS Excel

1. В табличном процессоре MS Excel создайте шаблон

templаte.xlt и сохраните в директории templates диска C:

Page 121: Axapta Development Training

Внешние приложения Страница 10-7

2. В отличие от документа Word в документе Excel не нужно создавать именованные ячейки.

3. Создайте новый класс RrepOutputToExcel, состоящий из методов makeDocument, saveDocument, run и main.

Page 122: Axapta Development Training

Внешние приложения Страница 10-8

Page 123: Axapta Development Training

Внешние приложения Страница 10-9

4. В результате выполнения класса RrepOutputToExcel будет открыт табличный процессор Excel c формированным отчетом:

Page 124: Axapta Development Training

Урок 11

Функциональные ключи

После изучения урока Вы сможете:

Создавать функциональные ключи в репозитарии прикладных объектов

Привязывать объекты приложения с функциональными ключами

DocID: Type DocID here

Page 125: Axapta Development Training

Функциональные ключи Страница 11-2

11.1 ОБЗОР

В данном уроке вы научитесь создавать и работать с функциональными ключами.

Функциональные ключи - уникальная особенность Аксапта, придающая системе необычайную гибкость. Каждый функциональный ключ отвечает за одну или более функциональностей в приложении, и, отключив функциональный ключ, вы тем самым отключаете соответствующую функциональность системы. Функциональные ключи используются в следующих целях:

• Для подключения и отключения определенных функциональных возможностей системы в целом;

• Для настройки прав каждого профиля доступа.

Функциональные ключи имеют сложную иерархическую организацию – на нижнем уровне они открывают/закрывают доступ к отдельным полям таблиц, форм, отчетов. На более высоком уровне – доступ к таблицам, пунктам меню, меню и, наконец, на верхнем уровне – доступ к модулям. Функциональные ключи, отвечающие за доступ к данным, регулируют еще и права доступа: «только на чтение», «редактирование», «удаление», «добавление».

Page 126: Axapta Development Training

Функциональные ключи Страница 11-3

11.2 СКВОЗНОЙ ПРИМЕР

Сквозной пример данного урока предусматривает выполнение упражнения 41.

В упражнении 41 создается иерархия функциональных ключей, позволяющая управлять доступом к функциональности модуля Управление ремонтами.

Page 127: Axapta Development Training

Функциональные ключи Страница 11-4

11.3 УПРАЖНЕНИЯ

Упражнение 41 Создание и привязка функциональных ключей к объектам репозитария

1. Откройте узел функциональных ключей Feature Keys

репозитария прикладных объектов.

2. Для создания нового функционального ключа нажмите правой кнопкой мышки на узле Feature Keys и в выпадающем меню выберите пункт Создать Feature Keys.

3. В окне свойств созданного функционального ключа определите название APPL_Rrepair и настройте следующие свойства:

Свойства Значение

Name APPL_RRepair

Label @REP16 (Управление ремонтами)

Type User Interface + Database

Feature Yes

Security Yes

ANDParents Yes

4. Нажмите правой кнопкой мышки на узле с наименованием ключа APPL_Rrepair и в выпадающем списке выберите пункт Добавить Parent Feature Key. Добавьте два родительских ключа CSECIS и APPL_Ledger.

Page 128: Axapta Development Training

Функциональные ключи Страница 11-5

5. Аналогично создайте функциональные ключи RrepDefault, RrepExtended, RrepEquipment, RrepLine, RrepMenu, RrepLedgerPosting со следующими свойствами:

Свойства Значение

Функциональный ключ RrepDefault

Name RrepDefault

Label @REP17 (Управление ремонтами - базовые функции)

Type User Interface + Database

Feature No

Security Yes

ANDParents No

Parent Feature Key APPL_Rrepair

Функциональный ключ RrepExtended

Name RrepExtended

Label @SYS6198 (Расширения)

Type User Interface + Database

Page 129: Axapta Development Training

Функциональные ключи Страница 11-6

Feature No

Security Yes

ANDParents No

Parent Feature Key APPL_Rrepair

Функциональный ключ RRepEquipment

Name RRepEquipment

Label @REP1 (Оборудование)

Type User Interface + Database

Feature No

Security Yes

ANDParents No

Parent Feature Key RRepDefault

Функциональный ключ RRepLine

Name RRepLine

Label @REP11 (Ремонтные работы)

Type User Interface + Database

Feature No

Security Yes

ANDParents No

Parent Feature Key RRepDefault

Функциональный ключ RRepMenu

Name RRepMenu

Label @REP18 (Управление ремонтами - меню)

Type User Interface

Feature No

Security Yes

Page 130: Axapta Development Training

Функциональные ключи Страница 11-7

ANDParents No

Parent Feature Key RRepDefault

Функциональный ключ RRepLedgerPosting

Name RRepLedgerPosting

Label @REP15 (Разноска в ГК)

Type User Interface

Feature Yes

Security Yes

ANDParents No

Parent Feature Key RRepExtended

6. Перенесите созданные функциональные ключи в соответствующую группу проекта RrepairModule (см. Упражнение 1).

7. Укажите в свойстве FeatureKey расширенного типа данных RrepRate функциональный ключ RrepEquipment.

8. Функциональный ключ RrepEquipment также привязывается к следующим объектам модуля:

Page 131: Axapta Development Training

Функциональные ключи Страница 11-8

Функциональный ключ RrepEquipment

ExtendedData Type RRepRepairTypeID

ExtendedData Type RrepEquipmentGroupID

ExtendedData Type RRepEquipmentID

Table RrepEquipmentTable

Table RRepEquipmentGroup

Table RRepRepairType

Menu Items Display RRepRepairType

Menu Items Display RrepEquipmentTable

Menu Items Display RRepEquipmentGroup

9. Функциональный ключ RRepLine привязывается к следующим объектам:

Функциональный ключ RRepLine

Base Enum RRepRepairStatus

Table RrepRepairLine

Form element RrepEquipmentTable, Group:Group

Menu Items Output RRepRepairLine

10. Функциональный ключ RRepMenu привязывается к объектам:

Функциональный ключ RRepMenu

Menu RRepair

11. И, наконец, функциональный ключ RRepLedgerPosting:

Функциональный ключ RRepLedgerPosting

Menu Items Action RRepLedgerPosting

12. Проверку на доступность функционального ключа можно организовать в коде X++. Дополните метод main класса RrepLedgerPosting следующим кодом:

Page 132: Axapta Development Training

Функциональные ключи Страница 11-9

Page 133: Axapta Development Training

Вопросы к тренингу

DocID: Type DocID here

Page 134: Axapta Development Training

Вопросы к тренингу Страница 12-2

12.1 ВОПРОСЫ

1. Что такое автоотчет?

a. Результат работы Мастера отчетов

b. Средство создания отчета по источнику данных открытой формы

c. Окно сообщений, появляющихся, например, при запуске пакетной обработки

d. Дизайн отчета, получающийся с использованием функции Генерация дизайна по Query

e. Отчет, вызываемый текущей сессией пакетной обработки

2. Какие из следующих утверждений о полях таблиц типа Enum (перечислимый тип) верны? Выберите два варианта ответа.

a. Значения таких полей выбираются из предварительно заданных списков значений

b. Выбираются из списков, основанных на таблицах

c. Выбираются из списка, определенного в папке «Тексты» модуля «Разное»

d. Новые значения могут быть добавлены только через AOT (репозитарий прикладных объектов)

3. Все таблицы Аксапта разбиты на 7 групп таблиц. Укажите несуществующую группу?

a. Miscellaneous

b. Parameter

c. Group

d. Transaction

Page 135: Axapta Development Training

Вопросы к тренингу Страница 12-3

e. Temporary

f. WorksheetLine

4. Указание шаблона отчета при работе с мастером отчетов обеспечивает:

a. Сохранение создаваемого отчета в качестве шаблона отчета

b. Позволяет группировать отчеты по выбранному шаблону

c. Добавляет секции шаблона в создаваемый отчет

d. Определяет критерии выборки отображаемых записей в отчете

e. Ориентирует создаваемый отчет на шаблон документа Word

5. Какие элементы меню предпочтительно размещать в раздел пунктов меню Output?

a. Вызова форм

b. Вызова запросов

c. Вызова отчетов

d. Вызова методов классов

6. Что хранится в меточных файлах?

a. Лицензионные коды

b. Скомпилированный код объектов приложения

c. Руководство разработчика Аксапта

d. Текстовый интерфейс системы

e. Поля примечаний

Page 136: Axapta Development Training

Вопросы к тренингу Страница 12-4

7. В репозитарии прикладных объектов каждый отчет состоит из 3 узлов. Какие из представленных узлов лишние? Выберите два варианта ответа.

a. Дизайн

b. Индексы

c. Методы

d. Источники данных

e. Шаблон отчета

8. В чем преимущество использования индексов на таблице?

a. Ускорение чтения данных

b. Ускоренное построение индексных файлов

c. Обеспечение целостности данных

d. Хранение данных в отсортированном виде

9. Среда разработки MorphX содержит несколько классов для создания и выполнения запросов. Какой из классов является классом выполнения запроса?

a. Query

b. QueryBuildRange

c. QueryBuildLink

d. QueryRun

e. QueryBuildDataSource

10. Известно, что в визуальных диаграммах MorphXplorer используется нотация UML. Как графически представляется связь «один ко многим»?

Page 137: Axapta Development Training

Вопросы к тренингу Страница 12-5

a.

b.

c.

d.

e.

11. Какие методы не поддаются отладке с помощью стандартного отладчика при работе с системой через тонкого клиента?

a. Статические методы

b. Динамические методы

c. Методы, выполняемые на сервере

d. Методы, выполняемые на клиенте

e. Любые методы

12. Каково стандартное назначение статического метода main() на любом классе? Выберите два варианта ответа.

a. Инициализация глобальных переменных класса

b. Для вызова класса через пункт меню

c. Для вызова класса из репозитария прикладных объектов

d. Для создания объекта класса

e. Для удаления объекта класса

13. Согласно общему соглашению об именовании объектов, как должно начинаться наименование метода, проверяющего некоторое условие, причем, если условие не выполнено, метод возвращает значение FALSE без вывода сообщений?

Page 138: Axapta Development Training

Вопросы к тренингу Страница 12-6

a. check*

b. get*

c. validate*

d. find*

e. is*

14. Какой метод класса выполняет функции конструктора в системе?

a. constructor

b. construct

c. по названию класса

d. new

e. нет конструктора

15. Какая «горячая клавиша» используется для установки/сброса точек останова?

a. F7

b. F9

c. Ctrl+Alt+Del

d. F5

e. Ctrl+Space

16. Какие системные методы формы будут вызваны системой при закрытии формы, нажатием кнопки ОК? Выберите три варианта ответа.

a. FormClosed

b. CanClose

Page 139: Axapta Development Training

Вопросы к тренингу Страница 12-7

c. Closed

d. CloseSelect

e. Close

f. TaskClose

g. Finalize

17. Microsoft Business Solutions–Axapta инсталлирована в директорию C:\Program Files\Navision\Axapta. Где располагаются шаблоны документов Word и Excel?

a. C:\Windows\Temp

b. C:\Program Files\Navision\Axapta\Share

c. C:\Program Files\Navision\Axapta\Appl\

d. C:\Program Files\Navision\Axapta\Share\Include\Template

e. C:\Program Files\Navision\Axapta\Share\Config

f. C:\Program Files\Navision\Axapta\Bin

18. Запрет наследования метода класса достигается использованием модификатора?

a. private

b. protected

c. final

d. abstract

e. extends

f. static