Что такое сервер автоматизации

automation servers

серверы автоматизации


Автоматизация. Клиенты и серверы автоматизации.

Тематики

Полезное

Смотреть что такое «automation servers» в других словарях:

OLE Automation — In Microsoft Windows applications programming, OLE Automation (later renamed by Microsoft to just Automation,[1][2] although the old term remained in widespread use), is an inter process communication mechanism based on Component Object Model… … Wikipedia

Microsoft Servers — Logo of Microsoft Servers. Microsoft Servers (previously called Windows Server System) is a brand that encompasses a line of Microsoft server products. This includes the server editions of Microsoft Windows operating system itself, as well as… … Wikipedia

Test automation — Compare with Manual testing. Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting… … Wikipedia

Microsoft UI Automation — (UIA) is an Application Programming Interface (API) for User Interface (UI) accessibility that is designed to help Assistive Technology (AT) products interact with standard and custom UI elements of an application (or the operating system) as… … Wikipedia

Microsoft Servers — (anteriormente llamado Windows Server System) es una marca que abarca una línea de productos de servidor de Microsoft. Esto incluye las ediciones de servidor de Microsoft Windows su propio sistema operativo, así como productos dirigidos al… … Wikipedia Español

Instrument automation — Architecture for Host Computer Interfacing of Clinical Laboratory Instruments:In a secure production environment, applications usually need to interact with instruments that transmit and receive data. These instruments can be of multiple types… … Wikipedia

серверы автоматизации — Автоматизация. Клиенты и серверы автоматизации. Автоматизация (ранее известная как OLE автоматизация – OLE Automation) – это одно из наиболее важных средств технологии ActiveX, позволяющее программно управлять объектами из других… … Справочник технического переводчика

VOLE C++ Library — infobox software name = VOLE C++ Library caption = latest release version = 0.6.1 latest release date = 12 September 2008 programming language = C++ operating system = MS Windows genre = OLE Automation wrapper, STL extension, Facades license =… … Wikipedia

Active Template Library — The Active Template Library (ATL) is a set of template based C++ classes developed by Microsoft that simplify the programming of Component Object Model (COM) objects. The COM support in Microsoft Visual C++ allows developers to create a variety… … Wikipedia

Источник

Серверы автоматизации

Автоматизация позволяет приложению манипулировать объектами, реализованными в другом приложении, или предоставлять объекты, чтобы их можно было манипулировать. Сервер автоматизации — это приложение, которое предоставляет программируемые объекты (называемые объектами автоматизации) другим приложениям (называемым клиентами автоматизации). Серверы автоматизации иногда называются компонентами автоматизации.

Предоставление объектов автоматизации позволяет клиентам автоматизировать определенные процедуры путем прямого доступа к объектам и функциям, которые сервер делает доступным. Предоставление объектов таким способом полезно, когда приложения предоставляют функциональные возможности, которые удобно использовать для других приложений. Например, текстовый процессор может предоставлять свои функции проверки орфографии, чтобы другие программы могли его использовать. Таким образом, раскрытие объектов позволяет поставщикам улучшить функциональность своих приложений с помощью готовых функций других приложений.

Эти объекты автоматизации имеют свойства и методы в качестве внешнего интерфейса. Свойства являются именованными атрибутами объекта автоматизации. Свойства подобны элементам данных класса C++. Методы — это функции, которые работают с объектами автоматизации. Методы подобны открытым функциям-членам класса C++.

Хотя свойства подобны элементам данных C++, они недоступны напрямую. Чтобы обеспечить прозрачный доступ, настройте внутреннюю переменную в объекте автоматизации с помощью пары функций-членов Get/Set для доступа к ним.

благодаря предоставлению функциональных возможностей приложения через общий, четко определенный интерфейс автоматизации позволяет создавать приложения на едином общем языке программирования, таком как Microsoft Visual Basic, а не на различных языках макросов, зависящих от приложения.

Поддержка серверов автоматизации

Visual C++ и платформа MFC обеспечивают расширенную поддержку серверов автоматизации. Они обрабатывали большую часть издержек, связанных с созданием сервера автоматизации, поэтому вы можете сосредоточиться на работе с функциями приложения.

