Запуск automation 1с что это
Перейти к содержимому

Запуск automation 1с что это

  • автор:

Глава 40
Связь с внешними приложениями посредством механизмов DDE и OLE Automation

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

Одним из примеров использования такой возможности может служить запуск программы Microsoft Excel (непосредственно из программы 1С:Предприятие ) с одновременным выводом в нее результатов расчета. Далее пользователь может обрабатывать полученные результаты (просматривать, редактировать, печатать и т. п.) непосредственно в среде Microsoft Excel.

Одну из возможностей запуска и управления внешними приложениями дает механизм OLE Automation. Встроенный язык системы 1С:Предприятие поддерживает технологию управления объектами OLE. Непосредственно при помощи операторов языка можно управлять, например, программами, входящими в Microsoft Office.

Контекст работы с внешними приложениями

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

Во всех программных модулях вызов процедур или функций внешнего приложения может выполняться только при помощи переменной со ссылкой на объект, который создается функцией СоздатьОбъект . Чтобы вызвать метод внешнего приложения, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.

При создании переменной со ссылкой на внешнее приложение, в качестве имени объекта в операторе СоздатьОбъект должен выступать зарегистрированный OLE идентификатор внешнего приложения.

Зарегистрированный OLE идентификатор внешнего приложения — это уникальный идентификатор программного продукта, который записывается в регистрационную базу Windows при инсталляции программы.

Примеры OLE идентификаторов:

// Создаем объект Excel (запускаем программу Excel)

Ехсе l = СоздатьОбъект("Excel.Application");

// делаем окно программы Excel видимым и активным

Методы внешних приложений

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

Чтобы вызвать метод внешнего приложения в языке системы 1С:Предприятие, имя метода (с указанием необходимых параметров) пишется через точку после имени ссылки на объект внешнего приложения.

// Создаем объект Excel и присвоим его переменной языка

ОкноЕхсе l = СоздатьОбъект("Excel.Application");

// устанавливаем имя окна Excel

ОкноЕхсе l . Caption = "Отчет";

// создадим новую рабочую книгу

НовыеРабочиеКниги = ОкноЕхсе l . Workbooks ;

РабочаяКнига = НовыеРабочиеКниги. Add ();

Ограничения:

Не поддерживаются значения, передаваемые по ссылке;

Не поддерживаются массивы, в точности SAFEARRAY ;

Не поддерживаются значения типа IUnknown .

Эти ограничения не столь серьезны, т. к. например, все типы данных, с которыми работает Excel и большинство других наиболее распространенных программ, полностью поддерживаются.

Типы поддерживаемых данных:

//В данном примере запускается программа Excel,

// затем в нее передаются некоторые данные, и затем

// на их основе строится диаграмма.

// Создаем объект Excel и присвоим его переменной языка

ОкноЕхсе l = СоздатьОбъект("Excel.Application");

// устанавливаем имя окна Excel

ОкноЕхсе l . Caption = "Отчет";

// создадим новую рабочую книгу

НовыеРабочиеКниги = ОкноЕхсе l . Workbooks ;

РабочаяКнига = НовыеРабочиеКниги.А dd ();

// проставим названия строк

Для Ряд = 1 По ЧислоРядов Цикл

Ячейка = ОкноЕхсе l .Cells(Ряд + 1, 1);

Ячейка.Value = "Строка " + Строка(Ряд);

// проставим названия столбцов

Для Столбец = 1 По ЧислоСтолбцов Цикл

Ячейка = ОкноЕхсе l .Cells(1, Столбец + 1);

Ячейка.Value = "Столбец " + Строка(Столбец);

// заполним ячейки таблицы значениями

Для Ряд = 1 По ЧислоРядов Цикл

Для Столбец = 1 По ЧислоСтолбцов Цикл

Ячейка = ОкноЕхсе l . Cells (Ряд + 1, Столбец + 1);

Ячейка. Value = Ряд + Столбец;

// выделим область в таблице и присвоим ее переменной языка

Область = ОкноЕхсе l . Range (ОкноЕхсе l . Cells (1, 1),

ОкноЕхсе l .Cells(ЧислоРядов + 1, ЧислоСтолбцов + 1));

// зададим имя выделенной области

// определим рамку выделенной области и присвоим ее переменной языка

// установим стили для рамки выделенной области

Рамка. LineStyle = 1;

// построим диаграмму Лист=РабочаяКнига.Worksheets(1);

Диаграмма = Лист. ChartObjects ();

Диаграмма = Диаграмма. Add (5, 5 + Область.Тор + Область. Height ,

Область. Width , Область. Height );

