Вы находитесь на странице: 1из 114

Navision

Navision


. Navision a/s
. Navision a/s
, ,
, ,
,
,
.
- .
,

Navision a/s.


.
COPYRIGHT
Copyright 2002 Navision a/s, Frydenlunds All 6, 2950 Vedbaek,
Denmark. All rights reserved.

, ,
TM
Navision a/s Navision
Development a/s. Microsoft, Windows, Windows NT, SQL
Server BackOffice
Microsoft,
.
Navision a/s Navision Development
http://trademarks.navision.com
Arial.
Microsoft Business Solutions CIS.
DocID: AT-360-SST-002-v.01.00-RURU

1.

1-1

1.1

1-2

1.2 ?

1-3

1.3

1-6

2.
ODBC NAVISION

2-1

2.1 C/ODBC

2-2

2.2 C/ODBC

2-4

2.3
C/ODBC-

2-5

2.4

2-11

2.5 Navision

2-15

2.6 C/ODBC

2-19

2.7

2-25

3.
C/FRONT NAVISION

3-1

3.1 C/FRONT

3-2

3.2 C/FRONT

3-3

3.3
DLL OCX

3-5

3.4 Visual Basic

3-8

3.5 Microsoft Excel

3-15

3.6
C/FRONT

3-16

3.7

3-17

4.

NAVISION

4-1

4.1
OCX

4-2

4.2 OCX

4-3

4.3

4-5

4.4

4-8

4.5

4-12

4.6

4-14

4.7

4-17

5.

NAVISION

5-1

5.1 Navision

5-2

5.2

5-4

5.3

5-10

5.4

5-15

5.5 5-20
5.6

5-23

5.7

5-26

A.
,

A-I

A.1

A-II

A.2
C/AL COM

A-III

A.3
COM C/AL

A-V



Navision (Navision
Programming), , ,
Navision (Navision Solution
Development).

,
.

Navision,

Navision (Navision Attain Consultant in
Programming).


Navision (
).

Navision
,
,
Navision
,
.
.

1-2

Navision

1.1
, Navision
. ,
C/SIDE , C/SIDE-.
,
,
Microsoft Word, Microsoft Excel, ODBC Microsoft
Visual Basic.

, Navision,
Navision .
:

1:

2: ODBC Navision

3: C/Front

4: OCX Navision

5: Navision C/AL

, .
,
.
, .
, .
.

1-3

1.2 ?

.
, ,
Navision. ,
,
Navision .

Navision.

,
, .
- ? ,
,
,

.
, .

ODBC, OCX, Automation C/Front?


ODBC , Open DataBase
Connectivity ( ),
,
Microsoft. ODBC
,
. ODBC
( )
.
,
. , ,
ODBC- (ODBC-compliant ). ,
ODBC-,
.
OCX OLE Custom control.
,
Windows. OCX
.ocx. OCX
,
Microsoft. VBX,
Visual Basic.

1-4

Navision

VBX, OCX
ActiveX. ActiveX
OCX. , ActiveX-,
Microsoft Internet Explorer, OCX-.
OCX-,
. ,
.
OCX .
OCX,
Navision, , Borland Delphi,
Microsoft Visual C++ Visual Basic.
(Automation) OLE. OLE-

. ,
,
(automation server), ,
, ,
(automation controller, client). C/SIDE
,
OCX ( ). , Navision
.
Navision
Microsoft, Word, Excel, Outlook.
OCX, (Automation)
COM- Microsoft.
COM 16
. ,
Microsoft .
COM-
( ) C/SIDE,
COM. , ,
,
COM-. ,
COM-,
C/AL.
C/FRONT ,
Navision. C/FRONT
Navision Server,

1-5


Navision. C/FRONT
C.
,
Navision ,
.
C/Front DLL-,
, OCX-,
.

?
ODBC C/Front Navision,
Navision. OCX
Navision
/ .

1-6

Navision

1.3

ODBC?

OCX?

(Automation)?

Navision ?

C/Front?
a.


MS Access

b.

,
Navision

c.

,
C/SIDE

d.

, ODBC

COM- Navision?

C/ODBC C/Front?

1-7

ODBC?
Open DataBase Connectivity

OCX?
OLE Custom Control

(Automation)?
OLE- (OLE Automation)

Navision ?

C/Front?
,
C/SIDE

COM- Navision?
OCX Automation

C/ODBC C/Front?
C/ODBC C/Front
Navision.

1-8

Navision

2
ODBC
Navision

C/ODBC Navision. ,

C/ODBC .
.

C/ODBC

C/ODBC

C/ODBC

Navision

C/ODBC

2-2

Navision

2.1 C/ODBC
C/ODBC Navision
Open DataBase Connectivity (ODBC) Navision.
C/ODBC Navision
, ODBC.
C/ODBC ,
ODBC, Navision.
,
,
Navision C/ODBC-.
ODBC- ,
Windows 98, Windows NT, Windows 2000 UNIX (AIX).
,
- .

C/ODBC
C/ODBC .
(Application)
ODBC- SQL-
.
(Driver Manager)
. ODBC .
(Driver) ODBC-,
SQL- ,
.
,
,
.
(Data source) ,
,
, , ( ),
.

ODBC Navision

2-3

. -,
,

. -, ODBC
: ,
.

-, SPI (service provider interface).
ODBC (API) ; ..
.

2-4

Navision

2.2 C/ODBC

ODBC Navision. ODBC,
,

,
.
, ,
, C/ODBC-
Navision. -, C/ODBC-,
C/ODBC ( 1700). -,
Navision ,
. ,
, C/ODBC-
,
C/ODBC. , ,
,
. , ,
(fin.flf), ,
C/ODBC.
(Sessions) :

ODBC-;

C/Side- (.. ,
Navision).

ODBC Navision

2-5

