Адрес этой странички: 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;

        //Каталог (папка) Пользователя
        p
roperty 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.
С
компилируем пакет sp1Cv7_OLE.dpk (кнопка "Compile") и переустановим (кнопка "Install") компоненты пакета.


Рис.1
4  Содержание 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).


(c) Сергей Попов, респ.Коми, г.Усинск, 2007  Письмецо написать ...


Hosted by uCoz