Подключение одной базы к другой при помощи com соединения в 1С 8.

com-connect

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

К примеру нам необходимо из конфигурации «Зарплата и Управление Персоналом» подключиться к другой конфигурации, в которой есть документы  Путевой лист грузового автомобиля, взять за определенный период такие реквизиты как водитель и сумму оплаты. На их основании создать в основной базе документы Сдельный Наряд.

ТаблицаЗначений = Новый ТаблицаЗначений;  //Подготавливаем таблицу значений
ТаблицаЗначений.Колонки.Добавить(«ФИО»);
ТаблицаЗначений.Колонки.Добавить(«Сумма»);

Путь = «D:\1c_base\Uchet»;  // Параметры для подключения к ИБ
Пользователь= «admin»;
Пароль = «159753»;
V82 = Новый COMобъект(«V82.ComConnector»);    //Создаем новый объект и подключаем
СтрокаСоединения = «File = ‘» +Путь+«‘; Usr = ‘» + Пользователь+«‘; Pwd = ‘»+Пароль+«‘»;

ПодключеннаяБаза= V82.Connect(СтрокаСоединения);   //ПодключеннаяБаза — COM объект с которым мы и будем дальше работать

ЗапросCom = ПодключеннаяБаза.newObject(«Запрос«);   //Создаем запрос к подключенной базе
ЗапросCom.Текст = «ВЫБРАТЬ
| схПутевойЛистГрузовогоАвтомобиля.Водитель,
| схПутевойЛистГрузовогоАвтомобиля.ИтогОплата,
|ИЗ
| Документ.схПутевойЛистГрузовогоАвтомобиля КАК схПутевойЛистГрузовогоАвтомобиля
|ГДЕ
| схПутевойЛистГрузовогоАвтомобиля.Дата МЕЖДУ &Начало И &Конец
| И схПутевойЛистГрузовогоАвтомобиля.ПометкаУдаления = ЛОЖЬ»;

ЗапросCom.УстановитьПараметр(«Начало», ДатаНач); // устанвливаем параметры для запроса. ДатаНач и ДатаКон у нас на форме обработки.
ЗапросCom.УстановитьПараметр(«Конец», КонецДня(ДатаКон));

Рез=ЗапросCom.Выполнить().Выбрать();

Пока Рез.Следующий() Цикл //Перебираем строки запроса и запихиваем в таблицу значений.
       НоваяСтрТЗ = ТаблицаЗначений.Добавить();
       НоваяСтрТЗ.ФИО = Рез.Водитель;
       НоваяСтрТЗ.Сумма = Рез.ИтогОплата;
КонецЦикла;

ТаблицаЗначений.Свернуть(«ФИО»,«Сумма»); // Сворачиваем таблицу значений. Все эти манипуляции можно было произвести в самом запросе.
//Все сгруппировать и отсортировать

Для каждого Строка ИЗ ТаблицаЗначений Цикл // Создаем новый документ уже в текущей базе и заполняем его из таблицы значений.
         НовДок = Документы.СдельныйНаряд.СоздатьДокумент(); 
         НовДок.Дата =ТекущаяДата();

         ИсполнительСтрока=НовДок.Исполнители.Добавить();
         ИсполнительСтрока.Сотрудник=Строка.ФИО;
         ИсполнительСтрока.СуммаКНачислениюРегл=Строка.Сумма;
КонецЦикла;

ФормаДок = НовДок.ПолучитьФорму(); //Получаем форму и записываем документ в Форме.
ФормаДок.Открыть();
ФормаДок.ЗаписатьВФорме();
ФормаДок.Закрыть();

Вот и все. Данный механизм довольно прост и удобен.

Поделитесь своим мнением

Свежие записи
Советы и помощь программиста в 1с © 2018 ·   Войти   · Наверх