Table of Contents
Preface
Chapter 1: The Basic Ingredients
Chapter 2: Tables
Chapter 3: Fields
Chapter 4: Forms
Chapter 5: Reports
Chapter 6: Introduction to C/SIDE and C/AL
Chapter 7: Intermediate C/AL
Chapter 8: Advanced NAV Development
Chapter 9: Designing NAV Modifications
Chapter 10: External Interfaces
Chapter 11: Design to Succeed
Index
- Chapter 1: The Basic Ingredients
- Some Unique NAV Terms Defined
- The C/SIDE Integrated Development Environment
- Object Designer Tool Icons
- Seven Kinds of NAV Objects
- More Definitions (Related to NAV)
- NAV Functional Terminology
- Getting Started with Application Design
- Tables
- Example: Table Design
- Example: Table Creation
- Forms
- Card Forms
- Tabular Forms
- Main/Sub Forms
- Matrix Forms
- Trendscape Forms
- All Forms
- Creating a Card Form
- Creating a List Form
- Reports
- Creating a List Format Report
- Tables
- Codeunits
- MenuSuites
- Dataports
- XMLports
- Integration Tools
- Backups and Documentation
- Summary
- Chapter 2: Tables
- Overview of Tables
- What Makes Up a Table?
- Table Naming
- Table Numbering
- Table Properties
- Table Triggers
- Keys
- SumIndexFields
- Expanding Our Sample Application
- Table Creation and Modification
- Keys
- Adding Some Activity-Tracking Tables
- New Tables
- Keys and SumIndexFields in Our Examples
- Types of Tables
- Totally Modifiable Tables
- Content-Modifiable Tables
- Read-Only Tables
- Summary
- Overview of Tables
- Chapter 3: Fields
- Fields
- Field Properties
- Field Numbering
- Renumbering a Field
- Changing the Data Type of a Field
- Field Triggers
- Some Data Structure Examples
- More Definitions
- Variable Naming
- Data Types
- Fundamental Data Types
- Numeric Data
- String Data
- Time Data
- Complex Data Types
- Data Item
- DateFormula
- Data Structure
- Objects
- Automation
- Input/Output
- References and Other
- Data Type Usage
- Fundamental Data Types
- FieldClasses
- Filtering
- Defining Filter Syntax and Values
- Experimenting with Filters
- Defining Filter Syntax and Values
- Summary
- Fields
- Chapter 4: Forms
- What Is a Form?
- Controls
- Bound and Unbound
- NAV Form Look and Feel
- Types of Forms
- Accessing the Form Designer
- What Makes Up a Form?
- Form Properties
- Forms Controls
- Explore
- Inheritance
- Experimenting with Controls
- Control Triggers
- Control Properties
- Experimenting with Control Properties
- Some Control Property Tips
- More Illumination with C/ANDL
- Update the Member Forms
- Testing Forms
- Creative Plagiarism
- Form Design Hints
- A Quick Tour of the Form Designer
- Keys to Learning NAV
- Summary
- What Is a Form?
- Chapter 5: Reports
- What is a Report?
- NAV Report Look and Feel
- NAV Report Types
- Report Types Summarized
- Report Naming
- Report Components Overview
- The Components of a Report Description
- Report Data Flow
- The Elements of a Report
- Report Properties
- Report Triggers
- Data Items
- Data Item Properties
- Data Item Triggers
- Data Item Sections
- Run-Time Formatting
- Report Wizard-Generated Sections
- Report Section Descriptions
- More Run-Time Formatting
- Section Properties
- Section Triggers
- Controls for Reports
- Control Properties
- Inheritance
- Request Form
- Request Form Properties
- Request Form Triggers
- Request Form Controls
- Request Form Control Triggers
- Processing-Only Reports
- Revising a Generated Report
- Revision—First Design
- Revision—Second Design
- Creating a Report from Scratch
- Creative Report Plagiarism
- Special Output Issues
- Printing PDF Files
- Printing HTML Formatted Output
- Printing to an Impact Printer
- Summary
- Chapter 6: Introduction to C/SIDE and C/AL
- Essential Navigation
- Object Designer
- Starting a New Object
- Some Designer Navigation Pointers
- Exporting Objects
- Importing Objects
- Text Objects
- Object Numbers
- Some Useful Practices
- Changing Data Definitions
- Saving and Compiling
- Some C/AL Naming Conventions
- Variables
- Global Variables
- Local Variables
- Special Working Storage Variables
- A Definition of Programming in C/SIDE
- Functions
- Basic C/AL Syntax
- Assignment and Punctuation
- Wild Cards
- Expressions
- Operators
- Object Designer
- Some Basic C/AL
- MESSAGE, ERROR, CONFIRM, and STRMENU Functions
- SETCURRENTKEY Function
- SETRANGE Function
- GET Function
- FIND–NEXT Functions
- BEGIN–END Compound Statement
- IF–THEN–ELSE Statement
- Indenting Code
- Essential Navigation
- Some Simple Coding Modifications
- Adding a Validation to a Table
- Adding Code to Enhance a Report
- Summary
- Chapter 7: Intermediate C/AL
- Development
- C/AL Symbol Menu
- Internal Documentation
- Computation—Validation Utility Functions
- TESTFIELD
- FIELDERROR
- VALIDATE
- ROUND
- TODAY, TIME, and CURRENTDATETIME Function
- WORKDATE Function
- Data Conversion Functions
- FORMAT Function
- EVALUATE Function
- DATE Functions
- DATE2DMY Function
- DATE2DWY Function
- DMY2DATE and DWY2DATE Functions
- CALCDATE Function
- FlowField-SumIndex Functions
- CALCFIELDS Function
- CALCSUMS Function
- Flow Control
- REPEAT–UNTIL Control Structure
- WHILE–DO Control Structure
- CASE–ELSE Statement
- WITH–DO Statement
- QUIT, BREAK, EXIT, SKIP, and SHOWOUTPUT Functions
- QUIT Function
- BREAK Function
- EXIT Function
- SKIP Function
- SHOWOUTPUT Function
- Input and Output Functions
- NEXT Function (with FIND)
- INSERT Function
- MODIFY Function
- Rec and xRec
- DELETE Function
- MODIFYALL Function
- DELETEALL Function
- Filtering
- SETRANGE Function
- SETFILTER Function
- COPYFILTER and COPYFILTERS Functions
- GETFILTER and GETFILTERS Functions
- MARK Function
- CLEARMARKS Function
- MARKEDONLY Function
- RESET Function
- InterObject Communication
- Via Data
- Via Function Parameters
- Via Object Calls
- Use the New Knowledge
- A Development Challenge for You
- Phase 1
- Phase 2
- Phase 3
- A Sample Approach to the Challenge
- Phase 1
- Phase 2
- Phase 3
- A Development Challenge for You
- Summary
- Development
- Chapter 8: Advanced NAV Development
- Callable Functions
- Codeunit – 358 Date Filter-Calc
- Codeunit 359 – Period Form Management
- Codeunit 365 – Format Address
- Codeunit 396 – NoSeriesManagement
- Codeunit 397 – Mail
- Codeunit 408 – Dimension Management
- Codeunit 412 – Common Dialog Management
- Sampling of Function Models to Review
- Codeunit 228 – Test Report-Print
- Codeunit 229 – Print Documents
- Some other Objects to Review
- Management Codeunits
- Documenting Modifications
- Multi-Language
- Multi-Currency
- Code Analysis and Debugging Tools
- Developer's Toolkit
- Relations to Tables
- Relations from Objects
- Source Access
- Where Used
- Try it Out
- Working in Exported Text Code
- Using Navigate
- Testing with Navigate
- The Debugger
- The Code Coverage Tool
- Dialog Function Debugging Techniques
- Debugging with MESSAGE
- Debugging with CONFIRM
- Debugging with DIALOG
- Debugging with Text Output
- Debugging with ERROR
- Developer's Toolkit
- Summary
- Callable Functions
- Chapter 9: Designing NAV Modifications
- Starting a New NAV Enhancement Project
- Design of NAV Modifications
- Knowledge is Key
- Creating a New Functional Area
- Advantages of Designing New Functionality
- Enhancing an Existing Functional Area
- NAV Development Time Allocation
- Data-Focused Design for New Functionality
- Define the Big Picture: The End Goals
- A Simple Sample Project
- Then Define the Little Pictures
- Sample Project Continued—1
- Define What Data is Required to Create the Pictures
- Sample Project Continued—2
- Define the Sources for the Data
- Sample Project Continued—3
- Define the Data "Views"
- Sample Project Continued—4
- Other Factors Must Always be Considered
- Define the Big Picture: The End Goals
- NAV Processing Flow
- Data Preparation
- Enter Transactions
- Provide for Additional Data Testing
- Post the Journal Batch
- Access the Data
- Continuing Maintenance
- Designing a New NAV Application Functionality
- Define the Data Tables
- Design the User Data Access Interface
- Design the Data Validation
- Appropriate Data Design Sequence
- Design Posting Processes
- Design Support Processes
- Double-Check Everything
- Summary
- Chapter 10: External Interfaces
- MenuSuites
- MenuSuite Levels
- MenuSuite Structure
- MenuSuite Internal Structure
- MenuSuite Development
- NAV Menus before V4.0
- Dataports
- Dataport Components
- Dataport Properties
- Dataport Triggers
- Data Item
- Data Item Properties
- Data Item Triggers
- Dataport Fields
- Dataport Field Properties
- Dataport Field Triggers
- Dataport Components
- XMLports
- XMLport Components
- XMLport Properties
- XMLport Triggers
- XMLport Data Lines
- XMLport Line Properties
- Element or Attribute
- XMLport Line Triggers
- XMLport Components
- Advanced Interface Tools
- Automation Controller
- NAV Communication Component
- Linked Server Data Sources
- NAV ODBC
- C/OCX
- C/FRONT
- NAV Application Server (NAS)
- Summary
- MenuSuites
- Chapter 11: Design to Succeed
- Design for Efficiency
- Disk I/O
- Locking
- C/SIDE versus SQL Server Databases
- SQL Server I/O Commands
- FINDFIRST Function
- FINDLAST Function
- FINDSET Function
- Design for Updating
- Customization Project Recommendations
- One at a Time
- Design, Design, Design
- Test, Test, Test
- Customization Project Recommendations
- Plan for Upgrading
- Benefits of Upgrading
- Coding Considerations
- Good Documentation
- Low-Impact Coding
- The Upgrade Process
- Upgrade Executables Only
- Full Upgrade
- Tips for Small Successes
- Cache Settings for Development
- Two Monitors
- Simple System Administration
- Careful Naming
- Tools
- Code Coverage
- Client Monitor
- Creating Help for Modifications
- Implementation Tool
- Other Reference Material
- Summary
- Design for Efficiency