2.3 C/ODBC-
C/ODBC,
Navision. C/ODBC-
, Navision,

C/ODBC- Windows NT, Windows 98 Windows 2000:
1

setup. Codbc
subfolder - Navision product CD.
Welcome.
Microsoft Installer.

, Next
.

windows\system
Windows 98, winnt\system32 Windows NT
Windows 2000. C/ODBC
C/ODBC . ,
Setup Completed. Finish,
.


,
DSN. DSN,
Data Sources (ODBC).
,
, .
ODBC Data Source Administrator,
, DSN .
DSN , ,
DSN.
DSN,
.

2-6

Navision

System DSN, Add.


.

C/ODBC 32 bit driver


Finish. .
.

,
. , C/ODBC
, Program Folder
fin.exe.

ODBC Navision

2-7

Navision C/ODBC-
.

,
; , ,
, ,
.
, ,
. ,
, , User ID Password
C/ODBC . ,

,
Navision. ,
, .
, Navision ,
,
.

C/ODBC. Navision
Navision client,
C/ODBC.

, Navision, C/ODBC.

C/ODBC.

C/ODBC
C/ODBC,
Navision
,
.
C/ODBC, .
C/ODBC-,
.
1

Tools, Security, Roles. Roles.

2-8

Navision

Edit, Insert New ( F3),


, .

Role ID ,
, CODBC.

Name , ,
C/ODBC.

Enter ,
.

,
.
1

Roles CODBC,
.

Role, Permissions.
Permissions. , .
Permissions ,
.
.
Navision, , .

, Object Type AssistButton


Table Data.

Object ID AssistButton
Object List 2000000006,
Company.

Insert AssistButton, <Blank>


ENTER.
Insert .

5 Modify Delete.

(Read) (Execute).

Permissions
Object Type AssistButton,
System.

ODBC Navision

2-9

Object ID AssistButton
Object List 913, C/ODBC.

, .


C/ODBC-
Navision.
Navision . Installation
and System Management Navision Server Microsoft SQL
Server Option.
,
Navision C/ODBC.

C/ODBC
C/ODBC.
C/ODBC Setup Options
. C/ODBC Options.

C/ODBC-,
, C/ODBC.
, Commit Cache

.
Tmp Path.
. ,
Enable BLOB fields,
BLOB- .
Identifiers ,
( ) Navision
. ,

2-10

Navision

SQL-. , Microsoft Query


(, No.,
). Microsoft Query
,
All Except DOT Identifiers.
SQL- ,
.
C/ODBC Guide.
, OK C/ODBC Options C/ODBC
Setup.

C/ ODBC .

ODBC Navision

2-11

2.4
, C/ODBC-,
Navision.
Customer Delinquent.
: Customer No_, Due Date, Document Type, Document No_,
Document Date, Amount, Open. ,
(Age), Age.
, .
1

Microsoft Excel
.

Data, Get External Data, Create


New Query. (Query Wizard),

().

, ,
Next.

2-12

Navision

,
. ,
, .

, False = 0 1 = True.
5

(Filter Data),
Next.

.
, Customer No Due
Date. , ,
, Next.

ODBC Navision

2-13

;

Microsoft Query (View data or edit query in Microsoft Query),
Finish.

,
.

SQL-,
Open SELECT. SQL-,
, :
SELECT "Cust_ Ledger Entry"."Customer No_", "Cust_
Ledger Entry"."Due Date, "Cust_ Ledger
Entry"."Document Type", "Cust_ Ledger Entry"."Document

2-14

Navision

No_", "Cust_ Ledger Entry"."Document Date", "Cust_


Ledger Entry".Amount
FROM "Cust_ Ledger Entry" "Cust_ Ledger Entry"
WHERE ("Cust_ Ledger Entry".Open=1)
ORDER BY "Cust_ Ledger Entry"."Customer No_", "Cust_
Ledger Entry"."Due Date"
File Return Data to
Microsoft Excel:

,
Age, (
,
).

ODBC Navision

2-15

2.5 NAVISION

. MS Access 97 (
) Navision.
, Microsoft
Access.
1

Microsoft Access, Blank Database,


OK.

File, Get External Data,


Link Tables. .

2-16

Navision

Files of type ODBC Databases().


. Machine Data
Source.

(Data Source Name),


, OK.

File, Get External Data, Link Tables.


. Location OK.

ODBC Navision

2-17

.
:

BLACK :
Code

Name

Address

City

Country

Post

Contact

Code
BLACK

Black

2 Late St

Atlanta

USA

30096

ware-

Joe B.
Cool

house

C/ODBC-,
Navision ,
.

, C/ODBC, .
, ,
Navision, . ,
, ,
Navision .

C/ODBC-

2-18

Navision

(holding table).
C/AL
, .
. ,
,
, - .
Navision Warehouse Management,
Setup, . ,
BLACK, . ,
.
, Country . .
BLACK:

, ,
. Country Code ( ) US.
,
. , ,
(Post Code).
, , . ,
.
,
C/ODBC.
, ,
,
C/AL-
.

ODBC Navision

2-19

2.6 C/ODBC-
C/ODBC .
, Navision C/ODBC
.
, (flow filters)
Navision
.
C/ODBC (outer
joins).
C/ODBC Navision Server.
ODBC SQL Server Option,
Microsoft SQL ODBC.

Microsoft ODBC SQL statements,


FlowFields. FlowFields
Navision,
Microsoft ODBC, .
, ,
flow field .

SQL DTS OLE-DB, C/ODBC


OLE-DB.
Navision ,
: "Expected lexical element
not found" ( ),
(, SQL).


,
1700. ,
, C/ODBC
Navision. ,
, .

2-20

Navision

C/ODBC
. ,
C/ODBC-
C/ODBC Setup.
,
C/ODBC Navision.

Program
C/ODBC Setup.

(multipart database)
. , (),
, (+).
, ,
.