Основной механизм платформы для поддержки автоматизации — это схема диспетчеризации, набор макросов, который дополняет объявления и вызовы, необходимые для предоставления методов и свойств OLE. Типичная схема диспетчеризации выглядит следующим образом:

Мастер классов и представление классов помогают поддерживать карты диспетчеризации. при добавлении в класс нового метода или свойства Visual Studio добавляет соответствующий DISP_FUNCTION DISP_PROPERTY макрос или с параметрами, указывающими имя класса, внешние и внутренние имена метода или свойства, а также типы данных.

Диалоговое окно Добавление класса также упрощает объявление классов автоматизации и управление их свойствами и операциями. При использовании диалогового окна Добавление класса для добавления класса в проект необходимо указать его базовый класс. Если базовый класс позволяет автоматизировать, в диалоговом окне Добавление класса отображаются элементы управления, используемые для указания того, должен ли новый класс поддерживать автоматизацию, является ли он «OLE-создаваемым» (то есть, можно ли создавать объекты класса в запросе от клиента COM) и внешнее имя для использования клиентом COM.

Затем диалоговое окно Добавление класса создает объявление класса, включая соответствующие макросы для указанных компонентов OLE. Он также добавляет скелет кода для реализации функций члена класса.

Источник

Сервер автоматизации

Примечаниe
Импортирование библиотеки типов сервера автоматизации особенно важно для разработчиков, которые используют старые версии Delphi. В Delphi 5 в палитру компонентов была добавлена вкладка Servers (Серверы), на которой располагаются значки, обеспечивающие доступ к основным серверам автоматизации, установленным на данном компьютере.

Для того чтобы импортировать библиотеку типов, нужно выполнить следующее:
1. Выбрать в главном меню Delphi пункт Project/Import Type Library (Проект/Импорт библиотеки типов).
2. В появившемся диалоговом окне (рис. 3.13) выбрать нужную библиотеку типов из представленного списка.

Примечание
В списке диалогового окна импортирования библиотеки типов содержатся все библиотеки типов, зарегистрированные в операционной системе на данном компьютере. Если нужная вам библиотека типов отсутствует в списке, вы можете ее туда добавить при помощи кнопки Add (Добавить). После того как вы нажмете кнопку Add (Добавить), найдите и добавьте нужную библиотеку типов с расширением TLB, OLB, DLL, OCX или EXE. Вы можете также удалить ненужную библиотеку типов из списка диалогового окна при помощи кнопки Remove (Удалить). Просто выделите ненужную библиотеку типов и нажмите кнопку Remove (Удалить).

Примечание
Разница в этих методах все же есть. В различных приложениях Microsoft Office они имеют разные параметры. Действия методов тоже могут отличаться.

Рис. 3.14 показывает небольшую часть структуры объекта Microsoft Word Object.Более полную информацию об объектной архитектуре Microsoft Office можно найти в справочных материалах по Microsoft Office.

Что такое сервер автоматизации. Смотреть фото Что такое сервер автоматизации. Смотреть картинку Что такое сервер автоматизации. Картинка про Что такое сервер автоматизации. Фото Что такое сервер автоматизации
Рис. 3.14. Фрагмент структуры объекта Microsoft Word Object
Как только открывается новый документ, приложения Microsoft Office, автоматически создается каркас нового документа, который представляет собой набор библиотек с классами. Объекты этих классов будут доступны в данном документе. Задачей разработчика диспетчера автоматизации является получить доступ к корневому объекту сервера, выстроить цепочку доступа к встроенным объектам и правильно передать параметры.
Итак, базовым объектом любого приложения Microsoft Office является объект Application. Попробуем получить к нему доступ средствами Delphi.

Примечание
Все написанное ниже, справедливо для пятой (или выше) версии Delphi.

Листинг 3.1
unit Unitl;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics’, Controls, Forms, Dialogs, StdCtrls, COMObj;
type
TForml = class(TForm)
Start: TButton;
Finish: TButton;
procedure StartClickfSender: TObject);
procedure FinishClick(Sender: TObject);
private
< Private declarations >
public
< Public declarations >
end;

