1С8 Пример: COMConnector. Выборка их другой базы в Таблицу значений через COMConnector.

Пример: Работая в базе Бухгалтерия, получаем Таблицу Значений из выборки к другой базе.

Тонкость работы с V82.COMConnector в том, что мы не можем при работе с другой базой оперировать ссылками на объекты из родной базы. Если запрос нам возвращает ссылки на объекты из другой базы то мы не сможем воспользоваться функцией .Выгрузить(). Поэтому результат запроса и параметры запроса должны быть простых типов, а не ссылками на объекты базы. Каждая из баз имеет свое пространство объектов и ссылок на них.

Логика примера: из "Бухгалтерии" подкючиться к базе "Управление Торговлей" и получить оттуда документы по контрагенту за период. Положить это в Таблицу значений

  • 1. Объявляем переменную ИБ_Источник - это объект тип COMConnector к УТ
  • 2. Объявляем переменную ТЗДокументыИзУТ - это объект тип Таблица значений - результат выборки
  • 3. Подключаемся к базе УТ - вычисляем ИБ_Источник
  • 4. Выполняем запрос к УТ через УТ_Запрос = ИБ_Источник.NewObject("Query");
  • 5. Выгружаем результат запроса в ТЗВыборка тип COMОбъект, очень похожий на таблицу значений.
    Результат = УТ_Запрос.Выполнить();

    ТЗВыборка = Результат.Выгрузить(); // СОМОбъект очень похожий на Таблицу значений
  • 6. Добавляем в результирующую таблицу ТЗДокументыИзУТ (тип Таблица Значений) строки из таблицы ТЗВыборка (тип COMОбъект)
  • Перем ИБ_Источник;     // Коннектор к базе Управление Торговлей
    Перем ТЗДокументыИзУТ; // Результирующая ТЗ
    
    // Добавим выборку ТЗОткуда (тип COMОбъект) в результирующую таблицу значений ТЗКуда
    Функция ДобавитьВТЗ(ТЗОткуда,ТЗКуда)
    	Для каждого ТекДок из ТЗОткуда Цикл 
    		
    		НовСтрока = ТЗКуда.Добавить();
    		НовСтрока.Документ = ТекДок.ТипДокумента;
    		КодОрганизации = ТекДок.КодОрганизации;				
    		НовСтрока.Флагвыгр = Истина;
    		НовСтрока.ДатаДок = ТекДок.Дата;
    		НовСтрока.НомерДок = ТекДок.Номер;        			
    		НовСтрока.ИД = ТекДок.Ссылка;
    		НовСтрока.Клиент=ТекДок.Контрагент;	
    		
    		сообщить(ТекДок.ТипДокумента + " " + ТекДок.Ссылка );
    	КонецЦикла;	
    КонецФункции	
    
    // 1. Подключаемся к Базе данных Управление Торговлей.
    // 2. Выполняем запрос-выборку. Получаем определенный тип документов за период  по 
    //    контрагенту.
    // 3. Добавим выборку, полученную с помощью функции .Выгрузить() в результирующую таблицу значений.
    // 4. Возвращаем СОМОбъект, очень похожий на нормальную таблицу значений.
    Функция ПолучитьДокументы(ТипДокумента,Дата1,Дата2,КонтрагентНаименованиеПолное)
    	
    	УТ_Запрос = ИБ_Источник.NewObject("Query"); 
    	
    	// Запрос к базе УТ
    	// функции ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ()) позволяют представить данные как простые, а не COM-объекты
    	УТ_Запрос.Text =	
    	"ВЫБРАТЬ
    	|   &ТипДокумента как ТипДокумента,
    	|	ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(Док.Ссылка)) как Ссылка,
    	|	ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(Док.Организация.Код)) как КодОрганизации,
    	|	ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(Док.Дата)) как Дата,
    	|	ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(Док.Номер)) как Номер,	
    	|	ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(Док.Контрагент.Наименование)) как Контрагент	
    	|ИЗ
    	|	Документ." + ТипДокумента + " КАК Док
    	|ГДЕ
    	|	Док.Дата >= &Дата1 
    	|	И Док.Дата <= &Дата2
    	|   И (ВЫРАЗИТЬ(Док.Контрагент.НаименованиеПолное КАК СТРОКА(1000))) 
    	|      = &КонтрагентНаименованиеПолное";
    	
    	//Параметры запроса
    	УТ_Запрос.УстановитьПараметр("ТипДокумента",ТипДокумента); 	
    	УТ_Запрос.УстановитьПараметр("Дата1",Дата1);// Дата
    	УТ_Запрос.УстановитьПараметр("Дата2",Дата2);// Дата
    	УТ_Запрос.УстановитьПараметр("КонтрагентНаименованиеПолное",КонтрагентНаименованиеПолное);
    	
    	Результат = УТ_Запрос.Выполнить();
    	
    	ТЗВыборка = Результат.Выгрузить(); // СОМОбъект очень похожий на Таблицу значений 	
    	
    	// добавим выборку в результирующую таблицу значений
    	ДобавитьВТЗ(ТЗВыборка,ТЗДокументыИзУТ);	// откуда -> куда	
    
    	Возврат ТЗВыборка; 
    	
    КонецФункции
    
    // Начало
    // Основная логика. Точка входа.
    Функция main()
    	v8 = Новый COMОбъект("V82.COMConnector");
    	Пользователь="Администратор";
    	Пароль="admin";	
    	
    	Попытка
    		ПутьЗагрузки=СокрЛП(ПутьКБазе);
    		ИБ_Источник = v8.Connect("File=D:\DB1C\УТ;Usr="+Пользователь+";Pwd="+Пароль+";");		
    		
    	Исключение
    		Сообщить("База данных не открыта!!!");
    		Возврат;
    	КонецПопытки;
    	
    	//************Реализация**************		
    	ТЗВыборкаДоков1 = ПолучитьДокументы("РеализацияТоваровУслуг",Дата1,Дата2,Клиент.НаименованиеПолное);
    		
    	//***********РКО*******************	
    	ТЗВыборкаДоков2 = ПолучитьДокументы("РасходныйКассовыйОрдер",Дата1,Дата2,Клиент.НаименованиеПолное);	
    		
    	//*********поступление товаров ***************************	
    	ТЗВыборкаДоков3 = ПолучитьДокументы("ПоступлениеТоваровУслуг",Дата1,Дата2,Клиент.НаименованиеПолное);	
    		
    	//****************платежное поручение ******************	
    	ТЗВыборкаДоков4 = ПолучитьДокументы("ПлатежноеПоручениеИсходящее",Дата1,Дата2,Клиент.НаименованиеПолное);	
    	ТЗВыборкаДоков5 = ПолучитьДокументы("ПлатежныйОрдерСписаниеДенежныхСредств",Дата1,Дата2,Клиент.НаименованиеПолное);
    	ТЗВыборкаДоков6 = ПолучитьДокументы("ПлатежноеПоручениеВходящее",Дата1,Дата2,Клиент.НаименованиеПолное);		
    	ТЗВыборкаДоков7 = ПолучитьДокументы("ПлатежныйОрдерПоступлениеДенежныхСредств",Дата1,Дата2,Клиент.НаименованиеПолное);
    	
    	//**************** счетфактура выданный ******************			
    	ТЗВыборкаДоков8 = ПолучитьДокументы("СчетФактураВыданный",Дата1,Дата2,Клиент.НаименованиеПолное);
    	
    	///**********счетфактура полученный	
    	ТЗВыборкаДоков9 = ПолучитьДокументы("СчетФактураПолученный",Дата1,Дата2,Клиент.НаименованиеПолное);
    
    КонецФункции	
    
    main(); // Точка входа
    

    Здесь скриншот объекта ТЗВыборка получаемого из результата выполнения запроса:

    ТЗВыборка = Результат.Выгрузить(); // СОМОбъект очень похожий на Таблицу значений COMConnector и COMОбъект - выборка в таблицу значений.

    


    Рекламный блок:

    Предлагаем решение Ваших задач 1С.

    Внедрение 1С:

    Доработка и сопровождение 1С:

    Ориентировочная стоимость работ программиста 1С : 500 р. за 1 час работы.

    Пишите: j008@j008.ru

    Звоните: 8 916 710 83 51 Ольга