BLOB-,
Enable BLOB Fields C/ODBC Options
. , BLOB- .
, BLOB-
ODBC.

,
.

(company) C/ODBC. :
DSN.

,
C/ODBC .


. ,
, ,

(company). ,
, DNS,
. ,

C/Front-.

ODBC Navision

2-21


C/ODBC Microsoft Access,
.

(, "Name
2"),
Null , Variant.
Microsoft Access.
Microsoft Knowledge Base .
Microsoft Access . C/ODBC
,
Navision.
Navision
NULL .
SQL- Modify VBA- MS
Access, , .

Microsoft Access ODBC


table File Data. Access (MS Jet)
:
Reserved error code (-7778)
Reserved error code , MS Jet
DSN= ODBC-.
: ODBC Administrator,
(C/ODBC, 32 ) System DSN, CODBC
SDSN .
(C/ODBC, 32 ) File
Data Source, CODBC FDSN.
, File Data Source
. ( File Data Source
C:\Program Files\Common Files\Odbc). CODBC FDSN.dsn
[ODBC]
DRIVER=C/ODBC 32 bit

2-22

Navision

[ODBC]
DSN=CODBC SDSN
File Data Source
CODBC SDSN. ,
File Data source,
System Data Source.

Access
, Access ,
, C/ODBC
, Access .
SQL-:
SELECT * FROM Customer

Customer. ,
Access, SQL- :
SELECT * FROM Customer WHERE Field1 = ? OR
Field2 = ? OR Field 3 = ? etc.
Access 10 ,
10 .
,
, Access
.
1,2,3,4,5,6,7,8,9,10, 10
1 .
, SQL-
, Access
10 . ,
, C/ODBC
( ).
Window.

:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\
<Version>\Engines

ODBC Navision

2-23

<Version> Jet,
(, 4.0).
2

ODBC,
.

ODBC (DWORD)
SnapshotOnly 1 in the ODBC,
.

, MS Excel MS
Word MS Query,
.

"Connection in use" (
) C/ODBC
MS-Query?
MS-Query
. , MS-Query
AutoDisconnect MSQUERY.INI,
Windows.
[Microsoft Query]
AutoDisconnect=1

C/ODBC
C/SIDE? ,
C/SIDE ,
( ,
Integer). ,
.

,
ODBC-?
CODBC.ETX NODBC.ETX ( ).

\WINDOWS\SYSTEM ( Windows 98) \WINNT\SYSTEM32 (
Windows NT/2000 ).

C/ODBC ? , .
, ,
. Option ,

2-24

Navision

Text Code .

, .

ODBC Navision

2-25

2.7

C/ODBC Navision
( ):

Microsoft ODBC;

C/ODBC;

C/ODBC;

DSN.

?
C/ODBC, Navision.

? Navision
Microsoft ADO.

? C/ODBC
(outer joins).

? ODBC
,
Navision.

2-26

Navision

C/ODBC Navision
( ):

Microsoft ODBC;

C/ODBC;

C/ODBC;

DSN.

?
C/ODBC, Navision.
, C/ODBC .

? Navision
Microsoft ADO.
, Navision ADO.

? C/ODBC
(outer joins).
.

? ODBC
,
Navision.
.

3
C/FRONT
Navision

Navision
C/FRONT.
C/FRONT.
:

C/FRONT

C/FRONT

DLL
OCX

Visual Basic

Microsoft Excel


C/FRONT

3-2

Navision

3.1 C/FRONT
C/FRONT ,
C/SIDE. C/FRONT

C/SIDE C
C/SIDE.
C/FRONT
C.

C/SIDE , .
C/FRONT
Navision, , C/FRONT
, .
,
,
C/ODBC. C/FRONT
, C/ODBC,
,
Navision. ,
C/FRONT,
, Delphi, Kylix, C++, C Visual Basic.
C/FRONT Navision:
DLL C, OCX.
Microsoft Visual Basic 6.0 OCX.

C/FRONT Navision

3-3

3.2 C/FRONT
C/FRONT HTML-,
- Navision (product CD).
-
readme.txt - Navision.

C/FRONT ,
.dll- cfront.dll cfrontsql.dll.
. ,
CfrontDllName DLL-,
. SQL Server,
cfrontsql.dll. cfront.dll.

C/FRONT library (cfront.dll/cfrontsql.dll)


,
Navision. , Navision
Navision , SetNavisionPath
cfront.dll/cfrontsql.dll
, Navision, ,
Navision.
Navision
-:

dbm.dll

nc_netb.dll

nc_tcp.dll

slave.exe

fin.etx

fin.stx

fin.flf

3-4

Navision

C/FRONT
C/FRONT :

cfront.dll

C/FRONT C-API Navision Server

cfrontsql.dll

C/FRONT C-API SQL Server

cfront.ocx

C/FRONT OCX

cf.h

C/FRONT

libload.c

C,
cfront.dll

dberror.txt

cfront.chm

(C/FRONT OCX)

cfront.xls

Microsoft Excel (C/FRONT OCX)

Mfc42.dll

Microsoft Foundation Classes

msvcrt.dll

Microsoft Visual C
Run-Time Library

readme.txt

, :

sample.c

C/FRONT-

sample.exe

sample.fdb

Navision

sample.fbk

Navision

sample.txt

, ,

C/FRONT C-API

C/FRONT Navision

3-5

3.3 DLL OCX


C/FRONT API DLL OCX

C/FRONT API DLL OCX. C/FRONT API DLL
C,
,
DLL-,
_CDECL. OCX
Navision
, Microsoft Excel, Microsoft Word Microsoft Visual Basic.
C/FRONT (C/FRONT Reference Guide)
DLL
C, OCX.

.
DLL,
(online Help) ,
OCX .
, DLL OCX:
OCX . ,
-. ,
OCX
.

DLL, DBL_*,
OCX DBL_.
, ,
DBL_OpenDatabase, OpenDatabase.

GetLastErrorCode DLL LastError


OCX.

Field_2_Str DLL FieldToStr OCX.

OCX.
,
. OCX
.

3-6

Navision

OCX Time.

Allow
AllowKeyNotFound, AllowRecordExists, AllowRecordNotFound
AllowTableNotFound.


,
, GetFieldData AssignField
Variant.
OCX:

Alpha_2_Str

BCD_2_Str

Date_2_Str

Date_2_YMD

HMST_2_Time

Str_2_Alpha

Str_2_BCD

Str_2_Date

Str_2_Time

Time_2_HMST

Time_2_Str

YMD_2_Date

OCX (. Error
Handling C/Front
),
.
, ,
,
- .
OCX:

SetExceptionHandler

SetMessageShowHandler

C/FRONT Navision

3-7

OCX
.
OCX:

Exit

Init

,
GetFieldData
, OCX,
, ,
C.

GetFieldDataAddr

GetFieldDataSize

DLL
C-Toolkit for Navision 3.XX.
OCX.

FieldDataOffset

3-8

Navision

3.4 VISUAL BASIC


, ,
,
, Customer,
. , Visual Basic.
1

Visual Basic (Standard.Exe),


Open.

Project Window Project1,


Rename.
Cfront_Test.

Form1 Project Window


. :
Name = MainForm
Height = 6450
Width = 6650
Startup Position = 2 - CenterScreen

Projects ,
(CTRL + T).
Cfront OLE Control Module, Microsoft Common Dialog SP3
Microsoft FlexGrid Control 6.0 (SP3). ,
.

C/FRONT Navision

3-9

,
. View
Code. .
(General)
(Declarations) ,
public-.

Public NavisionPath As String

Public LicenseFileName As String

Public DatabaseFileName As String

Public CompanyName As String

Public UserId As String

Public TableNo As Long

Public TableHandle As Long

Public hRec As Long

Public GridRow As Integer

Public GridCol As Integer

.
Tools Menu Editor,
CTRL+E. File, Open,
Exit, View Write (. ):

3-10

Navision

, Open Exit.
, (
&) .
( )
.
7

OCX Components.
OCX (CFront) .
OCX .
:
Visible = No
(Name) = Cfront
.
, .

CommonDialog Components.
CommonDialog
. CommonDialog
,
Cfront.
CommonDialog1 CommonDialog.

C/FRONT Navision

3-11

MSFlexGrid Components.
MSFlexGrid component
. :

(Name) = TableBox
Top = 520
Height = 5655
Width = 6495
Rows = 0
TabIndex = 0
10

.
, , File Open.
Code
Open_Click. Open_Click
.

'If connecting to a Navision database


DriverName = "NDBCN"
ServerName = ""
NetType = "tcp"
CacheSize = 1000
UseCommitCache = 0
NTAuthentication = 0
UserId = ""
Password = ""

'If connecting to a SQL Server database


'DriverName = "NDBCS"
'NetType = "Named Pipes"
'CacheSize = 0
'UseCommitCache = 0
'NTAuthentication = 1 'Yes

SQL Server,
0 CacheSize UseCommitCache ,
Navision Server.

3-12

Navision

CommonDialog.ShowOpen
DatabaseFileName = CommonDialog.FileName
NavisionPath = Mid(CommonDialog.FileName, 1,
InStr(1, CommonDialog.FileName,
CommonDialog.FileTitle, vbTextCompare) - 2)
DatabaseFileName = CommonDialog.FileTitle
'Set the license file to be in the location where
'the database is located
LicenseFileName = NavisionPath + "\fin.flf"
CFRONT.SetNavisionPath NavisionPath
CFRONT.LoadLicenseFile LicenseFileName
CFRONT.CheckLicenseFile (9110)
Call CFRONT.ConnectServerAndOpenDatabase(DriverName,
ServerName, NetType, DatabaseFileName, CacheSize,
UseCommitCache, NTAuthentication, UserId,
Password)
CompanyName = "CRONUS International Ltd."
CFRONT.OpenCompany CompanyName
. ,
NDBCN for Navision Server
NDBCS for SQL Server.
/ ,
, . ,

-.
(company).
,
.

. ;
, ,
(handle),
, .
, .
,
,
C/Front. .
Code Exit
:
If TableHandle <> 0 Then
CFRONT.CloseTable (TableHandle)
End If

C/FRONT Navision

3-13

If CompanyName <> "" Then


CFRONT.CloseCompany
End If

If Connected Then
CFRONT.DisconnectServer
End If
CFRONT.ReleaseAllObjects
MainForm.Hide
, ,

, .
TableHandle,
Error 12000 Invalid Handle (
). CompanyName,
Error 1046 No Company Selected
( ). , ,
, , ,
, , , C/Front.
11

Code
View
:
Dim CurRow As Long
TableNo = 23 'Vendor
If Not MainForm.CFRONT.OpenTable(TableHandle,
TableNo) Then
MsgBox "Unable to Open Table 23 Vendor."
Return
End If

, ,
, Error
1001 Table does not exist ( ).
GridRow = 0
NumColumns = 1
FieldNo = MainForm.CFRONT.NextField(TableHandle, 0)
While FieldNo > 0
NumColumns = NumColumns + 1
TableBox.Cols = NumColumns
TableBox.Row = GridRow
TableBox.Col = NumColumns - 1
TableBox.Text =

3-14

Navision

MainForm.CFRONT.FieldName(TableHandle, FieldNo)
FieldNo = MainForm.CFRONT.NextField(TableHandle,
FieldNo)
Wend
'load the data
hRec = MainForm.CFRONT.AllocRec(TableHandle)
If MainForm.CFRONT.FindRec(TableHandle, hRec, "-")
Then
GridRow = 1
Do
RecFields = "" & GridRow
GridRow = GridRow + 1
FieldNo = MainForm.CFRONT.NextField(TableHandle, 0)
While FieldNo > 0
RecFields = RecFields & Chr(9) &
MainForm.CFRONT.FieldToStr(TableHandle, hRec, FieldNo)
FieldNo = MainForm.CFRONT.NextField(TableHandle,
FieldNo)
Wend
TableBox.AddItem RecFields
Loop Until MainForm.CFRONT.NextRec(TableHandle, hRec,
1) = 0
End If
MainForm.CFRONT.FreeRec hRec
, ,
3009 Invalid Row Value
( ).

C/FRONT Navision

3-15

3.5 MICROSOFT EXCEL


Navision ,
Budget.
, ,
. ,
OCX, Visual Basic,
.

3-16

Navision

3.6 C/FRONT
Windows
, C/FRONT.
C/FRONT
.
C/FRONT
-.
, , ( ,
..) .
,
, C/FRONT
. , .
C/FRONT . Navision,
ODBC- CFRONT
SERVER, .
.
C/FRONT; C/FRONT
.

C/FRONT Navision

3-17

3.7

C/FRONT?

C/FRONT ?

C/FRONT?

? C/FRONT
Navision Attain Client.

3-18

Navision

C/FRONT?
C/FRONT ,
C/SIDE.

C/FRONT ?

C/FRONT?

? C/FRONT
Navision Attain Client.

4

OCX Navision

,
OCX Navision
C/AL.
.


OCX

OCX

4-2

Navision

4.1 OCX
(Custom Controls)
OLE
ActiveX. - , *.ocx,
OCX-. ,
DLL, OCX.
OCX
, ,
,
,
.

.

OCX Navision

4-3

4.2 OCX
,
,
.
, OCX,
. OCX,
,

OCX. ,
OCX- ,
. , OCX-
,
Navision
.

Navision Attain,

(finsamp.ocx), CD. OCX
Microsoft Visual C++ 4.2 OLE
ControlWizard ClassWizard.
.

,
. , ,

.
,
,
C/SIDE, .
1


. C/OCX,
readme.txt .

Tools, Custom Controls.


:

4-4

Navision

Control, Browse, :

,
Open. .
,
. OK,
Custom Controls.
,
Tools, Custom Controls.
(.
):

OCX Navision

4-5

4.3
,
( ) OCX
.
,
,
.

OCX ,
, C/OCX.


,
:
1

View, C/AL Globals,


:

( FIN)
OCX .

4-6

Navision

Subtype AssistButton,
:

.
OK.

C/AL Globals ,
:

, Subtype
CLSID FinSamp.

OCX Navision

Subtype,
CLSID:

4-7

4-8

Navision

4.4
, C/AL
.
C/AL Symbol
Menu.
1

View, C/AL Symbol Menu, :

, (
),
.
,
F1,
.

OCX Navision

4-9

PVAL:

OK Apply C/AL Symbol


Menu, C/AL Editor
(,
):

,
Paste Arguments ,
. Paste Arguments ,

4-10

Navision


.
.
,
OCX Navision.
, ,
Navision.

. ,
,
Navision, Navision
.
C++ Navision .
A.

OCX.
PVAL
FinSamp:
Amount := Fin.PVAL(Rate,NoOfPeriods,-Payment,0,0);
Error
FinSamp:
Result := Fin.Error
OCX ,
, (property
arrays).
,
.

(subscripting). , ,
OCX- MyControl.
SHORT,
COLOR.
SHORT.
Result C/AL Integer,
C/AL :
Result := MyControl.COLOR(2,3);

OCX Navision

4-11

NewValue C/AL Integer,


COLOR[2][3]
:
NewValue := 4;
MyControl.COLOR(2,3,NewValue);


: Error ErrorCode.
(exception handling).
, Error ( Boolean)

TRUE, .
FALSE. ,
, .
, C/OCX Samples, ,
,
,
,
.
( Error TRUE),
ErrorCode ,
, ,
(,
).
C/AL
:
IF (Fin.Error) THEN
// do error handling, for example:
ErrorHandlerFunction(Fin.ErrorCode)
ELSE
// continue processing

4-12

Navision

4.5

, , ,
OCX- .
OCX
" OCX".
,
, OCX-,
.
OCX ,
. ,
,
.
,
, .
,

.fob, Navision.
, Navision
1024 . Navision Attain 3.00
250 . ,
Navision ,

.
, ,
, OCX.
, ,

OCX. , OCX .
,
, OCX . ,

.
,
. ..
, , OCX,
,
System ID 9140 ( C/OCX).

OCX Navision

4-13

, COM (OCX Automation) Navision.

.
, C/SIDE
( ,
).
,

.

. C/SIDE

Invoke IDispatch
interface EXCEPINFO ( , , Inside
OLE). .

,
Navision (. C/SIDE
callback- OCX).

4-14

Navision

4.6
,

Windows media player. Windows
Media Player 6.0 . ,

Microsoft. ,
(project leader) Microsoft

:

File Dialog Microsoft Common Dialog


(comdlg32.ocx)

Windows Media Player 6.0


(MSDXM.OCX)

.
1

(Text Box)
:

Editable = No
Focusable = No
Border = No

OCX Navision

4-15

MultiLine = Yes
SourceExpr = CaptionMsg
4

(Label)
:

Caption = File to Open


5

AssistEdit = Yes
SourceExpr = FileName
6

OnAssistEdit ,
5, .

MSCommonDialog.Filter := 'All Files|*.*|Text +


(*.txt)|*.txt|Pictures (*.bmp;*.ico)|*.bmp;*.ico';
MSCommonDialog.ShowOpen;
IF NOT MSCommonDialog.CancelError THEN
FileName := MSCommonDialog.FileName;
7

Caption = &Play
8

OnPush (Play)
.

WindowsMediaPlayer.AutoStart
:= TRUE;
WindowsMediaPlayer.ShowDisplay
:= TRUE;
WindowsMediaPlayer.AnimationAtStart := TRUE;
WindowsMediaPlayer.Open(FileName);
9

Caption = &Stop
10

OnPush (Stop)
.

WindowsMediaPlayer.Stop;

4-16

Navision

11

OnOpenForm

CaptionMsg := 'The following is an example of using +


two OCXs.\ \The first is the file dialog which +
makes use of Microsoft comdlg32.ocx that is used +
by Microsoft to prompt for a file name.\ \The +
second example takes the file name selected ' +
'and passes it to the Windows Media control to +
play the file selected.';
12

OnCloseForm

WindowsMediaPlayer.Stop;
CLEAR(WindowsMediaPlayer);
CLEAR(MSCommonDialog);

OCX Navision

4-17

4.7

OCX?

,
OCX?

OCX
?

OCX
Navision?

4-18

Navision

OCX?

,
OCX?

OCX. ,
.

OCX
?
OCX.

OCX
Navision?

5


Navision


(automation). ,
,
,
.
, .

Navision

5-2

Navision

5.1 NAVISION


.
Microsoft Word,
. ,
.
,
, .
, ,
,
(automation server).
MS Word, MS Excel, MS Outlook.

C/SIDE. ,
, C/SIDE (C/AL).
.
1

()
Automation.

()
Automation.

CREATE C/AL
, 1. CREATE
.

C/AL-
.

, CLEAR ()
.
,
.
4,
.

.
C/AL .
, ,
, . -, ,

Navision

5-3

, ,
,
. ,
,
,
, .
,
.
.
( CREATE)
.
,
, ,
( CREATE/CLEAR).
, ,

, .

5-4

Navision

5.2
,
( ) Automation
Automation Server .
,
.
,
. ,
.
(),

.
, ,
. Microsoft, ,
Visual
Basic. Tools, Macros,
Visual Basic Editor. ,
, ,
. ,
Microsoft Word, .
, Microsoft Excel,
, ,
.
, Microsoft Excel
10 .
.
,
.

Navision

View, C/AL Globals, :

Name Excel, DataType


Automation. Subtype,
AssistButton, :

Automation Server,
AssistButton, :

5-5

5-6

Navision


( ):

, C/AL
.
C/AL Symbol
Menu.
1

View, C/AL Symbol Menu F5,


:

Navision

5-7

, (
),
.
,
F1,
.
2

OK Apply C/AL Symbol


Menu, C/AL Editor
(,
):

,
Paste Arguments , .
Paste Arguments ,
.
.
,

5-8

Navision

OCX Navision.
, ,
Navision.

. ,
,
Navision, Navision
.
. A
" OCX
Controls Navision".

Report.

New .

Customer .


:
1

, View, C/AL Globals.

Record-,
Customer Amount. CustAmount.
Temporary Yes.

Automation- Microsoft
Excel 8.0 Object Library
Application . Excel.

Automation- Microsoft
Excel 8.0 Object Library
Workbook . Book.

Automation- Microsoft
Excel 8.0 Object Library
Range . Range.

Automation- Microsoft
Excel 8.0 Object Library

Navision

5-9

Worksheet . Sheet.
7

Automation- Microsoft
Excel 8.0 Object Library Chart
. Chart.

Text.
CustFilter 250.
CustDateFilter 30. j
30.

Option Sales (LCY),


Balance (LCY). ShowType.

10

Integer.
NoOfRecordsToPrint, i.

11

Decimal MaxAmount.

C/AL Globals
:

5-10

Navision

5.3

.
, .
Date Filter.
OnPreReport.
CustFilter := Customer.GETFILTERS;
CustDateFilter := Customer.GETFILTER("Date Filter");
OnPreDataItem
:
i := 0;
CustAmount.DELETEALL;
CurrReport.CREATETOTALS("Sales (LCY)","Balance (LCY)");
Microsoft Excel. ,
CREATE NewServer,
FALSE. ,
.
NewServer TRUE, CREATE(wdApp,
TRUE) Microsoft Excel.
,
, ,
(. ,
).
CREATE(Excel);
Microsoft Excel :
Excel.Visible(TRUE);
Microsoft Excel General Protection Fault,
Excel-, Microsoft
Excel . ,
Microsoft Excel ,
. Microsoft
Excel , ,
.
Microsoft Excel:

Navision

5-11

Book:=Excel.Workbooks.Add(-4167);
Sheet:=Excel.ActiveSheet;
Sheet.Name := 'TOP 10';
Add Workbooks,
.
ActiveSheet Application,
.
.
-4167.
. COM- C/SIDE (
Application Designers' Guide).
, , .
OnAfterGetRecord
CALCFIELDS, Sales (LCY)
Balance (LCY).
CALCFIELDS("Sales (LCY)","Balance (LCY)");
, .
CustAmount,
Customer No. ,
ShowType, . ,
,
.
IF ("Sales (LCY)" = 0) AND ("Balance (LCY)" = 0) THEN
CurrReport.SKIP;
CustAmount.INIT;
CustAmount."Customer No." := "No.";
IF ShowType = ShowType::"Sales (LCY)" THEN BEGIN
CustAmount."Amount (LCY)" := -"Sales (LCY)";
CustAmount."Amount 2 (LCY)" := -"Balance (LCY)";
END ELSE BEGIN
CustAmount."Amount (LCY)" := -"Balance (LCY)";
CustAmount."Amount 2 (LCY)" := -"Sales (LCY)";
END;
. , NoOfRecordsToPrint
i , NoOfRecordsToPrint,
i 1; .
,

5-12

Navision

,
.
CustAmount.INSERT;
IF (NoOfRecordsToPrint = 0) OR (i < NoOfRecordsToPrint)
THEN
i := i + 1
ELSE BEGIN
CustAmount.FIND('+');
CustAmount.DELETE;
END;
OnPostDataItem ,
:
Sheet.Range('A2').Value := 'No.';
Sheet.Range('B2').Value := 'Name';
Sheet.Range('C2').Value := 'Sales (LCY)';
, CustAmount.
, j 3.
CustAmount.
Customer.
SETRANGE No. CustAmount.Customer No..
,
.
, . ,
Customer No., Customer Name Amount (LCY) ,
.
IF CustAmount.FIND('-') THEN BEGIN
j:='3';
REPEAT
Customer.SETRANGE("No.",CustAmount."Customer No.");
Customer.FIND('-');
Sheet.Range('A'+j).Value := CustAmount."Customer
No.";
Sheet.Range('B'+j).Value := Customer.Name;
Sheet.Range('C'+j).Value := -CustAmount."Amount
(LCY)";
j:=INCSTR(j);
UNTIL CustAmount.NEXT = 0;
END;

Navision

5-13

,
Excel.
, .
- ChartWizzard,
. ChartWizzard
.
,
Chart-(ChartArea, Legend ..).
:
Range:=Sheet.Range('B3:C12');
:
Chart:=Book.Charts.Add;
Chart.Name := 'Top 10 Customers - Graph';
, :
Chart.ChartWizard(Range,-4100,2,2,1,0,0,'Top 10
Customers','Customer','Sales (LCY)');
ChartWizard([Source], [Gallery], [Format], [PlotBy],
[CategoryLabels], [SeriesLabels], [HasLegend], [Title],
[CategoryTitle], [ValueTitle], [ExtraTitle])
8
ChartWizard:

Source

xlRange ,

xlSheet.Range(A2:C3).

-4100

Gallery

Stacked Column
. .
"
"
COM C/SIDE (

).

5-14

Navision

Format


:
Microsoft Excel
.

PlotBy

2 xlRows

XlRowCol .


CategoryLabels

,

.
SeriesLabels

,

.
HasLegend

TRUE ,

. ,
Microsoft Excel
.

Title

Top 10

Customers.
,

ValueTitle

: (X)

Customer

Extra Title

: (Z)

Sales (LCY)

Navision

5-15

5.4
C/SIDE ,
( OCX-).
Automation, ,
.
WithEvents Yes.
, ,
AL-.
, "::<_>."
,
MyEventVar, MessageReceived(...),
MyEventVar::MessageReceived(...).
.
" C/SIDE" Application Designers
Guide.

,
, .
,
Automation ,
.

,
Microsoft Word
Navision. , ,
.
( 18 Customer
21 Customer Card).
1

18 (design)
. ID = 50000, WordDoc.

Blob.

Object Designer, Forms.


Form 21 Customer Card, Design,
.

5-16

Navision

Form Designer Customer,


View, Menu Items. Customer
:

Edit Word Document


.

Edit Word Document,


, F9
View, C/AL Code.

,
. :

MSWordApp

Automation

Microsoft Word 9.0 Object


Library.Applicaton

MSWordDoc

Automation

Microsoft Word 9.0 Object


Library.Document

MSWordDocs

Automation

Microsoft Word 9.0 Object


Library.Documents

MSWordRange

Automation

Microsoft Word 9.0 Object


Library.Range

FileName

Text

DocExists

Boolean

SaveChanges

Integer

250

Navision

5-17

NoPrompt

Integer

automation-, MSWordApp,
. ,
WithEvents Yes. ,
MSWordApp .
.

10

.
CreateWordDoc, ClearWordDoc.
:

CreateWordDoc()
IF ISCLEAR(MSWordApp) THEN
CREATE(MSWordApp);
ClearWordDoc()
CLEAR(MSWordRange);
CLEAR(MSWordDoc);
CLEAR(MSWordApp);
11


.
,
, ,
. ,
BLOB-, Word
. ,
. ,

,
. ,
OnPush, :

OnPush()
FileName := 'C:\TempNaviDoc.DOC';
SaveChanges := 0;
NoPrompt := 0;
DocExists := Rec.WordDoc.HASVALUE;
IF DocExists THEN BEGIN
IF EXISTS(FileName) THEN BEGIN
MESSAGE('You currently have a document open for
another customer.');
EXIT;

5-18

Navision

END ELSE BEGIN


Rec.CALCFIELDS(WordDoc);
Rec.WordDoc.EXPORT(FileName);
CreateWordDoc;
MSWordDoc:= MSWordApp.Documents.Open(FileName);
END;
END ELSE BEGIN
CreateWordDoc;
MSWordDoc:= MSWordApp.Documents.Add;
MSWordDoc.SaveAs(FileName);
END;
MSWordApp.Visible := TRUE;
, Navision
, .

C/AL,
.
12

, Word-,
TempNaviDoc ,
,
, .

DocumentBeforeClose MSWordApp, ,
. :

MSWordApp::DocumentBeforeClose(Doc : Automation
"'Microsoft Word 9.0 Object Library'.Document";VAR
Cancel : Boolean)
Doc.Save;
13

, ,
Microsoft Word,
, ,
, BLOB-,
, , .
BLOB- ,
Calcfields :

MSWordApp::Quit()
ClearWordDoc;
WordDoc.IMPORT(FileName);
CurrForm.UPDATE(TRUE);
CALCFIELDS(WordDoc);

Navision

5-19

IF NOT ERASE(FileName) THEN


MESSAGE('Unable to erase the file ' + FileName);
14

, ,
.
OnAfterGetCurrRecord :

CALCFIELDS(WordDoc);
, ,
. Navision CRM,

.

5-20

Navision

5.5

,
, , ,
.
, ,

. , ,
, ,
.
,

.fob, .

*Exception Handling). C/SIDE



Invoke
IDispatch EXCEPINFO (, ,
Inside OLE).
.

C/SIDE outgoing, .. ,
.
(coclass)
outgoing-, AL-
outgoing-.

39 .

1024
.

Navision
(connectable
object strategy) COM. Sink,

Navision, IDispatch ( IUnknown).

Navision

5-21

,
IDispatch.

30 .

, "::"
30 .


,
COM .

AL.

, .

AL. , , ,
Variant,
.
.

,
. ,

,
, .
(VAR-.
ByRe ) ,

.
. ,
.
float double (
C/AL Decimal)
-1E15 1E15.
.

5-22

Navision

string ( C/AL
Text) 1024
( ).
.

Navision

5-23

5.6
,
G/L Account Microsoft Excel .
,
.
:
1

, :


OnRun.
3

.
Account Types EndTotal, .

WITH GLAccount DO BEGIN


// We only want to look at the Income Accounts
SETRANGE("No.", '6000', '6995');
//We want to only look at the totals for each
category
SETRANGE("Account Type", GLAccount."Account
Type"::"End-Total");

5-24

Navision

,
.
I,
, .
, .
// Make sure there are records in the GLAccount table
IF FIND('-') THEN BEGIN
CREATE(Excel);
Excel.Visible(TRUE);
Book:=Excel.Workbooks.Add(-4167);
Sheet:=Excel.ActiveSheet;
Sheet.Name := 'Account Information';


.
, ,
.
,

-. ,
, Navision
.
Sheet.Range('A1').Value := 'No.';
Sheet.Range('B1').Value := 'Name';
Sheet.Range('C1').Value := 'Balance';

RowNo :='3';
TotalRows := 0;
REPEAT
CALCFIELDS(Balance);
Sheet.Range('A'+RowNo).Value := GLAccount."No.";
Sheet.Range('B'+RowNo).Value := GLAccount.Name;
Sheet.Range('C'+RowNo).Value := GLAccount.Balance;
RowNo :=INCSTR(RowNo);
TotalRows := TotalRows + 1;
UNTIL NEXT = 0;
END;
END;
6

, ,
, ,
- .
.

LastRow := FORMAT(3 + TotalRows);


Range:=Sheet.Range('B3:C'+LastRow);
Chart:=Book.Charts.Add;

Navision

Chart.Name := 'Income - Graph';


Chart.ChartWizard(Range,4100,2,2,1,0,0,'Income','Account','Balance');
CLEAR(Excel);

5-25

5-26

Navision

5.7


Navision?

,
Navision?

, , ,
CREATE?

,
FREE?

. .

Navision

5-27


Navision?



,
Navision?

, , ,
CREATE?

,
FREE?
, CLEAR.

5-28

Navision

A.
,


,
Navision
COM,
.
:


C/AL COM

COM
C/AL.

A-II

Navision

A.1
,
COM, ,

. , Microsoft Visual C++,
.
,
,
, , Visual C++,
C/AL. COM
C/AL, ,
.
C/AL Symbol Menu ,

COM.

A-III

A.2 C/AL
COM
, C/AL
COM.

C/AL

COM

Boolean

VARIANT_BOOL

(VT_BOOL)
Option

long (VT_I4)

Integer

long (VT_I4)

Decimal

CURRENCY

CURRENCY COM

(VT_CY)


,
15
4 .
, Decimal
C/AL

18 .


,

Decimal ,

CURRENCY.


CURRENCY. ,

Decimal
:

CURRENCY
4 .

Char

BSTR (VT_BSTR)

Text

BSTR (VT_BSTR)

A-IV

Navision

C/AL

COM

Code

BSTR (VT_BSTR)

Date

DATE (VT_DATE)

Time

void (VT_VOID)

Automation

TypedObject,
UntypedObject
(VT_DISPATCH)

InStream

VT_STREAM

OutStream

VT_STREAM

Variant

VARIANT
(VT_VARIANT)

A-V

A.3 COM C/AL


,
COM C/AL.

COM

C/AL

VT_UNKNOWN

InStream

OutStream


IID_IStream IID_SequentialStream.

,

.

short (VT_I2)

Integer

long (VT_I4)

Integer

float (VT_R4)

Decimal

double (VT_R8)

Decimal

CURRENCY

Decimal

(VT_CY)

CURRENCY COM

,
15 4
. ,
Decimal

18 .

DATE (VT_DATE)

Date

DATE
COM
.
C/AL (Date) (Time)

.
DATE COM,
,
DATE
COM Date
C/AL.

BSTR (VT_BSTR)

Text

A-VI

Navision

COM

C/AL

VARIANT_BOOL

Boolean

(VT_BOOL)
TypedObject/

Automation/OCX

UntypedObject
(VT_DISPATCH)
VT_EMPTY

Text

VARIANT

Variant

(VT_VARIANT)
Unsigned char
(VT_UI1), SCODE
(VT_ERROR)
SAFEARRAY
(VT_ARRAY)

(Variant) C/AL
unsigned char, SCODE SAFEARRAY
, .
C/AL.
ByRef,
C/AL . ,
, float,
C/AL Decimal.
Integer C/AL.
(: , ,
, , ,
COM
C/AL.)
COM
C/AL Symbol Menu, IDispatch. ,
COM-.
C/AL
Automation, ( )
COM-.
,
(automation server).

A-VII

,
. , Microsoft
Excel WORKBOOK. ,

USERDEF. C/SIDE USERDEF
: IDispatch Enumeration.
USERDEF IDispatch, ..
( )
GUID.
.
Automation .
, Microsoft Excel ,
WORKBOOK. ,
Automation
'Microsoft Excel 8.0 Object Library'.Workbook.
USERDEF Enumeration, ,
(, xl3DPie),
(, -4102).
Microsoft Office ,
VBA Object Browser.

A-VIII

Navision

Вам также может понравиться