var
Forml: TForml;
wd:01eVariant;
fileName:string;
implementation <$R *.DFM>
procedure TForml.StartClick(Sender: TObject);
begin
try
fileName:=ExtractFilePath(Application.EXEName)+’report.DOC’;
// Создаем объект интерфейса для доступа к серверу СОМ
wd:=Create01eObject(‘Word.Application’);
// Проверка наличия методов и правильность передачи параметров будет осуществляться на стадии выполнения приложения
wd.application.documents.add;
wd.application.activedocument.range.insertAfter(now);
wd.application.activedocument.saveas(fileName);
except
end;
end;

procedure TForml.FinishClick(Sender: TObject);
begin
// Выгружаем сервер из памяти компьютера
wd.application.quit(true,0);
end;
end.

Диспетчер автоматизации в любом случае создает новый экземпляр сервера автоматизации

Применяется для установления соединения с сервером автоматизации, который располагается на удаленном компьютере в сети. При использовании данного значения свойства ConnectKind необходимо указать имя удаленного компьютера в свойстве RemoteMachineName

В данном случае соединение не создается, поэтому нельзя устанавливать значение true для свойства AutoConnect. Соединение с сервером в этом случае осуществляется при помощи метода ConnectTo

Свойство ConnectKind можно устанавливать в окне инспектора объектов при помощи выпадающего списка, который появляется при щелчке мышью на данном свойстве.
Управление сервером автоматизации
Рассмотрим в качестве примера применения свойства ConnectKind подключение и управление сервером автоматизации. Выполните последовательно следующие шаги:
1. При помощи пункта главного меню File/New Application (Файл/Новое приложение) создайте новый проект.
2. Поместите на форму компоненты wordApplication и wordDocument, расположенные на вкладке Servers.
3. Установите свойства AutoConnect и AutoQuit для компонента WordApplication В true.
4. Установите свойство ConnectKind для компонента WordDocument в CkAttachToInterface.
5. Выберите на форме компонент wordApplication и в окне инспектора объектов перейдите на вкладку Events (События).
6. Дважды щелкните на событии onDocumentchange и запишите в заготовке обработчика события, которую создаст Delphi, приведенный на листинге 3.2 код

