Адрес этой странички:
http://d1cv8.narod.ru/top_003/d1cv8_20070827_001/d1cv8_20070827_002.htm Дата: 27.08.2007 Интернет-приложение к книге "Delphi и 1С:Предприятие.Программирование информационного обмена" |
Глава 3. Подключение к
1С.
Создание Delphi-компонента, реализующего
функционал подключения к 1Cv7.
Шаг N 2
Сделаем следующие изменения (красный цвет) в тексте, автоматически созданном Delphi для нашего компонента.
type
TConnectTo1Cv7 = class(TComponent)
private
{ Private declarations }
//Флаг:
//если true - соединение с программой
1С:Предприятие открыто,
//в противном случае - false
fActive : boolean;
//ссылка на 1С:Предприятие, как сервер OLE Automation
fole1Cv7 : oleVariant;
//--------------------------------------------------
//ИНИЦИАЛИЗАЦИЯ ПРОГРАММЫ
1С:ПРЕДПРИЯТИЕ
//строка инициализации программы
1С:Предприятие
fInitStr : string;
//Имя программы 1С:Предприятие, как сервера OLE Automation
fAppName : string;
//Каталог (папка) размещения базы данных 1С
//(к которой подключаемся)
fDirName : string;
//Имя Пользователя
fUserName : string;
//Каталог (папка) Пользователя
fUserDir : string;
//Пароль для авторизации Пользователя
fPSW : string;
//Флаг: если true - режим монопольного доступа
fMono : boolean;
//Флаг: если true - при запуске 1С:Предприятие
//будет видима графическая заставка
программы.
fNo_Splash_Show :
boolean;
//--------------------------------------------------
protected
{ Protected declarations }
//Процедура формирования строки
инициализации
//программы 1С:Предприятие (подробно
см. 19-20 книги).
procedure BuildInitStr;
//Метод, реализующий подключение
(отключение) к 1Cv7,
//как серверу автоматизации
procedure mSetActive(Value :
boolean);
//метод, "отвечающий" за изменение
значения fAppName
procedure mSetAppName(Value :
string);
//метод, "отвечающий" за изменение
значения fDirName
procedure mSetDirName(Value :
string);
//метод, "отвечающий" за изменение
значения fUserName
procedure mSetUserName(Value :
string);
//метод, "отвечающий" за изменение
значения fUserDir
procedure mSetUserDir(Value :
string);
//метод, "отвечающий" за изменение
значения fPSW
procedure mSetPSW(Value :
string);
//метод, "отвечающий" за изменение
значения fMono
procedure mSetMono(Value :
boolean);
public
{ Public declarations }
//"Опубликуем" значение fole1Cv7, как
свойство (только для чтения)
property ole1Cv7: oleVariant
read fole1Cv7;
//"Опубликуем" значение fInitStr, как
свойство (только для чтения)
property InitStr: string read
fInitStr;
//Конструктор компонента
(унаследованный от TComponent)
constructor Create(AOwner:
TComponent); override;
//Деструктор компонента
(унаследованный от TComponent)
destructor Destroy; override;
published
{ Published declarations }
//Свойство Active компонента
//(подключение (отключение) к
1Cv7,как серверу автоматизации)
property Active: boolean read
fActive write mSetActive;
//Имя программы 1С:Предприятие, как
сервера автоматизации
property AppName1Cv7: string
read fAppName write mSetAppName;
//Каталог (папка) размещения базы
данных 1С
property DirNameDB: string
read fDirName write mSetDirName;
//Имя Пользователя
property UserName: string read
fUserName write mSetUserName;
//Каталог (папка) Пользователя
property
UserDir: string read fUserDir write mSetUserDir;
//Пароль для авторизации Пользователя
property Password: string read
fPSW write mSetPSW;
//Режим монопольного доступа
property Mono: Boolean read
fMono write mSetMono default FALSE;
//Включение (отключения) режима
визуализации
//графической заставки 1Cv7 при
запуске
property No_Splash_Show:
Boolean read fNo_Splash_Show write fNo_Splash_Show default FALSE;
end;
Более подробно о назначении и информационном содержании указанных выше
свойств компонента - см. стр.19-20 книги
"Delphi и 1С:Предприятие.Программирование
информационного обмена".
Теперь приступим к реализации объявленных в контексте компонента методов и
свойств.
Сначала перекроем конструктор и деструктор компонента (которые унаследованы от предка TComponent).
Текст метода BuildInitStr
представлен ниже :
Более подробно о ключах запуска 1Cv7 можно
прочитать в спец. литературе по 1С:Предприятия,
а также на стр. 20 рассматриваемой книги.
Ниже представлена реализация остальных методов компонента :
Функции ConnectTo1C и
YesLinkToVariant были
подробно рассмотрены в контексте книги и здесь мы на этом останавливаться не
будем
(они расположены в файле
sp_Lib_Delphi.pas, который нужно включить в
состав пакета sp1Cv7_OLE.dpk с
помощью кнопки "Add").
Рис.13 Содержание package sp1Cv7_OLE.dpk
после добавления
модуля sp_Lib_Delphi.pas.
Полная версия модуля
sp_Lib_Delphi.pas входит в состав CD
прилагаемого к книге.
В раздел uses
модуля компонента необходимо внести дополнение (красный цвет) :
uses
sp_Lib_Delphi,
Windows,
Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs;
Теперь сохраним в файл все изменения, что мы произвели в модуле компонента ConnectTo1Cv7.pas.
Рис.14 Содержание package sp1Cv7_OLE.dpk
после компиляции пакета.
Здесь можно скачать (11 кб) исходные
тексты созданных Delphi-компонента и пакета.
Протестируем наш компонент ...
Создадим новый Delphi-проект и положим на форму
компонент TConnectTo1Cv7
с вкладки палитры Delphi-компонентов
1Cv7
(здесь - исходные тексты проекта
~ 3.6 кб).
Рис.15
Форма проекта и компонент
TConnectTo1Cv7
на форме
Теперь попробуем присвоить свойству
Active компонента
ConnectTo1Cv71 значение
TRUE (рис. 15).
На экране появится окно диалога выбора базы данных системы 1С.
Рис.16 Диалог выбора базы данных системы 1С:Предприятие.
Выберем базу данных и нажмем OK.
После инициализации программы 1Cv7 свойство
Active
компонента примет значение TRUE (рис.
17).
Рис.17 После того, как программа 1С:Предприятие
загрузилась и инициализация
системы завершилась - свойство Active компонента
приняло значение TRUE
Косвенным подтверждением того, что наш компонент "сработал" служит соотв.
строка
в диспетчере задач Windows (рис. 18).
Рис.18 Косвенное подтверждение того, что программа
1С:Предприятие
загрузилось в качестве сервера OLE Automation
Теперь вновь присвоим свойству
Active компонента
значение FALSE.
И проверим (в диспетчере задач Windows), что
программа 1С:Предприятие
выгружена из памяти компьютера.
Более подробно об этом - см. стр. 22-25 книги "Delphi
и 1С:Предприятие.Программирование
информационного обмена".
Продолжение - расширение функционала компонента (список зарегистрированных баз данных 1Cv7).