МояДиаграмма.ChartWizard("ОбластьДанных ", -4102, 6, 1, 1, 1, 1, "Отчет");

// сделаем окно Excel видимым и активным

ОкноЕхсе l .Visible = 1;

Работа системы 1С:Предприятие в качестве OLE Automation сервера

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

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

· создается объект с OLE идентификатором:

o V1СEnterprise.Application — версия независимый ключ;

o V77.Application — версия зависимый ключ;

o V77S.Application — версия зависимый ключ, SQL версия;

o V77L.Application — версия зависимый ключ, локальная версия;

o V77M.Application — версия зависимый ключ, сетевая версия.

· выполняется инициализация системы 1С:Предприятие методом Initialize .

· вызываются атрибуты и методы системы 1С:Предприятие как OLE Automation сервера

Замечание 1: Поскольку программа 1С:Предприятие является одновременно OLE Automation сервером и OLE Automation клиентом, то возможно из 1С:Предприятие обращаться к другой копии 1С:Предприятие (например, к другой конфигурации) для обмена данными. В основном все современные программные продукты поддерживают механизм OLE Automation, это касается в частности MS Office, MS FoxPro и приложений на них написанных, DAO и т. п., поэтому программа 1С:Предприятие может полностью интегрироваться с ними.

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

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

Атрибуты системы 1С:Предприятие как OLE Automation сервера

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

Методы системы 1С:Предприятие как OLE Automation сервера

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

Initialize

Выполнить инициализацию системы 1С:Предприятие.

Initialize(<Имя_Объекта>.RMTrade, <КоманднаяСтрока>, <ПустаяСтрока>)

Automation Client/Automation Server

Технологии Automation Client/Server, поддерживаемые платформой «1С:Предприятие 8» являются инструментами для интеграции с внешними программными средствами. Технология Automation Server позволяет управлять системой «1С» с помощью другого приложения, выполняя действия, аналогичные интерактивным. При помощи этой технологии сервер «1С» открывает доступ к глобальному контенту, его методам и свойствам, а также обладает дополнительными свойствами и методами в целях выполнения специфических для его работы действий. Запуск системы из внешнего приложения осуществляется путем создания COM-объекта (идентификатор — V82.Application) и инициализации системы методом Connect (). Далее возможен вызов свойств и методов «1С:Предприятия 8» в качестве Automation-сервера. Automation Client – это технология, благодаря которой «1С:Предприятие 8» способно выступать в качестве клиента Automation, в частности, можно, используя одну систему, обращаться к иной копии из той же платформы для обмена данными.

Automation-сервер 1С:Предприятие 8

ТОП ПРОДАЖ 1С:Предприятие
Облачные сервисы Логотип 1С Облако

Клиентам:
Услуги:
О компании:

vk.com/centercomptechru
mailinfo@center-comptech.ru
ДиректорНаписать директору

Automation Client/Server

Поддержка технологий Automation Server и Automation Client — это один из инструментов интеграции с другими программными системами.

Automation Client/Server

Automation Server

Основное назначение Automation-сервера 1С:Предприятие 8 — управление приложением системы 1С:Предприятие 8 из других приложений и выполнение действий аналогичных интерактивным действиям.

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

  • создается COM-объект с идентификатором V82.Application;
  • выполняется инициализация системы 1С:Предприятие 8 методом Connect ().

После этого можно вызывать свойства и методы системы 1С:Предприятие 8 как Automation-сервера.

Пример

В качестве примера можно рассмотреть обращение к информационной базе 1С:Предприятия 8 из программы на языке MS Visual Basic. В данном примере запускается и инициализируется конфигурация 1С:Предприятие 8 с базой данных в каталоге c:\InfoBases\Trade. Далее в программе 1С:Предприятие 8 создается объект типа СправочникМенеджер.Товары и создается новая группа элементов с названием ***** Экспорт из Excel ******. Во вновь созданную группу каталога записываются данные из таблицы MS Excel.

Dim trade As Object
Dim Элемент As Object

Set trade = CreateObject («V82.Application») ‘Создать Automation сервер
trade.Connect («File=»»c:\InfoBases\Trade»»;Usr=»»Director»»;») ‘Соединиться с информационной базой
Set СправочникТоваров = trade.Справочники.Товары
Set ГруппаТоваров = СправочникТоваров.СоздатьГруппу ()
ГруппаТоваров.Наименование = «***** Экспорт из Excel ******»
ГруппаТоваров.Записать

N = 100 ‘Количество строк в документе
For Count = 1 To N

