Основная задача, решаемая с помощью внешнего соединения, – обеспечение надежного и быстрого программного доступа к данным системы «1С:Предприятие» из внешних приложений. В общем и целом работа с системой «1С:Предприятие» через внешнее соединение подобна работе с системой «1С:Предприятие» в режиме Automation-сервера. Основные отличия заключаются в следующем:
При использовании внешнего соединения для доступа к данным системы «1С:Предприятие» имеются следующие преимущества по сравнению с использованием Automation-сервера:
Для организации доступа к данным системы «1С:Предприятие» через внешнее соединение выполняется следующая последовательность действий:
Поставим задачу загрузить данные из листа программы 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=" + Пароль + ";");
Исключение
Предупреждение("База данных не открыта!!!");
Возврат;
КонецПопытки;
МенеджерНоменклатуры = Открытие.Справочники.Товары;
НовыйЭлемент = МенеджерНоменклатуры.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Новый товар";
НовыйЭлемент.Записать();