Как сделать обмен базами 1с 8.3

Как сделать обмен базами 1с 8.3
Как сделать обмен базами 1с 8.3
Как сделать обмен базами 1с 8.3
Как сделать обмен базами 1с 8.3
Как сделать обмен базами 1с 8.3
image_pdf

Печать (Ctrl+P)

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

Можно создать два вида COM объектов для приложения 1С. Это ole соединения  V83.Application и  com соединения  V83.COMConnector. В случае с V83.Application запускается практически полноценный экземпляр приложения 1С. В случае использования V83.COMConnector запускается небольшая серверная часть. Скорость работы в этом случае выше, но некоторые функции могут быть недоступны. В частности работа с формами и с общими модулями для которых не установлено свойство работы с внешними соединениями. Преимущественно надо использовать V83.COMConnector и только в случае нехватки функционала V83.Application. Особенно сильно разница в скорости работы может быть заметна на базах большого объема. Для платформе 8.2 используется V82.Application или V82.COMConnector

Установить OLE соединение

Соединение = Новый COMОбъект(“V83.Application”);

Установить COM соединение

Соединение = Новый COMОбъект(“V83.COMConnector”);

Строка подключения

//Для варианта клиент- сервер
СтрокаСоединения = “Srvr = ““ИмяСервера”“;Ref = ““ИмяБазы”“; Usr = ИмяПользователя; Pwd = Пароль”;
//Для варианта файлового режима:
СтрокаСоединения = “File = ““ПутьКБазе”“; Usr = ИмяПользователя; Pwd = Пароль”;
Попытка
Подключение = Соединение.Connect(СтрокаСоединения);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = “Не удалось подключиться к базе” + ОписаниеОшибки(); Сообщение.Сообщить();
КонецПопытки;

Разрыв соединения

Соединение = Неопределено;
Для объекта V83.Application выполнять разрыв соединения обязательно, в противном случае останется висеть незавершенный сеанс, который потом придется удалять вручную. В случае с V83.COMConnector соединение разрывается автоматически при завершении процедуры в которой выполнялось подключение.И есть еще один маленький момент. Для пользователя под которым выполняется подключение должен быть отключен флажок «Запрашивать подтверждение при закрытии программы» в его настройках.

Метод NewObject()

Для создания нового объекта  можно воспользоваться методом NewObject(), например: 

для V83.COMConnector

ЗапросCOM = Подключение.NewObject(“Запрос“); 
ТаблицаCOM = Подключение.NewObject(“ТаблицаЗначений”);
МассивCOM = Подключение.NewObject(“Массив”);
УидCOM =Подключение.NewObject(“УникальныйИдентификатор”,СтрокаУИД);

 для V83.Application

ЗапросOLE = Соединение.NewObject(“Запрос“); 
ТаблицаOLE = Соединение.NewObject(“ТаблицаЗначений”);
МассивOLE = Соединение.NewObject(“Массив”);
УидCOM =Соединение.NewObject(“УникальныйИдентификатор”,СтрокаУИД);

После создания Com объекта можно далее работать с ним, например

ЗапросCOM.Текст =“ВЫБРАТЬ
| ДолжностиОрганизаций.Код,
| ДолжностиОрганизаций.Наименование
|ИЗ | Справочник.ДолжностиОрганизаций
КАК ДолжностиОрганизаций”;
Результат = ЗапросCOM.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
КонецЦикла;
Можно также использовать менеджеры объектов конфигурации:
СправочникCOM = Подключение.Справочники.ИмяСправочника;
ДокументCOM = Подключение.Документы.ИмяДокумента;
РегистрCOM = Подключение.РегистрыСведений.ИмяРегистра;

Получение и сравнение перечисления через COM соединение

Для сравнения значений элементов перечислений, определенных в конфигурации, необходимо выполнить преобразование этих элементов к одному из примитивных типов, сравнение которых не вызывает трудности. Такими типами могут быть либо числовой, либо строковый тип. Преобразовать значение элемента перечисления к числовому типу можно так

ЭлементПеречисления = Подключение.Справочники.Справочник1.НайтиПоКоду(1).Реквизит1;

ВозможныеЗначения = ЭлементПеречисления.Метаданные().ЗначенияПеречисления;

НомерЭлементаПеречисления = ВозможныеЗначения.Индекс(ВозможныеЗначения.Найти(Соединение.XMLString(ЭлементПеречисления)));

Если НомерЭлементаПеречисления = 0 Тогда    Сообщить(“ЗначениеПеречисления1”);

ИначеЕсли НомерЭлементаПеречисления = 1 Тогда    Сообщить(“ЗначениеПеречисления2”);

КонецЕсли;

Получение объекта через COM по идентификатору

Через  менеджеры объектов конфигурации получаем com объект, например :
ДокументCOM = Соединение.Документы.ИмяДокумента;

Затем получаем строку уникального идентификатора :

СтрокаУИД=Соединение.string(ДокументCOM.УникальныйИдентификатор())

Затем в базе данных можно найти по ссылке нужный документ, таким образом

Идентификатор= Новый УникальныйИдентификатор(СтрокаУИД);
СсылкаПоИдентификатору = Документы[ИмяДокумента].ПолучитьСсылку(Идентификатор);

Если нужно найти com объект по документ по идентификатору,  то тогда нужно написать так:

УидCOM = Соединение.NewObject(“УникальныйИдентификатор”,СтрокаУИД);
СсылкаПоИдентификатору = Соединение.Документы[ИмяДокумента].ПолучитьСсылку(УидCOM);

Похожее Как сделать обмен базами 1с 8.3 Как сделать обмен базами 1с 8.3 Как сделать обмен базами 1с 8.3 Как сделать обмен базами 1с 8.3 Как сделать обмен базами 1с 8.3 Как сделать обмен базами 1с 8.3 Как сделать обмен базами 1с 8.3 Как сделать обмен базами 1с 8.3 Как сделать обмен базами 1с 8.3

Тоже читают:



Оформить открытку с днем рождения любимому

Как сделать фарш для котлет из свинины сочным и мягким

Как сделать хорошую аудиограмму

Схемы монтажа батарей отопления

Новогодние поздравление девушке