1С: выполнение запроса в другой базе
Задача: из текущей базы получить данные другой базы
Решение: используем COM соедниение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
Функция ПолучитьПодключениеКСервернойБД() ПараметрыСоед = "Srvr='"+объект.Сервер+"';Ref='"+объект.ИмяБазы+"';Usr='"+объект.Логин+"';Pwd='"+объект.Пароль+"';"; V83COMConnector= Новый COMОбъект("V83.COMConnector"); Попытка Base1С = V83COMConnector.Connect(ПараметрыСоед); сообщить(Base1С); Исключение сообщить ("Ошибка подключения!"); Base1С=неопределено; КонецПопытки; возврат Base1С; КонецФункции функция ПолучитьОстаткиВТекущейБазе(Дата1,ЛицевойСчет) //получаю остатки Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | vscРасчетыСАбонентамиОстаткиИОбороты.Тариф КАК Тариф, | vscРасчетыСАбонентамиОстаткиИОбороты.ВидУслуги КАК ВидУслуги, | vscРасчетыСАбонентамиОстаткиИОбороты.ВидНачисления КАК ВидНачисления, | vscРасчетыСАбонентамиОстаткиИОбороты.ДоговорНаПоставку КАК ДоговорНаПоставку, | vscРасчетыСАбонентамиОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток, | vscРасчетыСАбонентамиОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток, | vscРасчетыСАбонентамиОстаткиИОбороты.РасходКонечныйОстаток КАК РасходКонечныйОстаток |ИЗ | РегистрНакопления.vscРасчетыСАбонентами.ОстаткиИОбороты(ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0), &Дата1, , , ) КАК vscРасчетыСАбонентамиОстаткиИОбороты |ГДЕ | vscРасчетыСАбонентамиОстаткиИОбороты.ЛицевойСчет = &ЛицевойСчет | И vscРасчетыСАбонентамиОстаткиИОбороты.ВидРасчетов <> ЗНАЧЕНИЕ(Перечисление.vscВидыРасчетов.Корректировка) | |СГРУППИРОВАТЬ ПО | vscРасчетыСАбонентамиОстаткиИОбороты.Тариф, | vscРасчетыСАбонентамиОстаткиИОбороты.ВидУслуги, | vscРасчетыСАбонентамиОстаткиИОбороты.ВидНачисления, | vscРасчетыСАбонентамиОстаткиИОбороты.ДоговорНаПоставку, | vscРасчетыСАбонентамиОстаткиИОбороты.СуммаНачальныйОстаток, | vscРасчетыСАбонентамиОстаткиИОбороты.СуммаКонечныйОстаток, | vscРасчетыСАбонентамиОстаткиИОбороты.РасходКонечныйОстаток"; Запрос.УстановитьПараметр("Дата1", КонецДня(Дата1)+1); Запрос.УстановитьПараметр("ЛицевойСчет", ЛицевойСчет); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); возврат ВыборкаДетальныеЗаписи; конецфункции |
Обратить внимание! В качестве передаваемых параметров нельзя использовать объекты. ТОЛЬКО примитивные типы. Типа строка,номер и т.д.