Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Глава 5. Взаимодействие с приложением системы «1С:Предприятие»
Дальше: Automation Client

Automation Server

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

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

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

Поставим задачу загрузить данные из листа программы Microsoft Excel в базу данных «1С:Предприятия».

В листе данные расположены следующим образом (рис. 5.1).

Рис. 5.1. Состав листа Excel

Признаком конца табличной части является наличие в колонке «Номер» символа «#».

Пример кода макроса на Visual Basic, с помощью которого выполняется загрузка данных, приведен в листинге 5.1.

Листинг 5.1. Пример чтения данных из листа Excel в толстом клиенте

Sub OLE()

Dim trade As Object

Dim Элемент As Object

Set trade = CreateObject("V83.Application")

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

Rem создаем документ

Set Документ = trade.Документы.РасходнаяНакладная.СоздатьДокумент()

Rem получаем данные из листа

Set Клиент = trade.Справочники.Клиенты.НайтиПоНаименованию(Application.Cells(1, 2).Value)

НомерДокумента = Application.Cells(2, 2).Value

Дата = Application.Cells(3, 2).Value

Rem записываем полученные данные в документ

Документ.Клиент = Клиент

Документ.Дата = Дата

Документ.Номер = НомерДокумента

Номер = 6 'Первая строка табличной части

НомерСтроки = Application.Cells(Номер, 1).Value

Rem в последней строке табличной части будет символ #

While НомерСтроки <> "#"

Rem получаем данные из листа

Set Номенклатура = trade.Справочники.Товары.НайтиПоНаименованию(Application.Cells(Номер, 2).Value)

Количество = Application.Cells(Номер, 5).Value

Цена = Application.Cells(Номер, 6).Value

Сумма = Application.Cells(Номер, 7).Value

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

Set Строка = Документ.Товары.Добавить()

Строка.Товар = Номенклатура

Строка.Количество = Количество

Строка.Цена = Цена

Строка.Сумма = Сумма

Номер = Номер + 1

НомерСтроки = Application.Cells(Номер, 1).Value

Wend

Документ.Записать

Документ.ПолучитьФорму.Открыть

End Sub

В данном примере создается COM-объект с идентификатором V83.Application, то есть запускается и инициализируется конфигурация «1С:Предприятия» в режиме толстого клиента с базой данных в каталоге c:\InfoBases\Trade. Далее создается экземпляр документа РасходнаяНакладная. Из листа извлекаются данные документа и записываются в объект «1С:Предприятия». В конце алгоритма открывается форма вновь созданного документа.

В результате выполнения макроса из листа Microsoft Excel в информационной базе «1С:Предприятия» создается расходная накладная, документ заполняется данными и открывается его форма (рис. 5.2).

Рис. 5.2. Расходная накладная, заполненная из листа Microsoft Excel

Аналогичные действия можно выполнять и в режиме тонкого клиента, когда создается объект V83c.Application. Однако в тонком клиенте недоступны методы прикладных объектов, невозможно обратиться к менеджерам справочников, документов и т. п. Поэтому новый документ создается с помощью метода ПолучитьФорму(), обращение к его реквизитам происходит через основной реквизит полученной формы, а поиск ссылки на справочник выполняется в функции ПолучитьСсылкуНаСправочник() общего неглобального модуля РаботаСДанными (листинг 5.2).

Листинг 5.2. Пример чтения данных из листа Excel в тонком клиенте

Sub OLE_V83c()

Dim trade As Object

Dim Элемент As Object

Set trade = CreateObject("V83c.Application")

trade.Connect("File=""c:\InfoBases\Trade"";Usr="""";")

Rem создаем документ

Set ФормаДокумента = trade.ПолучитьФорму("Документ.РасходнаяНакладная.ФормаОбъекта")

Rem получаем данные из листа

Set Клиент = trade.РаботаСДанными.ПолучитьСсылкуНаСправочник("Клиенты", Application.Cells(1, 2).Value)

НомерДокумента = Application.Cells(2, 2).Value

Дата = Application.Cells(3, 2).Value

Rem записываем полученные данные в документ

ФормаДокумента.Объект.Клиент = Клиент

ФормаДокумента.Объект.Дата = Дата

ФормаДокумента.Объект.Номер = НомерДокумента

Номер = 6 'Первая строка табличной части

НомерСтроки = Application.Cells(Номер, 1).Value

Rem в последней строке табличной части будет символ #

While НомерСтроки <> "#"

Rem получаем данные из листа

Set Номенклатура = trade.РаботаСДанными.ПолучитьСсылкуНаСправочник("Товары", Application.Cells(Номер, 2).Value)

Количество = Application.Cells(Номер, 5).Value

Цена = Application.Cells(Номер, 6).Value

Сумма = Application.Cells(Номер, 7).Value

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

Set Строка = ФормаДокумента.Объект.Товары.Добавить()

Строка.Товар = Номенклатура

Строка.Количество = Количество

Строка.Цена = Цена

Строка.Сумма = Сумма

Номер = Номер + 1

НомерСтроки = Application.Cells(Номер, 1).Value

Wend

ФормаДокумента.Открыть

End Sub

В конце алгоритма открывается форма вновь созданного документа, и данные в документ могут быть записаны интерактивно из формы.

Результат выполнения этого макроса аналогичен показанному выше на рис. 5.2.

Объект Automation-сервер «1С:Предприятия» в качестве своих свойств может иметь:

Automation-сервер «1С:Предприятия» в качестве своих методов может иметь:

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

подробнее

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

Листинг 5.3. Пример использования системы «1С:Предприятие» в качестве Automation Client (толстый клиент)

Процедура AutomationТолстыйКлиент(Команда)

 

Путь = "c:\InfoBases\Trade";

Пароль = "";

Пользователь = "";

 

V83 = Новый COMОбъект("V83.Application");

 

Попытка

Открытие = V83.Connect("File=" + Путь + ";Usr=" + Пользователь + ";Pwd=" + Пароль + ";");

Исключение

ПоказатьПредупреждение(, "База данных не открыта!!!");

Возврат;

КонецПопытки;

 

МенеджерНоменклатуры = V83.Справочники.Товары;

НовыйЭлемент = МенеджерНоменклатуры.СоздатьЭлемент();

НовыйЭлемент.Наименование = "Созданный";

НовыйЭлемент.Записать();

Фрм = НовыйЭлемент.ПолучитьФорму();

Фрм.Открыть();

 

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

Листинг 5.4. Пример использования системы «1С:Предприятие» в качестве Automation Client (тонкий клиент)

Процедура AutomationТонкийКлиент(Команда)

 

Путь = "c:\InfoBases\Trade";

Пароль = "";

Пользователь = "";

 

V83 = Новый COMObject("V83c.Application");

 

Попытка

Открытие = V83.Connect("File=" + Путь + ";Usr=" + Пользователь + ";Pwd=" + Пароль + ";");

Исключение

ПоказатьПредупреждение(, "База данных не открыта!!!");

Возврат;

КонецПопытки;

 

//тонкий клиент - создание нового элемента при открытии формы.

Фрм = V83.ПолучитьФорму("Справочник.Товары.ФормаОбъекта");

Фрм.Объект.Наименование = "Добавленный";

Фрм.Открыть();

 

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

Назад: Глава 5. Взаимодействие с приложением системы «1С:Предприятие»
Дальше: Automation Client