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.Выполнить().Выгрузить(); КонецЕсли; КонецПроцедуры
После выполнения наша обработка будет выглядеть так, как показано на рисунке ниже.
Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по ссылке.
Будем рады помочь Вам!
Комментарии
Ну подключились, а отключаться не надо что-ли? Каждое подключение к базе отъедает одну лицензию как-никак.
Неработает обработка….
Платформа: 1С:Предприятие 8.3 (8.3.22.1704)
Ошибка при установке значения атрибута контекста (СписокДокументов)
{ВнешняяОбработка.ПримерCOMсоединения.Форма.Форма.Форма(35)}:Объект.СписокДокументов = Запрос.Выполнить().Выгрузить();
{ВнешняяОбработка.ПримерCOMсоединения.Форма.Форма.Форма(42)}:ПолучитьОплаченныеСчетаНаСервере();
по причине:
Нельзя изменять поле, содержащее объект данных формы