axapta development training
TRANSCRIPT
Тренинг по Средствам Разработки
Тренинг по Средствам Разработки
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.
СОДЕРЖАНИЕ
УРОК 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
УРОК 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
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
Урок 1
Средства разработки MorphX
После изучения урока Вы сможете:
Работать с репозитарием прикладных объектов
Создавать новые проекты
Проводить экспорт и импорт объектов приложения
Сравнивать объекты, находящиеся в разных прикладных слоях
Моделировать с MorphXplorer
Создавать новые меточные файлы и метки
DocID: Type DocID here
Средства разработки 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
Средства разработки MorphX Страница 1-2
1.2 СКВОЗНОЙ ПРИМЕР
Данный урок, в рамках сквозного примера, включает описание требований к информационной системе управления ремонтами и выполнение упражнений 1 и 8.
В упражнении 1 создается проект, где в последующем будут собраны объекты приложения, реализующие модуль Управление ремонтами.
Упражнение 8 создает меточный файл axREPru.ald для хранения текстового интерфейса модуля.
1.2.1 Требования к модулю Управление ремонтами
Данная система должна обеспечивать автоматизацию следующих задач:
• учет оборудования, его состояния и характеристик (в т.ч. наработки), учет состояния зданий и сооружений;
• учет всех видов ремонтных и профилактических работ, монтажа, демонтажа и модернизации;
• планирование ремонтных работ;
• контроль за ходом выполнения ремонтных работ.
Чтобы обеспечить сопоставимость информации, возникающей в различных точках информационной системы, и обеспечить возможность составления сводных по Компании отчетов, она должна оперировать едиными справочниками, базовыми из которых являются справочники:
• оборудования;
• групп оборудования со счетами разноски в Главную книгу;
• видов ремонтных работ с нормативами и счетами разноски в ГК.
В целях поддержания целостности и полноты информации информационная система должна иметь встроенный контроль правильности, полноты и непротиворечивости вносимых в нее сведений. Эти функции должны быть реализованы путем системы предупреждений и напоминаний, а также запретов на ввод заведомо некорректных сведений.
DocID: Type DocID here
Средства разработки MorphX Страница 1-3
Ниже представлен краткий перечень задач по разработке модуля Управление ремонтами в предполагаемом порядке реализации.
№ Приоритет Краткое описание функции
1 Высший 0 Создание справочника групп оборудования с настройкой разноски, справочника видов работ с нормативами (дневной ставкой) на выполнение работ и разноской
2 Высший 0 Создание таблицы оборудования и ремонтов, формы Оборудование, в которой ведется справочник оборудования и перечень ремонтов по каждому
3 Высокий 1 Периодическая функция проводки затрат по ремонтам в Главную Книгу согласно настройкам разноски
4 Средний 2 Отчет Ремонты, в котором выводится список оборудования и ремонтов по каждому
Активизация системы управления ремонтами должна осуществляться посредством вызова пунктов меню. Дизайн меню должен быть таким:
Рассмотрим общую процедуру работы в модуле Управление ремонтами:
DocID: Type DocID here
Средства разработки MorphX Страница 1-4
№ Действие пользователя
1 Перед началом работы с модулем пользователь создает справочники групп оборудования и нормативов работ
2 Далее в форме Оборудование оператор заводит все инвентарное оборудование, находящееся на балансе предприятия
3 В рамках ежедневной работы в модуле оператор регистрирует в форме Оборудование информацию о планируемых ремонтах. По мере начала выполнения ремонтных работ в записях о ремонтах меняется статус
4 На периодической основе бухгалтер предприятия запускает периодическую функцию Разноска в Главную Книгу, которая обрабатывает данные о ремонтах и переносит информацию о них в денежном выражении в Главную Книгу
DocID: Type DocID here
Средства разработки MorphX Страница 1-5
1.3 УПРАЖНЕНИЯ
Упражнение 1 Создание проекта RRepairModule
1 Откройте раздел проектов среды разработки Аксапта MorphX
(Файл/Открыть/Проект или по специальной кнопке на панели инструментов).
2 В открывшейся форме Projects на узле Private щелкните правой кнопкой мыши и выберите пункт «Создать новый проект». В списке проектов появиться новая строчка Project1.
3 Откройте форму нового проекта Project1 двойным нажатием левой кнопки мышки.
4 Переименуйте название проекта в RRepairModule, вызвав окно свойств проекта.
DocID: Type DocID here
Средства разработки 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
Средства разработки MorphX Страница 1-7
Упражнение 2 Сбор объектов модуля Основные средства в одном проекте
1 Создайте в узле Private новый проект RAsset (см. Упражнение
1).
2 В форме проекта на панели инструментов нажмите кнопку Фильтрация записей. В открывшейся диалоговой панели Фильтр по проектам установите группировку по АОТ и нажмите кнопку Выбрать.
3 В открывшейся форме определите критерий выборки объектов приложения RAsset* по полю Наименование. Все объекты приложения, реализующие модуль Основные средства, имеют в своем наименовании префикс RAsset.
DocID: Type DocID here
Средства разработки MorphX Страница 1-8
Упражнение 3 Сравнение модификаций объекта, находящихся в разных слоях
1 Откройте репозитарий прикладных объектов
(Файл/Открыть/Репозитарий прикладных объектов или по специальной кнопке на панели инструментов).
2 Найдите объект приложения (таблицу, класс, форму), имеющий модификации в нескольких слоях. В качестве примера, можно взять таблицу LedgerTable.
3 Нажмите правую кнопку мышки в узле наименования объекта и выпадающем меню выберите пункт Add-Ins/Сравнить.
4 В открывшейся диалоговой панели Сравнение, путем выбора сравниваемых слоев в верхних полях формы, произведите сравнение модификаций объекта в слоях gls и dis.
5 Для получения результата сравнения нажмите кнопку Сравнить.
Упражнение 4 Экспорт из репозитария прикладных объектов
1 Откройте репозитарий прикладных объектов
DocID: Type DocID here
Средства разработки MorphX Страница 1-9
(Файл/Открыть/Репозитарий прикладных объектов или по специальной кнопке на панели инструментов).
2 Выделите один или несколько объектов репозитария.
3 Нажмите правую кнопку мышки и в выпадающем меню выберите пункт Экспорт.
4 В открывшейся диалоговой панели Экспорт укажите имя файла и нажмите кнопку OK.
5 Проверьте наличие файла экспорта в указанной директории.
Упражнение 5 Экспорт объектов, входящих в проект
1 Откройте проект RAsset (см. Упражнение 2).
2 Кликните правой кнопкой мышки на узле с названием проекта и произведите экспорт объектов проекта (см. Упражнение 3).
Упражнение 6 Импорт объектов приложения
1 Откройте репозитарий прикладных объектов или форму
проектов.
2 Выведите на экран диалоговую панель Импорта, для этого
DocID: Type DocID here
Средства разработки MorphX Страница 1-10
нажмите на панели инструментов формы репозитария или проектов кнопку Импорт, либо пункт Импорт в системном меню Команда.
3 Введите файл с импортируемыми объектами приложения в поле Имя файла. В нижней части панели будет отображена структура импортируемых объектов.
4 Нажмите кнопку OK.
Упражнение 7 Проектирование модели двух связанных таблиц
1. В системном меню по пути Сервис/Разработка/Визуальное
проектирование с MorphXplorer откройте форму визуального проектировщика MorphXplorer.
2. Постройте модель по двум связанным таблицам LedgerTable
DocID: Type DocID here
Средства разработки 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
Средства разработки MorphX Страница 1-12
новый код меточного файла.
3. На следующем шаге мастера задайте код меточного файла REP.
4. Выйдите из системы. После того, как система создаст файл axREPen-us.ald (или axREPda.ald) в каталоге ..\Appl\Standard, скопируйте его в axREPru.ald.
DocID: Type DocID here
Средства разработки MorphX Страница 1-13
DocID: Type DocID here
Урок 2
Язык X++
После изучения урока Вы сможете:
Работать со встроенным текстовым редактором
Создавать новые задания Jobs в репозитарии прикладных объектов
Работать с различными типами данных языка X++
Обрабатывать исключительные ситуации
Создавать в языке X++ операции цикла, условий и запросов к БД
DocID: Type DocID here
Язык 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
Язык 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
Язык 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
Язык 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
Язык X++ Страница 2-5
Выберите тип String.
3 Задайте следующие свойства для нового расширенного типа данных:
4 Для задания свойства Label использована новая метка @REP1 меточного файла REP (см. Упражнение 8). Поиск существующих меток и создание новых производится в специальной форме Поиск меток. Вызовите форму на экран, нажатием на кнопку в правой части поля свойства Label.
5 В форме Поиск меток, нажатием на комбинацию клавиш Ctrl-N, создайте новую метку @REP1 в меточном файле REP. Текущий меточный файл задается на закладке Расширенно в поле Код меточного файла.
6 Определите русское (код языка Ru) значение метки - Оборудование. Код языка предварительно устанавливается в поле Язык.
7 В правой части формы Поиск меток нажмите кнопку
DocID: Type DocID here
Язык 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
Язык X++ Страница 2-7
9 Перенесите все созданные расширенные типы данных в соответствующую группу проекта RrepairModule (см. Упраженние 1).
Упражнение 12 Создание перечислимого типа данных
1 Откройте узел заданий Base Enums репозитария прикладных
объектов.
2 Для создания нового перечислимого типа данных нажмите на правую кнопку мышки на узле Base Enums и в выпадающем меню выберите пункт Создать Base Enums.
3 Определите следующие свойства для нового перечислимого типа:
Свойства Значение
Name RRepRepairStatus
Label @REP5 (Статус)
Остальные свойства определены системой по умолчанию.
DocID: Type DocID here
Язык 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
Язык X++ Страница 2-9
2 Проведите компиляцию набранного кода (F7 или кнопка Compile на панели инструментов) и, при отсутствии ошибок, выполните задание (F5 или кнопка GO на панели инструментов).
Упражнение 14 Создание запросов SQL
1 Создайте следующее задание Job4 и наберите в нем код:
DocID: Type DocID here
Язык X++ Страница 2-10
2 Проведите компиляцию набранного кода (F7 или кнопка Compile на панели инструментов) и, при отсутствии ошибок, выполните задание (F5 или кнопка GO на панели инструментов).
DocID: Type DocID here
Урок 3
Макросы
После изучения урока Вы сможете:
Создавать в репозитарии прикладных объектов новые макробиблиотеки
Объявлять и использовать в коде X++ макросы
DocID: Type DocID here
Макросы Страница 3-1
3.1 ОБЗОР
В данном уроке рассматриваются приемы работы с макросами в среде разработки MorphX.
Назначением макросов является возможность повторного использования операторов кода языка X++ в произвольных местах программы.
DocID: Type DocID here
Макросы Страница 3-2
3.2 УПРАЖНЕНИЯ
Упражнение 15 Определение макроконструкций в языке X++
1 Создайте новое задание Job5 и наберите в нем код:
2 Выполните задание (F5 или кнопка GO на панели инструментов).
Упражнение 16 Определение макроконстант
1 Создайте новое задание Job6 и наберите в нем код:
DocID: Type DocID here
Макросы Страница 3-3
2 Выполните задание (F5 или кнопка GO на панели инструментов).
3 Анализируя полученный результат, помните, что определение значений макросов происходит во время компиляции.
Упражнение 17 Создание и определение макробиблиотек
1 Откройте узел макробиблиотек Macros репозитария
прикладных объектов.
2 Для создания новой макробиблиотеки нажмите на правую кнопку мышки на узле Macros и в выпадающем меню выберите пункт Создать Macro.
3 В теле созданной макробиблиотеки Macro1 определите следующую макроконстанту:
DocID: Type DocID here
Макросы Страница 3-4
4 Дополните задание Job6, включив в него обработку макросов из созданной макробиблиотеки:
5 Выполните задание (F5 или кнопка GO на панели инструментов).
DocID: Type DocID here
Урок 4
Таблицы
После изучения урока Вы сможете:
Создавать новые таблицы в репозитарии прикладных объектов
Создавать в таблицах поля, группы полей, индексы, связи к другим таблицам и действия при удалении
Перегружать системные и создавать новые пользовательские методы таблиц
Работать с табличными переменными в коде X++
DocID: Type DocID here
Таблицы Страница 4-1
4.1 ОБЗОР
В данном уроке рассматриваются упражнения для создания таблиц и их компонентов.
Таблицы – фундаментальные элементы функциональности. Состоят из записей. Записи состоят из полей. Набор полей в записях одинаковый, поэтому записи и поля еще называют строками и столбцами. Значение столбца также используется в контексте, где важно не одно значение в поле определенной записи, а все возможные (или существующие) значения во всех полях столбца. Каждое поле содержит наименьший фрагмент информации определенного типа. Поля могут быть простых типов, но предпочтительно пользоваться расширенными типами.
Все таблицы, созданные в MorphX, могут рассматриваться как определения классов. Записи в таком случае рассматриваются как объекты. Есть возможность ссылаться к полям записей, но перед этим необходимо определить так называемые табличные переменные. Таким образом, работа с полями таблицы организуется как последовательная обработка записей. Для создания табличной переменной необходимо создать новое или использовать существующее определение таблицы.
DocID: Type DocID here
Таблицы Страница 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
Таблицы Страница 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
Таблицы Страница 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
Таблицы Страница 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
Таблицы Страница 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
Таблицы Страница 4-7
AllowDuplicates No
Содержит поля RepairTypeID
9 После создания полей и индексов можно доопределить некоторые свойства таблицы, а именно:
Свойства Значение
TitleField1 RepairTypeID
TitleField2 Description
PrimaryIndex RepairTypeIDX
ClasterIndex RepairTypeIDX
10 Аналогично создайте таблицы RrepEquipmentGroup,
DocID: Type DocID here
Таблицы Страница 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
Таблицы Страница 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
Таблицы Страница 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
Таблицы Страница 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
Таблицы Страница 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
Таблицы Страница 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
Таблицы Страница 4-14
EquipmentID.
Упражнение 20 Определение действий при удалении
1 Откройте узел, содержащий таблицы, проекта RrepairModule. 2 В узле DeleteActions таблицы RrepEquipmentTable создайте
действие при удалении по отношению к таблице RRepRepairLine. Для этого нажмите правой кнопкой мышки на узле DeleteActions и в выпадающем списке выберите пункт Создать DeleteAction.
3 Определите следующие свойства для созданного действия при удалении:
DocID: Type DocID here
Таблицы Страница 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
Таблицы Страница 4-16
метод duration для отображения в полях форм и отчетов продолжительности ремонтных работ. Для этого нажмите правой кнопкой мышки на узле Methods и в выпадающем списке выберите пункт Создать Method.
3 В теле метода наберите следующий код:
4 Сохраните (кнопка на панели инструментов редактора) и откомпилируйте созданный метод таблицы (F7 или кнопка
).
5 Откройте узел групп полей FieldGroups таблицы RrepRepairLine и мышкой перетащите созданный display-метод в группу полей Дата.
6 Сохраните проделанные изменения (кнопка на панели инструментов формы проекта).
Упражнение 23 Перекрытие системных методов таблиц
1 Перекройте системный метод initValue таблицы
RrepRepairLine для инициализации некоторых значений полей по умолчанию. Для этого нажмите правой кнопкой мышки на узле Methods и в выпадающем списке выберите пункт Перекрыть метод\initValue.
2 В теле метода наберите следующий код:
DocID: Type DocID here
Таблицы Страница 4-17
3 Сохраните (кнопка на панели инструментов редактора) и откомпилируйте созданный метод таблицы (F7 или кнопка
).
DocID: Type DocID here
Урок 5
Формы
После изучения урока Вы сможете:
Создавать новые формы в репозитарии прикладных объектов
Задавать в формах источники данных, редактировать дизайн
Работать с визуальным редактор форм
Перегружать системные и создавать новые пользовательские методы форм
Открывать формы из репозитария прикладных объектов и проектов
DocID: Type DocID here
Формы Страница 5-2
5.1 ОБЗОР
В данном уроке рассматривается работа с формами среды разработки MorphX.
Форма состоит из источников данных, дизайна и методов, которые разработчик перекрывает или создает. Источник данных формы представляет собой список источников данных, каждый из которых связан с конкретной таблицей БД Axapta. При этом как весь источник данных, так и каждое поле источника данных могут содержать методы дополнительной обработки событий на форме. В случае нескольких источников данных формы между отдельными источниками можно использовать связь, определенную в узлах отношений таблиц. Дизайн – представляет собой вид формы и в большинстве случаев предпочтительным является автоматическое его формирование при простом переносе полей с помощью мышки.
При создании и редактировании дизайна форм рекомендуется максимально использовать возможность переноса полей из источника данных формы на элементы дизайна. Тем не менее, основная структура формы создается вручную.
Формы Страница 5-3
5.2 СКВОЗНОЙ ПРИМЕР
Сквозной пример данного урока предусматривает выполнение упражнений 24-27. Здесь также приведен порядок работы с формами модуля Управление ремонтами.
В упражнениях 24 и 25 создаются формы RrepRepairType, RrepEquipmentGroup и RrepEquipmentTable.
Метод active, создаваемый в упражнении 26, запрещает редактирование строк ремонтных работ со статусом Завершено. Системный метод modified, перекрытый на поле RepairTypeId источника данных формы RrepEquipmentTable, по умолчанию инициализирует значение поля Ставка при выборе Вида работ.
В упражнении 27 перекрываются системные методы clicked для кнопок начала и завершения ремонтных работ.
5.2.1 Справочники групп оборудования и типов ремонтов
Рассмотрим дизайн справочника (формы) групп оборудования:
Форма состоит из двух закладок: Обзор и Разное
На закладке Обзор указываются общие сведения о группе оборудования:
Формы Страница 5-4
Поле Описание
Группа оборудования Уникальный идентификатор (ключ) группы оборудования, используется для ссылок на группу
Название Необязательное название группы оборудования
На второй закладке представлены две группы полей. В группе полей Идентификация приводятся те же самые поля, что и на первой закладке. В группе полей Дебет присутствует единственное поле – Счет, в котором задается счет по дебету разноски затрат по ремонту.
Дизайн формы Виды ремонтных работ аналогичен:
Формы Страница 5-5
Форма также состоит из двух закладок: Обзор и Разное. На закладке Обзор указываются код, название видов работ, а также почасовая ставка:
Поле Описание
Вид работ Уникальный идентификатор (ключ) вида работ
Название Необязательное описание вида работ
Ставка Дневная ставка выполнения данного вида работы в основной валюте компании
На второй закладке представлены три группы полей. В группе полей Идентификация продублированы поля Вид работ и Название, в группе поле Ставка – поле Ставка. В новой группе полей Кредит создается поле Счет, в котором задается счет по кредиту разноски затрат по ремонту.
5.2.2 Работа с формой Оборудование
Форма Оборудование является ключевой формой, с которой работает оператор модуля. В ней одновременно задается справочник всего оборудования на балансе предприятия и перечень запланированных и выполненных ремонтных работ по оборудованию.
Формы Страница 5-6
Рассмотрим подробнее дизайн формы Оборудование.. Форма состоит из двух частей: в верхней водится перечень оборудования, а в нижней – список ремонтных работ.
Рассмотрим поля на закладке Обзор в верхней части формы:
Поле Описание
Оборудование Уникальный идентификатор (ключ) единицы оборудования
Описание Необязательное описание оборудования.
Группа оборудования Группа, к которой относится оборудование. Обязательное для заполнения поле, с выпадающим справочником существующих групп оборудования
На закладке Разное в группе полей Идентификация должны быть указаны те же самые поля, что и на закладке Обзор.
Формы Страница 5-7
В нижней части формы на закладке Обзор можно видеть поля:
Поле Описание
Вид работ Обязательный для заполнения код вида произведенных работ (необходим выпадающий справочник)
Дата начала Дата фактического начала работ по ремонту. Непосредственному редактированию не подлежит
Дата окончания Дата фактического окончания работ по ремонту. Непосредственному редактированию не подлежит
Исполнитель Код сотрудника, ответственного за выполнение работ (из таблицы сотрудников предприятия)
Статус Статус выполнения работ: Запланировано, Начато, Завершено. Редактирование этого поля запрещено
Ставка Дневная ставка исполнителя работ. Значение по умолчанию подставляется при выборе Вида работ
По кнопке Обработка доступны функции регистрации начала работы (Начато) и ее завершения (Завершено).
Формы Страница 5-8
На закладке Разное в нижней части представлены:
Поле Описание
Группа полей Идентификация
Оборудование Код оборудования, по которому выполняются работы. Не редактируется, заполняется автоматически
Вид работ См. выше.
Проведено Ремонтные работы проведены в Главную книгу. Поле не редактируется
Группа полей Статус
Статус, Исполнитель
См. выше.
Группа полей Дата
Запланированная дата
Дата, на которую планировалось начать работы. Заполняется при создании записи о ремонте
Дата начала, Дата окончания
См. выше.
Формы Страница 5-9
Длительность Срок проведения ремонта в днях
Группа полей Примечание
Примечания Необязательные многострочные примечания
Процедура ввода нового оборудования не требует детального описания; рассмотрим поэтапную процедуру регистрации ремонтных работ:
№ Действие пользователя Отклик системы
1 Оператор открывает форму Оборудование, курсор на нужной записи об оборудовании
В нижней части формы отображается существующий перечень запланированных/выполненных ремонтных работ по выбранному оборудованию
2 Оператор переходит в нижнюю часть формы и создает новую строку (запись о ремонте) с помощью клавиш Ctrl-N
Появляется строка с записью о ремонте. Статус ремонта принимает значение Запланировано. В поле Запланированная дата проставляется текущая системная дата. В поле Исполнитель – код пользователя, соответствующий текущему пользователю системы
3 Оператор выбирает тип ремонта. При необходимости оператор корректирует Запланированную дату и сохраняет запись о ремонте
При выборе типа ремонта система автоматически проставляет почасовую Ставку
4 Как только исполнитель приступает к выполнению ремонтных работ, находит соответствующую запись о ремонте, нажимает кнопку Обработка и выбирает пункт Начато
Статус ремонтной работы меняется на Начато. В поле Дата начала проставляется текущая системная дата. Редактирование записи о ремонте с этого момента запрещается
5 Как только работа завершена, пользователь активизирует функцию Обработка/Завершено
Статус ремонтной работы меняется на Завершено. В поле Дата окончания проставляется текущая системная дата. В поле Длительность отображается длительность ремонта в днях, рассчитанная как (Дата окончания - Дата начала)
Формы Страница 5-10
5.3 УПРАЖНЕНИЯ
Упражнение 24 Создание форм с одним источником данных
1 Откройте узел форм Forms репозитария прикладных
объектов.
2 Для создания новой формы нажмите правой кнопкой мышки на узле Forms и в выпадающем меню выберите пункт Создать Form.
3 Вызовите на экран окно свойств созданной формы. Для этого нажмите правой кнопкой мышки на узле с наименованием формы и в выпадающем списке выберите пункт Свойства.
4 В окне свойств определите название формы RrepRepairType.
5 Добавьте в узел DataSources формы новый источник данных. Для этого позиционируем курсор на узел DataSources, нажимаем правую кнопку мышки и в выпадающем меню выбираем пункт Создать Data source.
6 Определите следующие свойства для нового источника данных:
Свойства Значение
Name RRepRepairType
Table RRepRepairType
Значения остальных свойств оставляем по умолчанию.
Формы Страница 5-11
7 Определите свойства дизайна формы:
Свойства Значение
Caption @REP9 (Виды ремонтных работ)
TitleDatasource RRepRepairType
8 На узле дизайна формы Design нажмите на правую кнопку мышки и выберите пункт Создать Control\Tab. Система создаст поле формы Tab, в котором можно создавать закладки.
9 Нажмите правой кнопкой мышки на поле формы Tab и выберите пункт Создать Control\TabPage. Создайте два поля TabPage и TabPage1 со свойствами:
Свойства Значение
Формы Страница 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.
Формы Страница 5-13
13 Сохраните проделанные изменения (кнопка на панели инструментов репозитария прикладных объектов).
14 Аналогично создайте формы RrepEquipmentGroup и RrepEquipmentTable со следующими источниками данных и дизайном:
Свойства Значение
Источник данных формы RrepEquipmentTable
Name RrepEquipmentTable
Формы Страница 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 перетащите поля
Формы Страница 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
Формы Страница 5-16
3 В дизайне формы RrepEquipmentTable измените свойства следующих элементов:
Свойства Значение
группа закладок Tab:Tab
Width Column width
Height Column height
таблица Grid:Grid
Width Column width
Height Column height
Формы Страница 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
Формы Страница 5-18
6 В группе закладок Tab:TabLine создайте две закладки со свойствами:
Свойства Значение
Закладка TabPage
Name OverViewLine
Caption @SYS9039 (Обзор)
Закладка TabPage1
Name GeneralLine
Caption @SYS2952 (Разное)
Columns Auto
в группе кнопок MenuButton:GRUP создайте две кнопки формы MenuItemButton и MenuItemButton1 :
Свойства Значение
Формы Страница 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 (аналогично перекрытию системных
Формы Страница 5-20
методов таблиц, см. Упражнение 23) и наберите следующий код:
2 Сохраните (кнопка на панели инструментов редактора) и откомпилируйте созданный метод (F7 или кнопка ).
3 Перекройте системный метод modified поля RepairTypeId источника данных RrepRepairLine (Поля источника данных находятся в узле Fields):
Формы Страница 5-21
Упражнение 27 Перекрытие системных методов в полях дизайна формы
1 Откройте узел методов Methods кнопки MenuItemButton:StartItemButton дизайна формы RrepEquipmentTable. Перекройте системный метод clicked и наберите следующий код:
2 Аналогично перекройте метод clicked для кнопки MenuItemButton:FinishItemButton:
Формы Страница 5-22
Урок 6
Запросы
После изучения урока Вы сможете:
Создавать новые запросы в репозитарии прикладных объектов
Задавать в запросах источники данных
Открывать запросы из репозитария прикладных объектов или проектов
Работать с системными классами Query
DocID: Type DocID here
Запросы Страница 6-2
6.1 ОБЗОР
В данном уроке вы научитесь создавать запросы в среде разработки Аксапта.
Запросы позволяют выбирать данные из таблиц для их вывода в формах и отчетах, или для их обработки в процедурах X++. Перед созданием запроса, необходимо определить из каких источников данных (таблиц) будут выбираться данные. Запросы не предназначены для визуального представления информации, но могут использоваться в составе форм и отчетов. Единственный визуальный элемент, с которым взаимодействует пользователь, это специально разработанная средствами X++ форма, в которой пользователь устанавливает параметры выполнения запроса при его запуске. Она используется в запросах по умолчанию. Программист может изменить эту форму, создать другую или вообще не использовать никакую форму при создании своего запроса.
Запрос состоит из трех компонентов: Форма SysQueryForm, иерархической структуры источников данных и методов запроса. Форма SysQueryForm состоит из трех закладок:
• Критерии отбора
• Сортировка
• Запись/Сохранение параметров
В этой форме пользователь настраивает параметры работы запроса при каждом его запуске. Форма умеет запоминать введенные значения.
Запросы Страница 6-3
6.2 СКВОЗНОЙ ПРИМЕР
Сквозной пример данного урока предусматривает выполнение упражнения 28.
В упражнении 28 создается запрос RrepRepairLine. Запрос позволяет выбрать записи из таблицы RrepRepairLine по заданным критериям в порядке заданной сортировке. Данный запрос используется в процедуре разноски в Главную Книгу стоимости завершенных ремонтных работ.
Запросы Страница 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. Сохраните полученный запрос (кнопка на панели
Запросы Страница 6-5
инструментов репозитария прикладных объектов) и перенесите в соответствующую группу проекта RrepairModule (см. Упражнение 1).
Упражнение 29 Открытие запроса
1. Откройте узел, содержащий запросы, проекта RrepairModule.
2. Выполните запрос RRepRepairLine нажатием правой кнопки мышки на узле с названием запроса и выбором пункта Открыть. Система выведет на экран системную форму запроса SysQueryForm.
3. Нажмите кнопку Расширенно и, помечая галочкой поля в дереве всех полей таблицы Ремонтные работы, добавьте в таблицу выборок критерий по исполнителю работ.
Запросы Страница 6-6
4. Перейдите на закладку Сортировка, где назначьте порядок чтения записей из таблицы по полю Начальная дата в возрастающем порядке.
Запросы Страница 6-7
5. На закладке Загрузить/Сохранить нажмите на кнопку Сохранить для сохранения текущих настроек.
6. Запуск запроса производится нажатием на кнопку ОК.
Упражнение 30 Создание запроса в коде X++ системными классами Query
1. Создайте в репозитарии прикладных объектов новое задание
Job7 и наберите в нем следующий код:
Запросы Страница 6-8
2. Проведите компиляцию созданного кода (F7 или кнопка Compile на панели инструментов) и, при отсутствии ошибок, выполните задание (F5 или кнопка GO на панели инструментов).
Урок 7
Классы
После изучения урока Вы сможете:
Создавать новые классы в репозитарии прикладных объектов
Создавать в классах статические и нестатические методы
Вызывать методы класса из других методов
Выполнять методы класса
DocID: Type DocID here
Классы Страница 7-2
7.1 ОБЗОР
В данном уроке вы научитесь работать с классами в среде разработки Аксапта.
Класс это программная конструкция, которая определяет данные (состояние), и методы (поведение) конкретной реализации класса. Класс состоит из членов, которые являются или переменными, или методами. Переменные являются данными класса. Методы представляют собой последовательности операторов, выполняющих действия над данными и определяющих поведение объекта.
Класс - не является объектом. Класс можно определить как проект, который определяет, как объект будет вести себя, когда будет создан на основе спецификации, объявленной классом. Класс создается в репозитарии прикладный объектов. Объект класса может быть создан только в коде X++ в методах классов, таблиц, форм или заданий. Для создания нового объекта класса служит оператор new.
Классы можно наследовать, причем в Аксапта реализована, так называемая, прямая модель наследования, т.е. любой класс может быть подклассом (быть порожденным) только одного другого класса. Подкласс наследует все методы и переменные от родительского класса, который называется суперклассом. Подклассы позволяют использовать не просто уже существующий код но и, что еще важнее, уже оттестированный код. Часть кода при этом может быть перекрыта, часть не использоваться, часть может быть написана заново, при этом в целом экономится время разработки, кодирования и тестирования.
Классы Страница 7-3
7.2 СКВОЗНОЙ ПРИМЕР
Данный урок, в рамках сквозного примера, включает описание процедуры разноски в Главную книгу стоимости ремонтных работ и выполнение упражнений 31 и 32.
В упражнениях 31 и 32 создается класс RRepLedgerPosting разноски стоимости ремонтных работ в ГК.
7.2.1 Разноска в Главную Книгу
Бухгалтер предприятия на периодической основе запускает функцию разноски в Главную Книгу стоимости завершенных ремонтных работ. При запуске функции перед пользователем должно появиться диалоговое окно с кнопками ОК, Отмена, Пакет и Выбрать. Назначение первых двух кнопок очевидно, третья используется для запуска функции в пакетном режиме, а четвертая – для установки дополнительных условий выборки записей о ремонтах.
При запуске функции система должна выбрать записи всех завершенных ремонтных работ, рассчитать стоимость работ по формуле Ставка * Длительность и провести их по счетам Главной Книги, указанным для группы оборудования, по которому выполняется ремонт (счет по дебету) и вида ремонта (счет по кредиту). Проводки регистрируются датой завершения соответствующего ремонта в основной валюте компании. После того, как проводка по очередному ремонту выполнена, в записи о соответствующем ремонте проставляется пометка Проведено, чтобы не было повторных проводок. Номер документа ГК извлекается из настроек модуля Производство.
Классы Страница 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.
Классы Страница 7-5
6. В теле метода main создайте объект текущего класса:
7. Проведите компиляцию созданного кода (F7 или кнопка Compile на панели инструментов). Перетащите созданный класс в соответствующий узел проекта RRepairModule.
Упражнение 32 Перекрытие в подклассе методов класса-родителя
1. Откройте узел, содержащий классы, проекта RrepairModule.
2. В методе ClassDeclaration класса RrepLedgerPosting объявите переменную класса QueryRun:
3. Перекройте метод canGoBatchJournal. Для этого нажмите правой кнопкой мышки на узле-заголовке класса и выберите пункт Перекрыть метод\ canGoBatchJournal. Переопределите код метода:
Классы Страница 7-6
4. Аналогично перекройте методы dialog, queryRun, new.
Классы Страница 7-7
5. Создайте методы description
и postLedgerTrans:
Классы Страница 7-8
Классы Страница 7-9
6. Перекройте метод run:
7. Дополните метод main вызовами методов promt и run:
8. Выполните класс RrepLedgerPosting. Для этого необходимо нажать правой кнопкой мышки на узле-заголовке класса и выбрать пункт Открыть.
Классы Страница 7-10
Урок 8
Меню и пункты меню
После изучения урока Вы сможете:
Создавать меню и пункты меню в репозитарии прикладных объектов
Привязывать к пунктам меню формы, отчеты или классы
Размещать меню в виде закладок формы главного меню
Объединять пункты меню в папки и размещать их в структуре главного меню
DocID: Type DocID here
Меню и пункты меню Страница 8-2
8.1 ОБЗОР
В данном уроке рассматривается создание меню как закладок главного меню, папок, пунктов меню для вызова на экран форм, отчетов и классов.
Меню и пункты меню в Аксапта служат для создания структуры пользовательского меню. Пользовательское меню представлено в форме главного меню в виде перечня закладок-модулей, каждая из которых состоит из дерева папок, разделителей и пунктов меню, вызывающих на экран форму, отчет или класс. Перечень закладок-модулей регламентируется структурой системного меню MainMenu. Каждая закладка представляет собой ссылку на существующее меню. Меню, в свою очередь, содержит папки и пункты меню. Пункты меню делятся на три категории Display, Output и Action, в зависимости от вызываемого объекта - формы, отчета или класса.
Меню и пункты меню Страница 8-3
8.2 СКВОЗНОЙ ПРИМЕР
Сквозной пример данного урока предусматривает выполнение упражнений 33-35.
Активизация системы управления ремонтами должна осуществляться посредством вызова пунктов меню. Пункты меню размещаются на отдельной закладке Управление ремонтами главного меню. Дизайн меню должен быть таким:
Пункты меню форм-справочников Группы оборудования и Виды ремонтных работ располагаются в специальной папке Настройки. Периодическая процедура разноски в ГК активизируется посредством пункта меню, расположенном в папке Периодические операции.
В упражнениях 33 и 34 создаются пункты меню для вызова на экран форм и запуска процедуры разноски в ГК.
В упражнении 35 создается меню модуля Управление ремонтами, где размещаются папки и, сгруппированные в них, пункты меню. В свою очередь, меню помещается в виде закладки в главное меню.
Меню и пункты меню Страница 8-4
8.3 УПРАЖНЕНИЯ
Упражнение 33 Создание пунктов меню для вызова форм
1. Откройте узел Display пунктов меню MenuItems репозитария
прикладных объектов.
2. Для создания нового пункта меню нажмите правой кнопкой мышки на узле Display и в выпадающем меню выберите пункт Создать Menu Item.
3. В окне свойств созданного пункта меню MenuItem1 установите следующие свойства:
Свойства Значение
Name RRepRepairType
Label @REP9 (Виды ремонтных работ)
Class Form
Object RRepRepairType
Меню и пункты меню Страница 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
Меню и пункты меню Страница 8-6
Label @REP15 (Разноска в ГК)
Class Class
Object RRepLedgerPosting
3. Сохраните созданный пункт меню и перенесите в проект RrepairModule.
Упражнение 35 Создание и размещение меню в виде закладки главного меню
1. Откройте узел Menu репозитария прикладных объектов.
2. Создайте новое меню. Для этого нажмите правой кнопкой мышки на узле Menu и выберите пункт Создать Menu.
3. В окне свойств созданного меню Menu1 установите следующие свойства:
Свойства Значение
Name RRepair
Label @REP16 (Управление ремонтами)
setCompany No
Меню и пункты меню Страница 8-7
4. Нажмите правой кнопкой мышки на узле созданного меню и в выпадающем списке выберите пункт Создать\Пункт меню.
5. Определите свойства пункта меню:
Свойства Значение
MenuItemtype Display
MenuItemName RRepEquipmentTable
6. Создайте три подменю (папки) в структуре меню. Для этого нажмите правой кнопкой мышки на узле меню и в выпадающем списке выберите пункт Создать\Подменю. Определите для них свойства:
Свойства Значение
Подменю Submenu1
MenuItemName @SYS8782 (Периодические операции)
Подменю Submenu2
MenuItemName @SYS2186 (Настройки)
Подменю Submenu3
MenuItemName @SYS6845 (Отчеты)
7. В подменю Периодические операции создайте пункт меню Разноска в ГК, привязав его к пункту меню RrepLedgerPosting. Для этого нажмите правой кнопкой
Меню и пункты меню Страница 8-8
мышки на узле Периодические операции и выберите пункт Создать Menu. Определите свойства пункта меню:
Свойства Значение
MenuItemtype Action
MenuItemName RRepLedgerPosting
8. В подменю Настройки разместите пункты меню RrepRepairType и RRepEquipmentGroup.
9. Сохраните полученное меню (кнопка на панели инструментов репозитария прикладных объектов) и перенесите в проект RrepairModule.
10. Найдите в узле Menu системное меню MainMenu. Нажмите правой кнопкой мыши на заголовке MainMenu и выберите в списке пункт Создать\Ссылка меню. Система выведет на экран вспомогательную форму Select:Menus. Мышкой перетаскиваем меню RRepair из формы Select:Menus в структуру MainMenu. Таким образом, как ссылка на меню, будет создана новая закладка в главном меню.
11. Сохраните все последние изменения (кнопка на панели инструментов репозитария прикладных объектов).
Урок 9
Отчеты
После изучения урока Вы сможете:
Пользоваться автоотчетом
Создавать новые отчеты при помощи мастера создания отчетов
Изменять источники данных и дизайн отчета
DocID: Type DocID here
Отчеты Страница 9-2
9.1 ОБЗОР
В данном уроке вы научитесь создавать отчеты в среде разработки Аксапта.
Отчет состоит из запроса, методов, дизайнов и шаблонов отчета. Отчет использует обычный запрос Query для доступа к данным, которые отчет представляет.
Среда разработки MorphX управляет выводом данных отчета при помощи событий, при наступлении которых выполняются определенные системные методы отчета. Разработчик может перекрывать действие системного метода, изменяя тем самым стандартное поведение отчета.
Дизайны отчетов представляют собой описание видимой структуры (бланка) отчета. В качестве дизайна отчета могут использоваться спецификация и шаблоны отчетов. Шаблоны отчетов определяют внешний вид пролога, эпилога, верхнего и нижнего колонтитула отчета. Кроме того, он может содержать программируемые секции. Спецификация содержит внешний вид тела отчета – основных данных запроса, выводимых на печать. На основе спецификации и шаблона может быть сгенерирован дизайн отчета, который позволяет строить сложные по структуре отчеты. Основное преимущество отчетов, построенных с использованием спецификаций, в том, что все такие отчеты автоматически изменяются с изменением шаблона, которого они используют.
Шаблоны отчетов используются для приведения всех отчетов компании к одному стилю, к единому корпоративному стандарту.
Отчеты Страница 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 ЕЛАН
…
В отчет не должны попадать запланированные ремонтные работы.
Отчеты Страница 9-4
9.3 УПРАЖНЕНИЯ
Упражнение 36 Использование автоотчетов
1. Выведите на экран форму Группы оборудования.
2. Если источник данных, привязанный к форме, не содержит данных, введите их:
3. Не закрывая формы, нажмите на комбинацию клавиш Ctrl+P или на инструментальную кнопку . Система выведет на экран диалоговую панель автоотчета.
4. Нажмите на кнопку Настройка принтера и в открывшейся форме определите канал вывода Экран.
5. Для определения критериев выборки данных и полей сортировки нажмите кнопку Критерии (см. Упражнение 29).
6. Нажмите на кнопку Расширенно. В открывшейся форме Генератор автоматических отчетов на закладке Выбор полей отчета определите таблицу и ее перечень полей, данные из которых будут отображены автоотчетом.
Отчеты Страница 9-5
7. На закладке Формат отчета определите выходную форму – Tabular и шаблон отчета – FrontPage.
8. Сохраните автоотчет и закройте форму генератора отчетов (кнопка Сохранить и закрыть).
9. Выведите отчет на печать (кнопка Печать в диалоговой панели автоотчета).
Отчеты Страница 9-6
Упражнение 37 Создание отчета с помощью мастера
1. Вызов мастера отчетов производится из раздела Сервис
системного меню (Сервис/Разработка/Мастера/Мастер отчетов). Создайте отчет, отображающий список оборудования и периодов ремонтных работ из таблиц RrepEquipmentTable и RrepRepairLine.
2. На первом шаге выставьте признак показа системных имен таблиц.
3. На втором шаге определите название отчета RRepRepairLine и его заголовок Ремонтные работы. Также подключите автосоздание метки в меточном файле REP.
4. На следующем шаге выберите в качестве главной таблицу RrepEquipmentTable зависимую – RrepRepairLine. Из этих таблиц будут выбираться данные для печати в отчете.
Отчеты Страница 9-7
5. На следующем шаге определите для таблицы RrepEquipmentTable список полей EquipmentID, Description, EquipmentGroupID. Для таблицы RrepRepairLine – RepairTypeID, StartDate, FinishDate, WorkerId, Rate.
6. Следующий шаг – определение итоговых полей. В качестве поля, по которому будет собираться сумма, определите поле Rate.
7. Определите сортировку в порядке возрастания по полям EquipmentID (таблица RrepEquipmentTable) и StartDate (таблица RrepRepairLine).
8. Печать подзаголовков и итогов групп следует отключить.
9. На шаге определения условий задайте для таблицы RrepRepairLine выборку данных по полю RepairStatus.
Отчеты Страница 9-8
10. Внешний вид отчета задается выбором выходной формы в виде таблицы (Tabular) и шаблона FrontPage.
11. На следующем шаге имеется возможность предварительного просмотра дизайна и выходной отчетной формы. Здесь же в группе полей Добавить отчет в меню установите значение Да, отчет будет вставлен в существующее меню.
12. Следующий шаг – определение места в главном меню, где будет создан пункт меню для вызова формируемого отчета. Определите вызов отчета на закладке Управление ремонтами в подменю Отчеты.
Отчеты Страница 9-9
13. После завершения работы мастера система создан новый отчет RRepRepairLine в узле Reports репозитария прикладных объектов. Также будет создан пункт меню для вызова отчета из главного меню.
14. Перенесите отчет RRepRepairLine в соответствующий узел проекта RRepairModule.
Упражнение 38 Доработка отчета, созданного мастером
1. Откройте узел, содержащий отчеты, проекта RrepairModule.
2. Измените свойства критерия RepairStatus источника данных RRepRepairLine_1:
Свойства Значение
Value !Запланировано
Status Lock
Отчеты Страница 9-10
3. В дизайне отчета измените свойства всех ячеек, привязанных к источникам данных, установив для них следующие одинаковые свойства:
Свойства Значение
Width 20.00 Char
LabelBold Bold
Отчеты Страница 9-11
4. Сохраните проделанные изменения (кнопка на панели инструментов проекта).
Урок 10
Внешние приложения
После изучения урока Вы сможете:
Создавать отчеты на основе шаблонов MS Word и Excel
Работать с классами ComWordDocument_RU и ComExcelDocument_RU
DocID: Type DocID here
Внешние приложения Страница 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, дают возможность использования интерфейсных элементов и кода, разработанных сторонними поставщиками; обеспечивают глубокую интеграцию с существующими приложениями.
Внешние приложения Страница 10-3
10.2 УПРАЖНЕНИЯ
Упражнение 39 Создание отчета с использованием шаблона MS Word
1. В текстовом редакторе MS Word создайте небольшой
документ-шаблон и сохраните как template.dot в директории templates диска С (C:\templates\ template.dot).
2. Обратите внимание на именованные ячейки CreateDate и Table (выделены серым цветом). Имя ячейки можно задать в диалоговой панели свойств в поле Bookmark.
Внешние приложения Страница 10-4
3. Создайте новый класс RrepOutputToWord, состоящий из методов makeDocument, saveDocument, run и main. Класс прочитает данные из таблицы RrepEquipmentGroup и отобразит их в новом документе Word, созданном на основе шаблона.
Внешние приложения Страница 10-5
Внешние приложения Страница 10-6
4. В результате выполнения класса RrepOutputToWord будет открыт текстовый редактор Word c формированным отчетом:
Упражнение 40 Создание отчета с использованием шаблона MS Excel
1. В табличном процессоре MS Excel создайте шаблон
templаte.xlt и сохраните в директории templates диска C:
Внешние приложения Страница 10-7
2. В отличие от документа Word в документе Excel не нужно создавать именованные ячейки.
3. Создайте новый класс RrepOutputToExcel, состоящий из методов makeDocument, saveDocument, run и main.
Внешние приложения Страница 10-8
Внешние приложения Страница 10-9
4. В результате выполнения класса RrepOutputToExcel будет открыт табличный процессор Excel c формированным отчетом:
Урок 11
Функциональные ключи
После изучения урока Вы сможете:
Создавать функциональные ключи в репозитарии прикладных объектов
Привязывать объекты приложения с функциональными ключами
DocID: Type DocID here
Функциональные ключи Страница 11-2
11.1 ОБЗОР
В данном уроке вы научитесь создавать и работать с функциональными ключами.
Функциональные ключи - уникальная особенность Аксапта, придающая системе необычайную гибкость. Каждый функциональный ключ отвечает за одну или более функциональностей в приложении, и, отключив функциональный ключ, вы тем самым отключаете соответствующую функциональность системы. Функциональные ключи используются в следующих целях:
• Для подключения и отключения определенных функциональных возможностей системы в целом;
• Для настройки прав каждого профиля доступа.
Функциональные ключи имеют сложную иерархическую организацию – на нижнем уровне они открывают/закрывают доступ к отдельным полям таблиц, форм, отчетов. На более высоком уровне – доступ к таблицам, пунктам меню, меню и, наконец, на верхнем уровне – доступ к модулям. Функциональные ключи, отвечающие за доступ к данным, регулируют еще и права доступа: «только на чтение», «редактирование», «удаление», «добавление».
Функциональные ключи Страница 11-3
11.2 СКВОЗНОЙ ПРИМЕР
Сквозной пример данного урока предусматривает выполнение упражнения 41.
В упражнении 41 создается иерархия функциональных ключей, позволяющая управлять доступом к функциональности модуля Управление ремонтами.
Функциональные ключи Страница 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.
Функциональные ключи Страница 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
Функциональные ключи Страница 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
Функциональные ключи Страница 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 также привязывается к следующим объектам модуля:
Функциональные ключи Страница 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 следующим кодом:
Функциональные ключи Страница 11-9
Вопросы к тренингу
DocID: Type DocID here
Вопросы к тренингу Страница 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
Вопросы к тренингу Страница 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. Поля примечаний
Вопросы к тренингу Страница 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. Как графически представляется связь «один ко многим»?
Вопросы к тренингу Страница 12-5
a.
b.
c.
d.
e.
11. Какие методы не поддаются отладке с помощью стандартного отладчика при работе с системой через тонкого клиента?
a. Статические методы
b. Динамические методы
c. Методы, выполняемые на сервере
d. Методы, выполняемые на клиенте
e. Любые методы
12. Каково стандартное назначение статического метода main() на любом классе? Выберите два варианта ответа.
a. Инициализация глобальных переменных класса
b. Для вызова класса через пункт меню
c. Для вызова класса из репозитария прикладных объектов
d. Для создания объекта класса
e. Для удаления объекта класса
13. Согласно общему соглашению об именовании объектов, как должно начинаться наименование метода, проверяющего некоторое условие, причем, если условие не выполнено, метод возвращает значение FALSE без вывода сообщений?
Вопросы к тренингу Страница 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
Вопросы к тренингу Страница 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