d9e5a92d

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

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, КоманднаяСтрока, ПустаяСтрока)

Англоязычный синоним:

Initialize

Параметры:

Имя_Объекта Идентификатор созданного OLE объекта 1С:Предприятие.
RMTrade Добавочное ключевое слово.
КоманднаяСтрока Строковое выражение — командная строка запуска 1С:Предприятие.
ПустаяСтрока Строковое выражение. Параметр может содержать пустую строку или строковое значение NO_SPLASH_SHOW — отключить заставку при запуске системы 1С:Предприятие в режиме OLE Automation сервера.
Возвращаемое значение:

Значение логического типа: TRUE, если инициализация прошла удачно, или FALSE, если нет.

Замечание: В OLE Automation TRUE и FALSE имеют соответственно значения: -1 (минус единица) и 0.

Описание:

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

Пример:

* здесь пример приводится на языке MS Visual Basic:

Dim v7 As Object

Set v7 = CreateObject(V77.Application)

result = v7.Initialize(v7.RMTrade, /DC:\V7\DB /M, )

EvalExpr

Вычислить выражение системы 1С:Предприятие.

Синтаксис:

EvalExpr(СтрокаВыражения)

Англоязычный синоним:

EvalExpr

Параметры:

СтрокаВыражения Строковое выражение — выражение, записанное на встроенном языке 1С:Предприятие.
Возвращаемое значение:

Результат вычисленного выражения.

Описание:

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

Пример:

* здесь пример приводится на языке MS Visual Basic:

Dim v7 As Object

Dim Товары As Object

Set v7 = CreateObject(V77.Application)

result = v7.Initialize(v7.RMTrade, /DC:\V7\DB /M, )

Set Товары = v7.EvalExpr(ОтдатьСправочникТоваров());

CreateObject

Создает объект агрегатного типа данных системы 1С:Предприятие и возвращает ссылку на него.

Синтаксис:

CreateObject(ИмяАгрегатногоТипа)

Англоязычный синоним:

CreateObject

Параметры:

ИмяАгрегатногоТипа Строковое выражение, значение которого содержит имя агрегатного типа данных, объявленного в конфигураторе.
Возвращаемое значение:

Ссылка на созданный объект агрегатного типа данных.

Описание:

Метод CreateObject создает объект агрегатного типа данных системы 1С:Предприятие и возвращает ссылку на него. Данная функция обычно используется одновременно с неявным определением переменной и присвоением ей ссылки на объект агрегатного типа данных.

Пример:

Процедура Загрузить()

   Если ФС.Существуетфайл(Путь + \NUL) = 0 Тогда

      Предупреждение(Путь информационной базы не найден!);

   Иначе

      V7 = СоздатьОбъект(V77.Application);

      Открыта = V7.Initialize(V7.RMTrade, /d + Путь +

                              /M /N + Пользователь, );

      Если Открыта = 0 Тогда

         Предупреждение(Ошибка открытия информационной базы);

         Возврат;

      КонецЕсли;

      Импорт = V7.CreateObject(Справочник.Контрагенты);

      Импорт.ВыбратьЭлементы();

      Пока Импорт.ПолучитьЭлемент() = 1 Цикл

         Если Импорт.ЭтоГруппа() = 0 Тогда

            Сообщить(Импорт.Наименование);

         КонецЕсли;

      КонецЦикла;

   КонецЕсли;

КонецПроцедуры

ExecuteBatch

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

Синтаксис:

ExecuteBatch(СтрокаОператоров)

Англоязычный синоним:

ExecuteBatch

Параметры:

СтрокаОператоров Строковое выражение — текст программы на встроенном языке 1С:Предприятие.
Возвращаемое значение:

Значение логического типа: TRUE, если последовательность операторов выполнены успешно, или FALSE, если нет.

Замечание: В OLE Automation TRUE и FALSE имеют соответственно значения: -1 (минус единица) и 0.

Описание:

Метод ExecuteBatch выполняет последовательность операторов, записанную в параметре СтрокаОператоров на встроенном языке 1С:Предприятие.

Пример:

* здесь пример приводится на языке MS Visual Basic:

Sub Command1_Click ()

   Dim v7 As Object

   Dim Price As Object

   Set v7 = CreateObject(V77.Application)

   result = v7.Initialize(v7.RMTrade, /DC:\V7\DB /M, )

   Set Price = v7.EvalExpr(ОтдатьСправочникТоваров())

   Price.New

   Price.Code = 112233

   Price.Description = Test string

   Price.Write;

   BoolResult = v7.ExecuteBatch(ПроцедураРегл1();ПроцедураРегл2())

End Sub

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

Sub Excel_to_trade()

   Dim trade As Object

   Dim Товар As Object

   Set trade = CreateObject(V77 .Application)

   result = trade.Iinitialize(trade.RMTrade, /DC:\V7\DB /M, )

   Set Товар = trade.EvalExpr(CreateObject(Справочник.Товары))

   Товар.НоваяГруппа

   Товар.Наименование = ***** Экспорт из Excel ******

   Товар.Записать

   Товар.ИспользоватьРодителя Товар.ТекущийЭлемент

   N = 100 'Количество строк в документе

   For Count = 1 То N Товар.Новый

      Товар.Наименование = Application.Cells(Count, 2).Value

      Товар.Розн_Цена = Application.Cells(Count, 3).Value

      Товар.Мел_Опт_Цена = Application.Cells(Count, 4).Value

      Товар.Onт_Цена = Application.Cells(Count, 5).Value

      Товар.Записать

   Next Count

End Sub

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

Другим способом обращения к данным 1С:Предприятие а из внешних программ является режим DDE. Основное преимущество данного режима является динамическое обновление получаемых из 1С:Предприятие данных.

Система 1С:Предприятие является DDE сервером и предоставляет свой сервис в получении данных и уведомлении DDE клиента об их изменении.

В качестве DDE сервера 1С:Предприятие может возвращать значение некоторого выражения, записанного на встроенном языке 1С:Предприятие. Возвращаемое значение является строкой. Для того, чтобы рассматривать результат выражения в качестве числа или даты, например в ячейке MS Excel, может потребоваться задание формата значения.

Для доступа к 1С:Предприятие посредством DDE следует использовать DDE-объект с именем 1CV7|DDE.

Пример:

* Ниже приведены примеры размещения в ячейках MS Excel DDE связей с программой 1С:Предприятие. Первое выражение в примере обращается к стандартной функции встроенного языка 1С:Предприятие. Второе выражение в примере обращается к функции, записанной в глобальном модуле конфигурации программы 1С:Предприятие.

='1CV7'|DDE!'РабочаяДата()'

='1CV7'|DDE!'СуммаПоНарядам()'

Замечание 1: Для правильной интерпретации значения выражения в качестве числа или даты в MS Excel, нужно в операционной системе установить соответствующий формат представления даты и числа, как он принят в 1С:Предприятие.

Замечание 2: Не рекомендуется обращаться посредством DDE к функциям 1С:Предприятие, которые могут выполняться продолжительное время. Это связано с тем, что обращение к данной функции будет выполняться достаточно часто при обновлениях DDE связей.

Содержание раздела