Set Элемент = СправочникТоваров.СоздатьЭлемент ()
Элемент.Наименование = Application.Cells (Count, 2).Value
Элемент.Розн_Цена = Application.Cells (Count, 3).Value
Элемент.Мел_Опт_Цена = Application.Cells (Count, 4).Value
Элемент.Опт_Цена = Application.Cells (Count, 5).Value
Элемент.Родитель = ГруппаТоваров.Ссылка

Контекст исполнения

  • системные константы,
  • значения заданных в конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры);
  • переменные, объявленные в модуле приложения.
  • системные процедуры и функции;
  • процедуры и функции модуля приложения и общих модулей, объявленные с ключевым словом Экспорт;
  • два дополнительных метода — Connect () и NewObject ().

Automation Client

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

В качестве примера можно рассмотреть обращение к информационной базе 1С:Предприятия 8 из другой информационной базы 1С:Предприятия 8. В данном примере запускается и инициализируется конфигурация 1С:Предприятия 8 с базой данных в каталоге c:\InfoBases\Trade. Далее в этой базе, в справочнике Товары создается новая группа с наименованием *** Экспорт из другой базы 1С:Предприятия 8 ***, и эта группа записывается.

Client/Server automation

Support of Automation Server and Automation Client is one of the tools for integration with other software systems.

Client Server automation

Automation Server

The key purpose of 1C:Enterprise’s Automation Server is managing 1C:Enterprise’s application from other applications and performing actions analogical to interactive actions.

1C:Enterprise’s Automation Server grants access to all properties and methods of its global context, has additional properties and methods for performing actions specific to the Automation mode.

The developer has to do the following to launch 1C:Enterprise as the Automation Server from a third-party application:

create a COM object with ID V83.Application

initialize 1C:Enterprise with Connect ()

After that, the user can fetch 1C:Enterprise properties and methods as Automation Servers.

Example

‘ In this example the 1C:Enterprise configuration is launched and initialised

‘ in the c:\InfoBases\Trade directory

‘ Then we create an object of type «Catalog.Goods» in the 1C:Enterprise.

‘ Then we create new folder of items called «***** Export from Excel ******»

‘ Data from the MS Excel table is writen to the newly created catalog folder.

‘ The example uses MS Visual Basic.

Sub Excel_to_trade ()

Dim trade As Object

Dim Goods As Object

Dim Group As Object

Dim Item As Object

Set trade = CreateObject ( «V83.Application» )

trade.Connect ( «File=»»c:\InfoBases\Trade»»;Usr=»»Director»»;» )

Set Goods = trade.Catalogs. Goods

Set Group = Goods.CreateFolder ()

Group.Description = «***** Export from Excel ******»

Group.Write ()

N = 100 ‘Count lines in the document

For Count = 1 To N

Set Item = Goods.CreateItem ()

Item.Name = Application.Cells ( Count , 2 ). Value

Item.Ret_Price = Application.Cells ( Count , 3 ). Value

Item.Small_Wholesale_Price = Application.Cells ( Count , 4 ). Value

Item.Wholesale_Price = Application.Cells ( Count , 5 ). Value

Item.Parent = Group.Ref

Item.Write ()

Execution Context

1C:Enterprise as an Automation Server may have the following properties:

values of objects set in the configurator accessed through managers (e.g. constants, enumerations, directories, documents, document journals, reports, processings, charts of characteristic types, charts of accounts, charts of calculation types, and registers)

variables defined in the application module

1C:Enterprise as an Automation Server may have the following methods:

system procedures and functions

procedures and functions of the application module and general modules, defined with the code word Export

two additional methods — Connect () and NewObject ()

Automation Client

As most advanced software solutions, 1C:Enterprise can act as an Automation Client. This said, 1C:Enterprise can refer to another 1C:Enterprise version (e.g. another configuration) to exchange data.

Here’s an example: a query to 1C:Enterprise infobase from another 1C:Enterprise infobase. In this example, 1C:Enterprise with the database in c:\InfoBases\Trade is launched and initialized. Then, in this infobase, in Goods catalog, a new group is created — titled *** Export from another 1C:Enterprise infobase*** — and written.

Procedure Create ()

// Create Automation Server

AutomationServer = New COMObject ( «V83.Application» );

// Connect to InfoBase

AutomationServer . Connect ( «File=»»c:\InfoBases\Trade»»;Usr=»»Director»»;» );

// Create a new group in catalog Goods and write it

CatalogProducts = AutomationServer . Catalogs . Goods ;

NewGroup = CatalogProducts . CreateFolder ();

NewGroup . Description = «***** Export from another 1C:Enterprise 8 infobase ******» ;

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

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