258 документов
← К списку

Внешнее соединение

страница

Внешнее соединение

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

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

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

  • более быстрая установка соединения, так как не требуется создания отдельного процесса операционной системы, а все действия производятся в рамках вызывающего процесса;
  • более быстрое обращение к свойствам и методам объектов системы «1С:Предприятие», так как для организации обращения не требуется организации межпроцессной коммуникации;
  • меньший расход ресурсов операционной системы.

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

  • создается менеджер COM-соединений, с помощью которого производится установка соединения;
  • через полученный объект внешнего соединения производится обращение к допустимым методам, свойствам и объектам базы данных, с которой установлено соединение.

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

В листе данные расположены так же, как и в предыдущем примере (см. рис. 5.1). Признаком конца табличной части является наличие в колонке «Номер» символа «#».

Пример кода приведен в листинге 5.6.

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

Sub COM()

Dim trade As Object

Dim Элемент As Object

 

Set obj = CreateObject("V83.ComConnector")

Set trade = obj.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

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

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

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

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

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

В качестве своих методов внешнее соединение может иметь:

  • системные процедуры и функции;
  • процедуры и функции модуля внешнего соединения и общих модулей, объявленные с ключевым словом Экспорт.

Открытые внешние соединения могут быть сохранены в пуле для их повторного использования, что позволяет экономить ресурсы и ускорять работу пользователей, которые ранее уже подключались к данной информационной базе. Для управления пулом используются свойства менеджера COM-соединений: MaxConnections, PoolCapacity и PoolTimeout. После создания менеджера COM-соединений используются стандартные значения этих параметров – 0. Поэтому пул хотя и есть, но не используется. Чтобы «1С:Предприятие» начало использовать пул, нужно установить значения, отличные от 0.

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

подробнее

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

Листинг 5.7. Пример обращения к другой информационной базе «1С:Предприятия»

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

Пароль = "";

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

 

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

 

Попытка

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

Исключение

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

Возврат;

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

 

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

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

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

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