Листинг З.2
procedure TForml.WordApplicationlDocumentChange(Sender: TObject);
begin
// Производим подключение к активному документу Microsoft Word
WordDocumentl.ConnectTo(WordApplicationl.ActiveDocument>;
// Наш диспетчер автоматизации добавляет новую строку в текущий документ
WordDocumentl.Range.InsertAfter(#13+’Переход к документу’+#13+
WordApplicationl.ActiveDocument.Get_FullName+’ произведен :’+
DateTimeToStr(Now));
end;

Рассмотрим, какие действия произведет код, представленный на листинге 3.2. Во-первых, данный код будет выполняться всякий раз при смене текущего документа Microsoft Word. После смены текущего документа (то есть, простого переключения между несколькими документами Microsoft Word) наш диспетчер автоматизации при помощи метода ConnectTo подключится к активному документу. Затем, при помощи метода InsertAfter производится вставка текстовой строки в текущий документ. Переход на новую строку в документе осуществляется при помощи вставки символа перевода строки (#13). Метод Get_FullName позволяет получить название текущего документа Microsoft Word.
7. Для события формы Create напишите код, представленный на листинге 3.3.

Листинг З.3
procedure TForml.FormCreate(Sender: TObject);
begin
// Отображение сервера автоматизации на экране
WordApplicationl.Visible:=true;
end;

Данный код отобразит Microsoft Word на экране, даже если он ранее не был загружен.
Запустите созданный вами диспетчер автоматизации при помощи пункта главного меню Run/Run (Запуск/Запуск). После старта приложения будет автоматически загружен Microsoft Word. С помощью пункта меню Microsoft Word File/New (Файл/Создать) создайте несколько новых документов. Теперь убедимся, что наш диспетчер автоматизации работает. Попробуйте переключаться между документами при помощи раздела меню Microsoft Word Window (Окно). Вы можете видеть, как диспетчер автоматизации добавляет новые строки в текущий документ.
Такой же принцип управления можно применять и в случае, когда необходимо контролировать действия Microsoft Excel. Когда в Microsoft Excel создается новая книга, возникает событие OnNewworkBook.
Создание сервера автоматизации
Сервером автоматизации может являться либо приложение, либо DLL. Рассмотрим шаги, которые вам предстоит выполнить для создания сервера автоматизации.
1. Создайте приложение или DLL, которое должно выступать в роли сервера автоматизации. Можно использовать любое ранее созданное вами приложение и добавить к нему автоматизацию.
2. При помощи мастера объекта автоматизации создайте объект автоматизации и добавьте его к проекту.
3. Добавьте свойства и методы к вашему объекту автоматизации при помощи библиотеки типов. Данные свойства и методы нужны для того, чтобы диспетчеры автоматизации могли их использовать при обращении к вашему серверу автоматизации.
4. Зарегистрируйте приложение как сервер автоматизации. Теперь рассмотрим эти шаги более подробно.
Создадим самое простое приложение, состоящее из одной только формы. Для этого достаточно лишь запустить Delphi и выбрать пункт меню File/New Application (Файл/Новое приложение).
Теперь добавим к нашему проекту объект автоматизации для того, чтобы приложение выполняло функции сервера автоматизации. Чтобы сделать это, нужно выбрать пункт главного меню File/New (Файл/Новый). После чего перейдите в открывшемся окне New Items (Новые объекты) на вкладку ActiveX (рис. 3.15).
Выберите пиктограмму Automation Object (Объект автоматизации) двойным щелчком. После этого появится окно Automation Object Wizard (Мастер объекта автоматизации) (рис. 3.16).

Что такое сервер автоматизации. Смотреть фото Что такое сервер автоматизации. Смотреть картинку Что такое сервер автоматизации. Картинка про Что такое сервер автоматизации. Фото Что такое сервер автоматизации
Рис. 3.15. Вкладка ActiveX окна New Items

Что такое сервер автоматизации. Смотреть фото Что такое сервер автоматизации. Смотреть картинку Что такое сервер автоматизации. Картинка про Что такое сервер автоматизации. Фото Что такое сервер автоматизации
Рис. 3.17. Новый проект автоматизации в редакторе библиотеки типа
В листинге 3.4 приведен код нового модуля, который генерирует мастер объекта автоматизации Delphi.

Листинг 3.4.
unit Unit2; interface
uses
ComObj, ActiveX, Projectl_TLB, StdVcl;
type
TAuto = class(TAutoObject, lAuto)
protected
< Protected declarations >
end;
implementation
uses ComServ;
initialization
TAutoObjectFactory.Create(ComServer, TAuto, Class_Auto,ciMultilnstance, tmApartment);
end.

Из вышеприведенного листинга ясно, что новый объект автоматизации TAuto является классом-наследником класса TAutoObject. Отметим, что класс TAutoobject является базовым классом всех объектов автоматизации.
Теперь, после добавления к нашему проекту нового объекта автоматизации TAuto мы можем дописать к основному интерфейсу lAuto необходимые свойства и методы.
Поставим перед собой простую задачу. Допустим, наш сервер автоматизации должен изменять цвет формы путем передачи необходимого цвета из диспетчера автоматизации. Для решения данной задачи добавим свойство color к интерфейсу lAuto. Это можно сделать в редакторе библиотеки типов разными способами, один из которых такой:
— щелкните левой кнопкой мыши на изображение интерфейса lAuto в левой части редактора библиотеки типа;
— т. к. нам нужно только получать цвет от диспетчера автоматизации, то нам понадобится свойство только для чтения, для этого щелкните на стрелочке справа от пиктограммы, изображающей свойство в верхней панели редактора, и выберите Write Only (Только для записи) (рис. 3.18);
— назовите свойство color и установите тип свойства OLE_COLOR в поле туре.

Что такое сервер автоматизации. Смотреть фото Что такое сервер автоматизации. Смотреть картинку Что такое сервер автоматизации. Картинка про Что такое сервер автоматизации. Фото Что такое сервер автоматизации
Рис. 3.18. Добавление свойства только для чтения в интерфейс lAuto
Все. Новое свойство добавлено, теперь нажмите в верхней панели редактора кнопку Refresh Implementation для обновления модуля реализации объекта автоматизации (рис. 3.19). В результате Delphi подкорректирует модуль реализации в соответствии с теми изменениями, которые были нами внесены в редакторе библиотеки. Код измененного модуля представлен на листинге 3.5. Кроме того, в данном листинге вручную дописано тело процедуры TAuto.Set_Color.

Листинг 3.5
unit Unit2;
interface
uses
ComObj, ActiveX, TestJTLB, StdVcl;
type
TAuto = class(TAutoObject, lAuto)
protected
procedure Set_Color(Value: OLE_COLOR); safecall;
< Protected declarations >
end;
implementation
uses ComServ, Unitl;
procedure TAuto.Set_Color(Value: OLE_COLOR);
begin
Forml.color:=Value;
end;
initialization
TAutoObjectFactory.Create(ComServer, TAuto, Class_Auto, ciMultilnstance, tmApartment);
end.

После этого создайте на жестком диске новую папку. Назовем ее, например, Automation. Сохраним наше приложение в эту папку. При сохранении, дайте проекту имя Test. Затем откомпилируйте или запустите приложение для того, чтобы получить исполняемый файл Test.exe.
Итак, наш новый сервер автоматизации готов. Для того чтобы убедиться, что он работает, создадим диспетчер автоматизации. Для этого закроем текущий проект File/Close All (Файл/Закрыть все) и создадим новый File/New Application. Разместим на форме две кнопки: Соединение и Изменить цвет (рис. 3.20).

Что такое сервер автоматизации. Смотреть фото Что такое сервер автоматизации. Смотреть картинку Что такое сервер автоматизации. Картинка про Что такое сервер автоматизации. Фото Что такое сервер автоматизации
Рис. 3.19. Законченная библиотека типов

Что такое сервер автоматизации. Смотреть фото Что такое сервер автоматизации. Смотреть картинку Что такое сервер автоматизации. Картинка про Что такое сервер автоматизации. Фото Что такое сервер автоматизации
Рис. 3.20. Внешний вид формы диспетчера автоматизации
Приведенный листинг 3.6 иллюстрирует код для нашего диспетчера автоматизации.

Листинг 3.6
unit Unitl;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, TestJTLB;
type
TForml = class(TForm)
Buttonl: TButton;
Button2: TButton;
procedure ButtonlClick(Sender: TObject);
procedure,Button2Click(Sender: TObject);
private
FIntf: lAuto;
< Private declarations >
public
< Public declarations >
end;
var
Form1: TForm1;
implementation <$R *.DFM>
procedure TForml.ButtonlClick(Sender: TObject);
begin
FIntf:=CoAuto.create ;
end;
procedure TForml.Button2Click(Sender: TObject);
begin
FIntf.Set_Color(clRed);
end;
end.

Рассмотрим вышеприведенный листинг. Итак, для начала нужно добавить в раздел uses библиотеку типов Test_TLB. Далее в разделе private добавим поле FIntf типа lAuto. После чего для кнопки Соединение пишем обработчик события Onclick, которое создает экземпляр сервера автоматизации. При нажатии на эту кнопку будет запущено приложение Test.exe. Для события Onclick кнопки Изменить цвет пишем обработчик события, который вызывает метод set_color интерфейса lAuto. Установим, например, красный цвет clRed формы приложения-сервера. Запустим наш диспетчер автоматизации на исполнение. Нажмем последовательно кнопки Соединение и Изменить цвет. Вы можете видеть, как сначала запускается приложение Test.exe, а затем цвет формы приложения Test.exe изменяется на красный.
Наше простейшее приложение, использующее автоматизацию успешно работает (рис. 3.21).

Что такое сервер автоматизации. Смотреть фото Что такое сервер автоматизации. Смотреть картинку Что такое сервер автоматизации. Картинка про Что такое сервер автоматизации. Фото Что такое сервер автоматизации
Рис. 3.21. Результат работы приложения автоматизации

Источник

Знакомство с технологией Automation-сервер на примерах

Система 1С:Предприятие может использоваться внешними приложениями в качестве Automation-сервера. При работе в качестве Automation-сервера 1С:Предприятие предоставляет доступ ко всем свойствам и методам своего глобального контекста, а также включение и выключение пользовательского интерфейса (главного окна 1С:Предприятия 8). Кроме того, Automation-сервер 1С:Предприятия имеет дополнительные свойства и методы для выполнения действий, специфичных для работы в режиме Automation.
Основное назначение Automation-сервера 1С:Предприятие в управлении приложением 1С:Предприятия 8 из других приложений и выполнение действий аналогичных интерактивным действиям, например, построение отчетов.
Для запуска системы 1С:Предприятие в качестве Automation-сервера из внешнего приложения, выполняется следующая последовательность действий:

создается COMОбъект с идентификатором V83.Application (для тонкого клиента V83C.Application);

выполняется инициализация системы 1С:Предприятие методом Connect (для тонкого клиента существует возможность передать в строке соединения дополнительные параметры прокси сервера);

вызываются свойства и методы системы 1С:Предприятие как Automation-сервера.

Многие современные программные продукты (MS Office, MS FoxPro и т.п.) могут выступать в роли клиентов Automation, что позволяет обмениваться данными между этими продуктами и системой 1С:Предприятие.

Замечание 1: Поскольку система 1С:Предприятие может создавать и использовать Automation-серверы, предоставляемые внешними приложениями (т.е. является Automation-клиентом), то имеется возможность из 1С:Предприятия обращаться к другой копии 1С:Предприятия (например, к другой конфигурации) для обмена данными.

Замечание 2: Нелокализованные версии внешних программ, обращающихся к программе 1С:Предприятие посредством Automation, могут неправильно интерпретировать русские идентификаторы объектов, например, реквизитов справочников. Данное замечание не относится к продуктам MS Office и к программам, использующим в качестве языка обращения к COM-объектам Microsoft Visual Basic. Рекомендуется использовать локализованные версии программных продуктов, либо в конфигурации использовать идентификаторы без символов кириллицы. Для обращения к свойствам и методам объектов системы 1С:Предприятие из внешних приложений рекомендуется использовать их англоязычные синонимы.

Замечание 3: Все созданные объекты Automation существуют до тех пор, пока существует переменная, которая содержит значение данного объекта. Следовательно, сама программа 1С:Предприятие, выступающая в качестве объекта Automation в другой программе, будет находиться в памяти компьютера до удаления или изменения значения переменной, содержащей ее в качестве объекта.

Система 1С:Предприятие в качестве Automation-сервера предоставляет полный доступ к своему глобальному контексту. Поэтому объект Automation-сервер 1С:Предприятие в качестве своих свойств может иметь: системные константы, значения заданных в Конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры), а также переменные, объявленные в модуле приложения (управляемого / обычного) с ключевым словом Экспорт.
Automation-сервер 1С:Предприятие в качестве своих методов может иметь: системные процедуры и функции, а также процедуры и функции модуля приложения и общих модулей, объявленные с ключевым словом Экспорт.

В случае, если подключение выполнить не удалось, мы сообщим об этом пользователю, а если все прошло удачно, то мы обратимся к методу глобального контекста «ИмяПользователя()» для того, чтобы сообщить, под каким пользователем мы заходим в базу. Данная функция доступна в режиме «Внешнее соединение»:

Итак, сохраняем обработку и запускаем ее в пользовательском режиме. Нажимаем кнопку «Запуск» и спустя некоторое время система нам сообщает имя пользователя. При этом у нас открывается «ДругаяБаза» в пользовательском режиме.

Отметим также, что если мы используем следующий код Сообщить(Выборка.Ссылка.НаименованиеПолное); сообщения мы получаем в той же базе, из которой мы запускаем нашу обработку. Если же нам нужно вывести сообщение в «ДругойБазе», то код должен быть следующий: ДругаяБаза.Сообщить(Выборка.Ссылка.НаименованиеПолное);

Отметим также тот факт, что несмотря на то, что «Выборка.Ссылка» у нас имеет тип «CОМОбъект» мы можем получить строковое представление этого значения. Для этого у нас есть метод «String( )«. Т.е. вместо Выборка.Ссылка.НаименованиеПолное мы могли использовать ДругаяБаза.String(Выборка.Ссылка), чтобы получить наименование элемента справочника.

Решим еще одну задачу. Из текущей информационной базы нам нужно будет обратиться к «ДругойБазе» и создать элемент справочника «Контрагенты». Вначале код у нас будет похожий, нам прежде всего нужно будет выполнить подключение к информационной базе. Нам нужно будет обратиться к классу СправочникиМенеджер (CatalogsManager).

Код у нас будет аналогичный тому, как если бы мы создавали элемент справочника в нашей базе. Единственное, вначале мы должны указать «ДругаяБаза.»:

Итак, мы уже научились создавать новые элементы в другой информационной базе, а теперь попробуем открыть только что созданный элемент. Для того, чтобы открыть форму, нам будет необходимо обратиться к методу глобального контекста «ОткрытьФорму()». Отличие будет в том, что мы будем обращаться не напрямую, а используя наш «СОМОбъект» «ДругаяБаза». Мы указываем имя нашего открываемого объекта. Кроме того, нам нужно передать второй параметр, который у нас является структурой, которая будет включать в себя «Ключ» и «Значение», которое будет являться ссылкой на наш элемент справочника:

Однако, если мы запустим нашу обработку с таким кодом система нам выдаст ошибку:

«Произошла исключительная ситуация (1C:Enterprise8.3.6.2237) несоответствие типов (параметр номер 2)». Подобные ошибки очень часто возникают при использовании технологии Automation. Дело в том, что мы создаем структуру в текущей базе, а её нужно создать в «ДругаяБаза». Правильный программный код будет следующий:

Когда мы подключаемся к «ДругойБазе», используя технологию OLE Automation у нас происходит обычный запуск приложения. Это означает, что когда мы обращаемся к базе, у нас будут работать обычные модули. Это модуль сеанса, модуль управляемого приложения со всеми событиями ПередНачаломРаботыСистемы(), ПередЗавершениемРаботыСистемы(). Но у нас еще есть модуль внешнего соединения, и в случае использования Automation он не вызывается. Он будет вызываться только когда мы будем подключаться через СОМ напрямую, используя «Менеджер COM-соединений», который обеспечивает возможность надежного и быстрое программного доступа к данным 1С:Предприятия 8 из внешних приложений через Внешнее соединение (External connection).

В общем и целом работа с 1С:Предприятием 8 через внешнее соединение подобна работе с 1С:Предприятием в режиме Automation сервера. Основные отличия заключаются в следующем:

В случае Automation сервера запускается полноценное приложение 1С:Предприятия 8, а в случае внешнего соединения запускается относительно небольшой внутрипроцессный COM-сервер.

При работе через внешнее соединение не доступны функциональные возможности, так или иначе связанные с организацией пользовательского интерфейса 1С:Предприятия 8;

При работе внешнего соединения не используется модуль управляемого приложения (модуль обычного приложения) конфигурации 1С:Предприятия 8. Его роль при работе с внешним соединением играет модуль внешнего соединения.

При использовании внешнего соединения имеются следующие преимущества по сравнению с использованием Automation сервера:

Более быстрая установка соединения, так как не требуется создания отдельного процесса операционной системы, а все действия производятся в рамках вызывающего процесса;

Более быстрое обращение к свойствам и методам объектов 1C:Предприятия, так как для организации обращения не требуется организации межпроцессной коммуникации;

Меньший расход ресурсов операционной системы.

Для организации доступа к данным 1С:Предприятия 8 через внешнее соединение, выполняется следующая последовательность действий:

создается менеджер COM-соединений, с помощью которого производится установка соединения;

производится обращение к методу Connect менеджера COM-соединений. Метод Connect возвращает внешнее соединение с информационной базой 1С:Предприятия 8;

через внешнее соединение производится обращение к допустимым методам, свойствам и объектам информационной базы, с которой установлено соединение.

Важно! В связи с отсутствием пользовательского интерфейса не все объекты, а также свойства и методы можно использовать во внешнем соединении.
Внешнее соединение предоставляет полный доступ к своему глобальному контексту. Поэтому внешнее соединение в качестве своих методов может иметь: системные константы, значения заданных в Конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры), а также переменные, объявленные в модуле внешнего соединения с ключевым словом Экспорт.

Также важно помнить, что у нас на уровне роли есть такое право, как возможность подключения к базе, используя технологию Automation. Если у пользователя это право стоит, то под ним можно будет выполнять запуск. В противном случае внешний запуск, используя данную технологию, будет невозможен.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *