Простая COM интеграция на примере передачи справочника Контрагенты

07.08.26

Интеграция - Перенос данных 1C

В статье мы с вами узнаем, как написать свою COM интеграцию на примере передачи справочника Контрагенты. Целью статьи и обработки является показать, как: 1. Подключиться по COM соединению из одной базы 1С к другой базы 1С. 2. По COM соединению создавать элементы в другой базе 1С. 3. Передать по COM соединению примитивные типы данных(число, строка, дата). 4. Передать по COM соединению данные с типом «Перечисление». 5. Показать, как передать по COM соединению табличные части на примере «контактной информации». 6. Показать, как передать по COM соединению данные с типом «Справочник.Ссылка». Задача статьи - рассказать про COM интеграцию на примере передачи справочника Контрагенты. Задача обработки - на готовом примере протестировать передачу контрагентов по COM.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Интеграция COM на примере передачи элементов справочника Контрагенты
.epf 18,56Kb
0 6 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

COM интеграция на примере передачи справочника Контрагенты. Передача контрагентов через COM (V83.COMConnector). Тестовое подключение к любой базе 1С по COM соединению.

В этой статье постараюсь максимально подробно показать, как создать COM интеграцию, так, как это умею делать я))), поделиться своим опытом, и при помощи обработки «ИнтеграцияCOMНаПримереПередачиЭлементовСправочникаКонтрагенты.epf» мы передадим нужных нам контрагентов из одной базы в другую.

 

Фото 1. COM интеграция на примере передачи справочника Контрагенты.

Часто необходимо перегрузить нормативно-справочную информацию (далее НСИ), такую как справочники Контрагенты, Договоры, Банки, Банковские счета и др. данные из одной базы 1С в другую базу 1С. Иногда нужно, чтобы какие-то данные одной базы выгружались в другие базы.  Существуют разные способы, как можно передать данные из одной базы 1С в другую, например:

1. Можно в КД написать правила XML и, например, через обработку «Универсальный обмен данными в формате XML» выгружать и загружать данные.

2. Можно реализовать новую интеграцию через WEB или HTTP сервисы.

3. Можно скомбинировать вариант 1 и 2, написав правила XML и передав выгруженные данные в WEB сервис приемника к примеру.

4. Можно сделать выгрузку/загрузку через файлы.

5. Можно сделать COM интеграцию и многие другие виды интеграций.

В данной статье мы узнаем с вами, как написать свою COM интеграцию на примере передачи справочника Контрагенты.

Данная статья и обработка - это мой пример COM интеграции. В рамках данной статьи и реализованной обработки не было цели передать все имеющиеся реквизиты справочника «Контрагенты», потому что в разных конфигурациях справочник «Контрагенты» имеет разный состав реквизитов, где-то их больше где-то меньше. Целью данной статьи и обработки является:

  1. Показать, как подключиться по COM соединению из одной базы 1С к другой базы 1С.
  2. Показать, как по COM соединению создавать элементы в другой базе 1С.
  3. Показать, как передать по COM соединению примитивные типы данных (число, строка, дата)
  4. Показать, как передать по COM соединению данные с типом «Перечисление»
  5. Показать, как передать по COM соединению табличные части на примере «контактной информации»
  6. Показать, как передать по COM соединению данные с типом «Справочник.Ссылка…»

Задача статьи показать и рассказать про COM интеграцию на примере передачи справочника Контрагенты. Задача обработки - на готовом примере передать контрагентов между базами с ограниченным составом передаваемых реквизитов.

Данная обработка «ИнтеграцияCOMНаПримереПередачиЭлементовСправочникаКонтрагенты.epf», используемая в этой статье, всегда сначала пытается найти контрагента или его родителя по УИД источника и, если не находит, пытается продолжить поиск и найти элемент по ключу ИНН+КПП (для юр. лиц.) или, если это группа контрагента, то по наименованию и коду. Если элемент всё равно не найден, тогда обработка создаёт новый элемент! Поиск страны осуществляется по коду. Используя данную обработку, вы легко можете допилить интеграцию необходимых вам реквизитов контрагентов, если их ещё нет в обработке, и передать элементы из вашей базы 1С в любую другую базу 1С на платформе 1С:Предприятие 8.3.

 

Часть 1. Для системного администратора (Подготовка на сервере).

Предположим, у нас есть два сервера, на одном сервере у нас установлена база 1С «Управление холдингом», а на втором сервере у нас установлена 1С «Бухгалтерия предприятия ПРОФ». Для того, чтобы сделать COM интеграцию справочника «Контрагенты» между базами 1С «Управление холдингом» и 1С «Бухгалтерия предприятия ПРОФ» (у вас могут быть любые другие базы 1С), необходимо, чтобы на двух этих серверах стояла одинаковая платформа и была зарегистрирована одинаковая COM компонента comcntr.dll из дистрибутива платформы, которую вы установили. Если компонента будет старее вашей платформы, работать COM интеграция не будет. Мы получим сообщение типа «…версия клиента и сервера отличаются…» и интеграция работать не будет.

Зарегистрировать COM компоненту comcntr.dll можно следующим образом:

 

Фото 2. Пример регистрации COM компоненты comcntr.dll

Также нужно помнить, что COM соединение использует виндовые компоненты и работает на Windows, если вы переходите на Linux/Unix системы, Вам придется переписывать эти интеграции по COM соединению.

 

Часть 2. Для программиста (Создание COM интеграции)

Для нашего примера и для дальнейшего удобства реализуем механизм интеграции в обработке. В дальнейшем мы можем запустить данную обработку на любой базе 1С, где есть справочник «Контрагенты», и из этой базы подключаться по COM соединению к любой другой базе 1С, где также есть справочник «Контрагенты», и передавать элементы справочника «Контрагенты» между базами. В дальнейшем можно разместить необходимый программный код обработки в общий модуль базы 1С, создать регламентное задание и запускать интеграцию автоматически без вашего участия. Берите программный код, пользуйтесь, модифицируйте, оптимизируйте, буду только рад, что обработка сможет Вам помочь. Внешняя обработка «ИнтеграцияCOMНаПримереПередачиЭлементовСправочникаКонтрагенты.epf» выгружает данные справочника «Контрагенты» из одной базы 1С в другую базу 1С через COM соединение.  

В качестве примера я использовал базы:

  • 1С «Управление холдингом», база «источник», из неё передаются выбранные контрагенты,
  • 1С «Бухгалтерия предприятия ПРОФ», база «приемник», в неё я передаю данные из «источника».

 

Подключение к базе по COM соединению

Создадим новую обработку «ИнтеграцияCOMНаПримереПередачиЭлементовСправочникаКонтрагенты.epf»

 

Фото 3. Обработка «ИнтеграцияCOMНаПримереПередачиЭлементовСправочникаКонтрагенты»

 

Создадим форму и элементы формы.

 

Фото 4. Главная форма обработки.

 

Кнопка «0. Тест соединения с базой» - предназначена для тестирования соединения, данная кнопка подключается по параметрам подключения и выдает сообщение, удалось подключиться или нет.

Как подключиться по COM соединению из одной базы 1С к другой базы 1С?

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

Сначала создаём строку подключения:

ИмяСервера = "< IP или имя сервера >";
ИмяИБНаСервере = "< название базы >";
Логин = "< Логин от базы>";
Пароль = "< Пароль от базы>";

СтрокаПодключения = "srvr=" + ИмяСервера+ ";ref=" + ИмяИБНаСервере+ ";Usr=" + Логин + ";Pwd=" + Пароль + ";"

ОбъектПодключения = "V83";  //"V82" …

//Произведем долгожданное подключение к внешней информационной базе:
//Тут несколько вариантов подключения к внешней базе по COM соединению, через Application или COMConnector:
//Вариант1:
//ОбъектПодключения = ОбъектПодключения + ".Application";
//ОбъектПодключения = Новый COMObject(ОбъектПодключения);

//Вариант2 (в этой обработке я использую этот вариант):
ОбъектПодключения = ОбъектПодключения + ".COMConnector";
ТекCOMПодключение = Новый COMОбъект(ОбъектПодключения);

//Получаем соединение с внешней базой:
ТекСоединениеВИБ = ТекCOMПодключение.Connect(СтрокаПодключения);

Как по COM соединению создавать элементы в другой базе 1С?

Рассмотрим несколько вариантов создания элемента по COM соединению:

////Вариант1:
//СправочникКонтрагентыСОМ = ТекСоединениеВИБ.NewObject("Справочник.Контрагенты");                  
//ЭлементСправочинкаВИБ = СправочникКонтрагентыСОМ.СоздатьЭлемент();        

////Вариант2 если планы грандиозные и нужно создавать элементы разных справочников,
//то это унифицированное создание элементов разных справочников (не только Валюты, но и Контрагенты, Договора и т.д.)
//Я бы написал так:

//ИмяОбъектаМетаданных = "Контрагенты"; //Валюты // Договоры...
//ЭлементСправочинкаВИБ = ТекСоединениеВИБ.Catalogs[ИмяОбъектаМетаданных].СоздатьЭлемент();
//
////Создадим элемент именно с таким же УИДом как у исходного:
//УИД = ТекСоединениеВИБ.NewObject("УникальныйИдентификатор", Стр.Контрагент);
//СправочникСсылка = ТекСоединениеВИБ.Catalogs[ИмяОбъектаМетаданных].ПолучитьСсылку(УИД);
//ЭлементСправочинкаВИБ.ОбменДанными.Загрузка = Истина;
//ЭлементСправочинкаВИБ.УстановитьСсылкуНового(СправочникСсылка);

//Вариант3 (удобный мне, в текущей статье и обработке использую его):
//Новый элемент в базе приемнике я создаю с УИДом источника. Это позволит нам в дальнейшем искать элемент и обновлять его по исходному УИДу источника.
//Переберем в цикле весь список контрагентов у которых стоит флаг «Выгружать». Данный программный код, приведенный в статье, максимально упрощён, для облегчения понимания, чтоб передать суть создания элемента по COM соединению.  В файле обработки, прикрепленной к статье он значительно больше.

Для Каждого Стр Из Объект.СписокКонтрагентов Цикл                 
	//Создаём либо элемент, либо группу:	
	Если Стр.Контрагент.ЭтоГруппа = Истина Тогда		
		КонтрагентВИБ = ТекСоединениеВИБ.Справочники.Контрагенты.СоздатьГруппу();		
	Иначе 		
		КонтрагентВИБ = ТекСоединениеВИБ.Справочники.Контрагенты.СоздатьЭлемент();		
	КонецЕсли;
	
	//Получаем УИД контрагента:	
	УИДСтрокой = XMLСтрока(Стр.Контрагент);	

	//На стороне ВИБ создаём УникальныйИдентификатор:	
	УИД = ТекСоединениеВИБ.NewObject("УникальныйИдентификатор", УИДСтрокой);
	
	// На стороне ВИБ по уникальному идентификатору получаем ссылку                      
	СправочникСсылка = ТекСоединениеВИБ.Справочники.Контрагенты.ПолучитьСсылку(УИД);
	
	//Установим ссылку	
	КонтрагентВИБ.УстановитьСсылкуНового(СправочникСсылка);
	
	//Так как мы устанавливаем свою ссылку источника и заполнение контрагента будет не полным, мы обязательно установим ОбменДанными.Загрузка в значение Истина:
	КонтрагентВИБ.ОбменДанными.Загрузка = Истина;
	
	//КонтрагентВИБ это наш новый, ещё не записанный, но готовый к заполнению контрагент, теперь можно его заполнять на стороне ВИБ:
	//Передадим общие реквизиты и для контрагента, и для группы контрагента:
	КонтрагентВИБ.Наименование = Стр.Контрагент.Наименование;  //В Стр.Контрагент лежит ссылка на исходный элемент.
	КонтрагентВИБ.Код = Стр.Контрагент.Код;     
	КонтрагентВИБ.ПометкаУдаления = Стр.Контрагент.ПометкаУдаления;
	
	//Заполнение элемента Контрагента, у группы НЕТ этих реквизитов:
	Если Стр.Контрагент.ЭтоГруппа = Ложь Тогда                                            
		КонтрагентВИБ.НаименованиеПолное = Стр.Контрагент.НаименованиеПолное;		
		КонтрагентВИБ.КодПоОКПО = Стр.Контрагент.КодПоОКПО;		
		КонтрагентВИБ.Комментарий = Стр.Контрагент.Комментарий;		
		КонтрагентВИБ.ДополнительнаяИнформация = Стр.Контрагент.ДополнительнаяИнформа		
		//…		
	КонецЕсли;
		
	//ЗАПИШЕМ ЭЛЕМЕНТ:	
	Попытка                                            
		
		КонтрагентВИБ.Записать();  
		//Урааа, если мы здесь, значит предыдущая строка кода «КонтрагентВИБ.Записать();» отработала успешно и контрагент записан, теперь установим в обработке флаг «Записано» в истину:
		Стр.Записано = Истина;                                                             
		
	Исключение                                 
		ТекстОшибки = ОписаниеОшибки();		
		Сообщить ("Не смогли записать контрагента: "+ Стр.Контрагент + Символы.ПС + ТекстОшибки);
		Стр.Описание = ТекстОшибки;                                             
	КонецПопытки;	
КонецЦикла;  //Для Каждого Стр Из Объект.СписокКонтрагентов Цикл 

Если мы выполним этот код, то на сторону ВИБ приемника, по COM соединению прекрасно будет передана и создана группа контрагентов, даже будет создан контрагент, только если мы откроем контрагента, мы увидим, что его обязательные поля заполнены не все, оно и не удивительно, ведь мы передали в интеграции пока что мало полей.

Как найти исходной элемент в базе приёмнике по COM соединению?

Если база приемник пустая, нет ничего проще! Создавайте элементы в приемнике с УИДом источника. Например, Контрагент1 в базе УХ имеет УИД1, при интеграции мы создаем в БП КОРП новый элемент Контрагент1, с таким же УИД1. В дальнейшем по УИД1 мы всегда найдём контрагента1. Все остальные ключи считаю не такими надежными. Код контрагента может задублиться какой-нибудь очередной загрузкой или ручным изменением, как и ключевые пары на подобии ИНН+КПП, но УИД1 в базе всегда будет только один.

Но тут возникает вопрос, а что делать, если в базе источника Контрагент1 в базе УХ имеет УИД1, а в базе приемника Контрагент1 в базе БП КОРП имеет УИД2, как искать эти элементы? Лучшая интеграция – это однозначное соответствие УИДа Контрагент1 УХ и УИДа Контрагент1 БП КОРП. Но как это соответствие сделать?

Ответ очень прост, нужно создать свой простенький регистр сведений «СвязанныеОбъекты», в базе из которой отправляется НСИ в другие ВИБ, в нашем примере это база источник УправлениеХолдингом. В УХ есть типовые механизмы интеграции по СОМ, но речь в этой статье не про них. В регистре «СвязанныеОбъекты» нам понадобиться создать три измерения:

-ИсходныйОбъектСсылка с типом «СправочникСсылка» (можем указать сразу тип «СправочникСсылка», чтоб в дальнейшем мы могли хранить связь и на справочник банки и валюты и договоры и на другие справочники НСИ):

 

Фото 5. Тип данных измерения «ИсходныйОбъектСсылка»

 

- ОбработанныйОбъектСсылка с типом «Строка» (тут мы будем хранить связанный УИД (36 символов) созданного в базе приемнике элемента)

- Используемая ИБ с типом, это может быть отдельный справочник или перечисление, или что-то ещё, где вы будите хранить весь перечень внешних баз, с которыми у вас будут интеграции. Этот разрез необходим, чтобы в дальнейшим можно было найти связь Контрагента1 с любой внешней базой, например, БП КОРП, УТ и т.д.

 

Фото 6. Пример связей одного контрагента «Тестовый контрагент311» с различными информационными базами.

 

В дальнейшем будет достаточно всего лишь обратиться к регистру сведений «СвязанныеОбъекты» и получить ОбработанныйОбъектСсылка ссылка для конкретной информационной базы. Но в данной обработке поиск по регистру не используется, мы считаем, что у нас нет регистра соответствия. При желании пишите в комментарии, и я дополню статью, как это можно сделать.

Что делать, если связи нет и регистра сведений «СвязанныеОбъекты» ещё нет? Пытаться искать контрагента по КЛЮЧУ. Ключ - это количество уникальных полей, которое позволит однозначно идентифицировать элемент, в данном примере элемент справочника «Контрагенты». К примеру, чтобы найти контрагента юр. лица, ключом может быть его ИНН+КПП, берем ключ (ИНН+КПП) в исходной базе, идём в базу приемник и пытаемся найти по связке ИНН и КПП похожего контрагента, если ничего не нашли, значит, такого контрагента юр. лица ещё не было в базе приемника, либо он есть, но у него не заполнено одно из ключевых полей в приемнике ИНН или КПП пустое. И тут мы приходим к необходимой мысли, перед тем как делать интеграцию, необходимо сначала проверить данные справочника «Контрагенты» на корректность в источнике и приемнике. Проверить, чтобы ИНН и КПП у юрлиц были заполнены, чтобы ИНН был заполнен у физлиц, чтобы все необходимые данные были заполнены в элементе, проверить, что нет дублей контрагентов, для этой цели я создавал обработку «Проверка контрагентов на ошибки заполнения ИНН/КПП. Дубли контрагентов, кодов контрагентов, банковских (расчетных) счетов, банков, договоров. Проверка договоров на заполнение даты, номера, наименования», которую можно посмотреть тут: //infostart.ru/1c/tools/2742250/. После приведения в порядок справочника «Контрагенты» уже можно выполнять интеграцию по COM соединению.

Если нужно передать страну контрагента, а отдельной интеграции справочника «Страны мира» ещё у вас нет, тут смело можно искать элемент в ВИБ приемнике по полю «Код». Только предварительно прогрузите справочник «Страны мира» в источнике и в приемнике, удалите дубли, если они у вас есть, и в дальнейшем поиск страны России по коду «643» или любой другой страны по её коду не будет вызывать проблем!))

 

 

Фото 7.  Поиск страны в приемнике можно настроить по «Коду».

 

Данная обработка «ИнтеграцияCOMНаПримереПередачиЭлементовСправочникаКонтрагенты.epf», используемая в этой статье, всегда сначала пытается найти контрагента или его родителя по УИД источника и, если не находит, пытается продолжить поиск и найти элемент по ключу ИНН+КПП или, если это группа контрагента, то по наименованию и коду. Если элемент всё равно не найден, тогда обработка создаёт новый элемент! Поиск страны осуществляется по коду.

Как передать по COM соединению данные с типом «Перечисление»?

Здесь на помощь нам придёт «Соответствие»! Сопоставим перечисление исходной базы перечислению базы приемника:

СоответствиеЗн = Новый Соответствие;
СоответствиеЗн.Вставить(Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо,"Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо");
СоответствиеЗн.Вставить(Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо,"Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо");

//Получим соответствие:
СоотвРек = СоответствиеЗн.Получить(Стр.Контрагент.ЮридическоеФизическоеЛицо);
//Если соответствия нет, то передаём пустую ссылку:
Если СоотвРек = Неопределено Тогда 
    КонтрагентВИБ.ЮридическоеФизическоеЛицо = ТекСоединениеВИБ.ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ПустаяСсылка");
//Иначе передадим найденное значение в ВИБ
Иначе
    КонтрагентВИБ.ЮридическоеФизическоеЛицо = ТекСоединениеВИБ.ПредопределенноеЗначение(СоотвРек);
КонецЕсли;

Как передать по COM соединению табличные части на примере «контактной информации»?

Я передаю контактную информацию по COM соединению следующим образом:

//Очищаем ТЧ КонтактнаяИнформация:
КонтрагентВИБ.КонтактнаяИнформация.Очистить();

//Делаем соответствие для перечисления «ТипыКонтактнойИнформации» слева перечисление источника, справа //перечисление приемника: СоответствиеЗначений = Новый Соответствие;СоответствиеЗначений.Вставить(Перечисления.ТипыКонтактнойИнформации.Адрес,"Перечисление.ТипыКонтактнойИнформации.Адрес");
СоответствиеЗначений.Вставить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты,"Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты");
СоответствиеЗначений.Вставить(Перечисления.ТипыКонтактнойИнформации.ВебСтраница,"Перечисление.ТипыКонтактнойИнформации.ВебСтраница");
СоответствиеЗначений.Вставить(Перечисления.ТипыКонтактнойИнформации.Другое,"Перечисление.ТипыКонтактнойИнформации.Другое");
СоответствиеЗначений.Вставить(Перечисления.ТипыКонтактнойИнформации.Телефон,"Перечисление.ТипыКонтактнойИнформации.Телефон");
СоответствиеЗначений.Вставить(Перечисления.ТипыКонтактнойИнформации.Факс,"Перечисление.ТипыКонтактнойИнформации.Факс");
СоответствиеЗначений.Вставить(Перечисления.ТипыКонтактнойИнформации.Skype,"Перечисление.ТипыКонтактнойИнформации.Skype");

//Идём по циклу и переносим из источника в приемник строку за строкой:
Для Каждого СтрокаКИ из Стр.Контрагент.КонтактнаяИнформация Цикл
	
	НовСтр = КонтрагентВИБ.КонтактнаяИнформация.Добавить();
	ЗаполнитьЗначенияСвойств(НовСтр, СтрокаКИ);
	ВидКИ = СтрокаКИ.Вид;	
	ВидДляСпискаКИ = СтрокаКИ.ВидДляСписка; 
	РодительКИ = ТекСоединениеВИБ.Справочники.ВидыКонтактнойИнформации.СправочникКонтрагенты;
	
	//Внимимание! Иногда ВидКИ.Наименование в исходной базе может быть "Телефон домашний", а в приемнике "Домашний телефон",	
	//Если Домашний телефон в приемнике не заполнился, нужно будет учесть и обработать эту ситуацию! В моём случае имена видов совпадают 
	//потому ищу штатно по ВидКИ.Наименование. 
	
	НовСтр.Вид = ТекСоединениеВИБ.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию(ВидКИ.Наименование,Ложь,РодительКИ);	
	НовСтр.ВидДляСписка = ТекСоединениеВИБ.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию(ВидДляСпискаКИ.Наименование,Ложь,РодительКИ);	
	СоотвТип = СоответствиеЗначений.Получить(СтрокаКИ.Тип);	
	
	Если СоотвТип = Неопределено Тогда 	
		//можно обработать эту ситуацию и выдать себе сообщение,  например.		
	Иначе
		
		ТипВВиб = ТекСоединениеВИБ.ПредопределенноеЗначение(СоотвТип);		
		НовСтр.Тип = ТипВВиб;   	
	КонецЕсли;                                                                   
КонецЦикла;

 

Часть 3. Рассказываю, как пользоваться обработкой «ИнтеграцияCOMНаПримереПередачиЭлементовСправочникаКонтрагенты.epf», и тестирование передачи контрагента:

В исходной базе создадим тестового контрагента «НовыйТестовыйКонтрагент1»:

 

Фото 8. Создадим тестового контрагента «НовыйТестовыйКонтрагент1».

 

Также создадим две тестовые группы «ТестоваяГруппа» и «ТестоваяГруппа2»:

 

Фото 9. Перечень тестовых элементов на стороне источника, готов, сейчас мы будем его передавать по COM интеграции в БП КОРП.

 

Всё готово к передаче элементов в БП КОРП, в базе источнике откроем обработку «ИнтеграцияCOMНаПримереПередачиЭлементовСправочникаКонтрагенты.epf»:

 

Фото 10. Откроем обработку «ИнтеграцияCOMНаПримереПередачиЭлементовСправочникаКонтрагенты.epf»

 

Фото 11.  Главная форма обработки.

 

В обработке заполним параметры подключения к внешней базе (в нашем случае параметры подключения к БП КОРП). Заполним поля «Имя сервера» и «Имя ИБ на сервере» - эти поля можно увидеть в запуске 1С Предприятия, выделив базу «приемник», внизу, слева есть информация «Srvr=» и «Ref=»:

 

Фото 12.  Информация «Srvr=» и «Ref=» для подключения.

 

Заполним поля «Пользователь» и «Пароль» - логин и пароль для входа в базу «приемник», проверьте, что у этого пользователя админские права, которые точно дают возможность создавать/изменять элементы справочника «Контрагенты».

Параметры подключения введены, теперь нажмем красную кнопку «0. Тест соединения с базой», если параметры подключения введены корректно, пользователю будет выдано сообщение, что произведено успешное тестовое подключение:

 

Фото 7.  Успешное тестовое подключение.

 

Если параметры подключения введены НЕ корректно, пользователю будет выдано сообщение, что подключение не удалось:

 

Фото 13. Подключение не удалось.

 

Теперь нажимаем желтую кнопку «1. Заполнить контрагенты в ТЧ обработки». Тем самым мы заполняем табличную часть обработки всеми контрагентами и группами контрагентов, которые можно интегрировать из УХ в БП КОРП, выборка не учитывает помеченные на удаление. Дождитесь загрузки в ТЧ, время заполнения списка к загрузке зависит от количества контрагентов!))) Либо можно вручную добавить в список нужные элементы и группы спр. «Контрагенты», которые вы хотите интегрировать в другую базу. Я выберу те же тестовые элементы, что и на фото 9. Теперь установим флаг «Выбрать всех Контрагентов», он автоматически установит на всех элементах флаг «Выбрать». Этот флаг отвечает за то, будет ли данный контрагент выгружаться или нет. Если флаг «Выбрать» установлен, значит, контрагент выбран к выгрузке.

 

Фото 14. Выбранные элементы к отправке в ВИБ.

 

Всё готово к отправке выбранных контрагентов, контрагенты выбраны, настал долгожданный момент выгрузки контрагентов из одной базы 1С в другую базу 1С. Для передачи элементов НСИ, нажимаем зеленую кнопку «2. Передать выбранные элементы спр. Контрагенты из нашей базы в ВИБ» и ждём, когда обработка подключится к внешней базе и создаст новые элементы или обновит существующие элементы, а также изменит существующие, по окончании выгрузки в колонке «Записано» появятся флаги у тех элементов, которые успешно переданы по COM интеграции в другую базу. Внизу обработки техническому специалисту будет выдано информационное сообщение «Удалось передать следующее количество контрагентов: ». Всё.

 

Фото 15. Загрузка завершена, в поле «Записано» установлены флаги, это значит, данные элементы успешно переданы по COM интеграции в другую базу. Если флаг «Записано» не установлен, значит, с элементом что-то не так, возможно, не заполнен ИНН или КПП.

 

Повторное нажатие зеленой кнопки «2» не отправит уже записанные элементы пока вы не снимете флаг «Записано». Дальнейшая переотправка нового, созданного этой обработкой элемента, всегда ищет элемент в приемнике по УИДу источника

Элементы уже в БП КОРП, идём в базу приемник, в справочник «Контрагенты», и проверяем результат:

 

Фото 16. Тестовые контрагенты успешно пришли и создались/изменились в БП КОРП.

 

Открываем в БП КОРП созданного нового тестового контрагента «НовыйТестовыйКонтрагент1», которого мы создали ещё на фото 8 и передали в БП КОРП, и видим, что он в приемнике заполнен корректно, так же, как в источнике. По COM соединению корректно передалась табличная часть, содержащая контактную информацию, передалась история наименования, история КПП, история контактной информации. По COM соединению отлично передались все примитивные данные типа число, строка, дата. По COM соединению так же отлично передались данные с типом «Перечисление», а также прекрасно передались данные с типом «Справочник.Ссылка». Так как данная обработка пример COM интеграции, данная обработка не передаёт все возможные реквизиты справочника «Контрагенты», потому что в каждой конфигурации справочник «Контрагенты» имеет разный состав реквизитов и в рамках данной статьи нет цели передать все имеющиеся реквизиты справочника «Контрагенты».

 

Фото 17. Контрагент по COM соединению пришел в ПБ КОРП и успешно создался.

 

До новых встреч друзья, буду рад, если моя статья кому-то поможет, нужно в жизни делать доброе дело хотя бы раз в день! ;) А в идеале как можно больше!)))

Проверено на следующих конфигурациях и релизах:

  • 1С:Управление холдингом 3.2 (русский и английский интерфейсы), релизы 3.2.1.111

Вступайте в нашу телеграмм-группу Инфостарт

COM интеграция V83.COMConnector