COM соединение в 1С 8.3 на примере

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

Иногда стандартного функционала не достаточно, например, когда нужно применить сложные алгоритмы обработки данных. В таких случаях целесообразнее использовать в 1С 8.3 COM-соединение. Этот механизм позволяет подсоединиться к другой базе и получать из нее все необходимые данные. Такой способ отличается повышенным быстродействием и надежностью.

схема работы с ком-соединением

Реализация COM-соединения

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

Обратите внимание, что способ подключения к файловым и клиент-серверным базам отличается. Мы будем применять «V83.COMConnector», так как работа идет с базами на платформе 8.3. Следовательно, для более низких версий будут использоваться COMConnector V81 и V82 соответственно.

&НаСервере

Функция ПодключитьБД()

                        // Данный формат используется, если надо подключиться – файл. ИБ
                        ПараметрыПодключенияИБ = "File=""D:\BUH30""; Usr=""administrator"";Pwd=""123456""";

                        // Данный формат используется для подключения к клиент-сервер. ИБ
                        // ПараметрыПодключенияИБ = "Srvr=""НаименованиеСервера"";Ref=""ИмяИБ"";Usr=""ЛогинПользователя"";Pwd=""ПарольПользователя"";
                        V83COMCon= Новый COMОбъект("V83.COMConnector");

                        Попытка
                                               Возврат V83COMCon.Connect(ПараметрыПодключенияИБ);
                        Исключение
                                               Сообщить(ОписаниеОшибки());
                                               Возврат Неопределено;
                        КонецПопытки;

КонецФункции

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

&НаСервере

Процедура ПолучитьОплаченныеСчетаНаСервере()

СоединениеБУХ = ПодключитьБД();

Если ТипЗнч(СоединениеБУХ) <> Тип("Неопределено") Тогда
ЗапросБП30 = СоединениеБУХ.NewObject("Запрос");

ЗапросБП30.Текст = "ВЫБРАТЬ
|                     РеализацияТУ.Номер КАК Номер,
|                     РеализацияТУ.СуммаДокумента КАК СуммаДокумента
|ИЗ
|                     Документ.РеализацияТоваровУслуг КАК РеализацияТУ
|ГДЕ
|                    РеализацияТУ.Проведен = ИСТИНА
|                    И РеализацияТУ.Дата МЕЖДУ &ДатаН И &ДатаО";

ЗапросБП30.УстановитьПараметр("ДатаН", Объект.ДатаН);
ЗапросБП30.УстановитьПараметр("ДатаО", Объект.ДатаО);
Объект.СписокДокументов = ЗапросБП30.Выполнить().Выгрузить();

КонецЕсли;

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

После выполнения наша обработка будет выглядеть так, как показано на рисунке ниже.

внешний вид обработки