|
Внешние источники данных, можно ли вытянуть данные запросом? | ☑ | ||
---|---|---|---|---|
0
Ёхан Палыч
16.05.12
✎
05:46
|
8.2.15. Внешние источники данных. Можно ли вытянуть данные запросом, состоящим из нескольких таблиц? Пока вижу только возможность тягать по одной таблице.
|
|||
1
Ёхан Палыч
16.05.12
✎
05:59
|
интересует oracle
|
|||
2
IamAlexy
16.05.12
✎
06:18
|
тянуть из вьюхи ?
|
|||
3
Ёхан Палыч
16.05.12
✎
06:21
|
(2) да.
а средствами 1с создать запрос не получится, я так понял. |
|||
4
Живой Ископаемый
16.05.12
✎
06:21
|
непонятно на каком уровне ограничение самого ВИДа или драйвера ОДБС. но только одну.
Еще там LIKE регистрозависим. |
|||
5
Ёхан Палыч
16.05.12
✎
06:24
|
ок, спасибо
|
|||
6
Ёхан Палыч
16.05.12
✎
10:58
|
а передать параметр в функцию, которая учавствует в оракл-запросе во вьюшке наверное нельзя, так?
|
|||
7
Rizhij_Nikitos
16.05.12
✎
11:00
|
Можно тока нужно писать SQL запрос и использовать com объекте. Как тебе мо
|
|||
8
Rizhij_Nikitos
16.05.12
✎
11:00
|
Как тебе мой вариант (0)
|
|||
9
Ёхан Палыч
16.05.12
✎
11:02
|
(7) об этом и думаю. через ADO, наверное надо
|
|||
10
Rizhij_Nikitos
16.05.12
✎
11:14
|
Скинуть пример я как тащил данные с помощью ADO?
|
|||
11
Ёхан Палыч
16.05.12
✎
11:18
|
(10) скинь пожалйста, буду очень признателен
|
|||
12
Ёхан Палыч
16.05.12
✎
11:25
|
(10) не пропадай
|
|||
13
Rizhij_Nikitos
16.05.12
✎
11:27
|
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("НомерИзВне",ОписаниеТиповС); //1 ТЗ.Колонки.Добавить("КодФилиала",ОписаниеТиповЧ1); //2 ТЗ.Колонки.Добавить("НазваниеФилиала",ОписаниеТиповС); //3 ТЗ.Колонки.Добавить("ДатаДанных",ОписаниеТиповД); //4 ТЗ.Колонки.Добавить("РеализацияКомиссия",ОписаниеТиповЧ); //5 ТЗ.Колонки.Добавить("РеализацияКомиссияНомер",ОписаниеТиповЧ2); //6 ТЗ.Колонки.Добавить("РеализацияСкупка",ОписаниеТиповЧ); //7 ТЗ.Колонки.Добавить("РеализацияСкупкаНомер",ОписаниеТиповЧ3); //8 ТЗ.Колонки.Добавить("ВозвратСсудыЛомбарду",ОписаниеТиповЧ); //9 ТЗ.Колонки.Добавить("ВозвратСсудыЛомбардуНомер",ОписаниеТиповЧ3); //10 ТЗ.Колонки.Добавить("ПроцентыПоЛомбарду",ОписаниеТиповЧ); //11 ТЗ.Колонки.Добавить("ПроцентыПоЛомбардуНомер",ОписаниеТиповЧ3); //12 ТЗ.Колонки.Добавить("ХранениеКомиссионногоТовара",ОписаниеТиповЧ); //13 ТЗ.Колонки.Добавить("ХранениеКомиссионногоТовараНомер",ОписаниеТиповЧ3); //14 ТЗ.Колонки.Добавить("ПолученоИзКассыСобственник",ОписаниеТиповЧ); //15 ТЗ.Колонки.Добавить("ПолученоИзКассыСобственникНомер",ОписаниеТиповЧ3); //16 ТЗ.Колонки.Добавить("ПринятоЗаймов",ОписаниеТиповЧ); //17 ТЗ.Колонки.Добавить("ПринятоЗаймовНомер",ОписаниеТиповЧ3); //18 ТЗ.Колонки.Добавить("ВыплатаЗадолженностиКомитентам",ОписаниеТиповЧ); //19 ТЗ.Колонки.Добавить("ВыплатаЗадолженностиКомитентамНомер",ОписаниеТиповЧ3); //20 ТЗ.Колонки.Добавить("Скупка",ОписаниеТиповЧ); //21 ТЗ.Колонки.Добавить("СкупкаНомер",ОписаниеТиповЧ3); //22 ТЗ.Колонки.Добавить("ПереданоВкассуСобственник",ОписаниеТиповЧ); //23 ТЗ.Колонки.Добавить("ПереданоВкассуСобственникНомер",ОписаниеТиповЧ3); //24 ТЗ.Колонки.Добавить("ВыданоЗаймов",ОписаниеТиповЧ); //25 ТЗ.Колонки.Добавить("ВыданоЗаймовНомер",ОписаниеТиповЧ3); //26 ТЗ.Колонки.Добавить("ВыданоПроцентовПоЗаймам",ОписаниеТиповЧ); //27 ТЗ.Колонки.Добавить("ВыданоПроцентовПоЗаймамНомер",ОписаниеТиповЧ3); //28 ТЗ.Колонки.Добавить("ВыданоСсуд",ОписаниеТиповЧ); //29 ТЗ.Колонки.Добавить("ВыданоСсудНомер",ОписаниеТиповЧ3); //30 ТЗ.Колонки.Добавить("ОстатокН",ОписаниеТиповЧ); //31 ТЗ.Колонки.Добавить("ОстатокК",ОписаниеТиповЧ); //32 ТЗ.Колонки.Добавить("Возврат",ОписаниеТиповЧ); //33 //создание соединения с помощью ADO Соединение = Новый COMОбъект("ADODB.Connection"); //заполнение текущих настроек подключения ТекСервер = "MY-PK\SQLEXPRESS"; ТекБаза = "store_temp"; //заполнение строки запроса к серверу СтрокаКоннекта ="driver={SQL Server};server="+ТекСервер+";Database="+ТекБаза; Соединение.ConnectionTimeOut = 6000; //время ожидания для коннекта, если коннект больше данной цифры, то все гг, все указывается мс что ли, 6000=10 мин //попытка соединения Попытка Соединение.Open(СтрокаКоннекта); Исключение Сообщить("Невозможно установить соединение с базой данных MS SQL! " + ОписаниеОшибки()+"!!!"); ЗаписатьВФ("Невозможно установить соединение с базой данных MS SQL! "+ ОписаниеОшибки()); Возврат; КонецПопытки; // запрос к объекту ADO //ЗапросАДО = Новый COMОбъект("ADODB.Command"); //Попытка // ЗапросАДО.ActiveConnection = Соединение; //Исключение // Сообщить("Ошибка при инициализации соединения! " + ОписаниеОшибки()); // ЗаписатьВФ("Ошибка при инициализации соединения! " + ОписаниеОшибки()); // Возврат; //КонецПопытки; //запрос на вывод необходимых данных из таблицы //т.к. АДО не понимает тип данных decimal то на стороне сервера преобразуем данные //с помощью CAST(имя_поля AS новый_тип_данных) AS новое_имя_поля СтрокаЗапроса= "select |GUID, |To1C, |filial, |data, |CAST(Pr_Kom_Sr AS varchar(20)) AS Pr_Kom_Sr, |N_Pr_Kom_Sr, |CAST(Pr_Real AS varchar(20)) AS Pr_Real, |N_Pr_Real, |CAST(Pr_Real_Lombard AS varchar(20)) AS Pr_Real_Lombard, |N_Pr_Real_Lombard, |CAST(Pr_Real_Lombard_Percent AS varchar(20)) AS Pr_Real_Lombard_Percent, |N_Pr_Real_Lombard_Percent, |CAST(Pr_hr_kom AS varchar(20)) AS Pr_hr_kom, |CAST(Pr_Cash AS varchar(20)) AS Pr_Cash, |N_Pr_Cash, |CAST(Pr_Credit AS varchar(20)) AS Pr_Credit, |N_Pr_Credit, |CAST(R_Zad_Kom AS varchar(20)) AS R_Zad_Kom, |CAST(R_Skupka AS varchar(20)) AS R_Skupka, |N_R_Skupka, |CAST(R_Cash AS varchar(20)) AS R_Cash, |N_R_Cash, |CAST(R_Credit AS varchar(20)) AS R_Credit, |N_R_Credit, |CAST(R_Credit_Percent AS varchar(20)) AS R_Credit_Percent, |N_R_Credit_Percent, |CAST(R_Lombard AS varchar(20)) AS R_Lombard, |N_R_Lombard, |CAST(BeginCashRegister AS varchar(20)) AS BeginCashRegister, |CAST(EndCashRegister AS varchar(20)) AS EndCashRegister, |CAST(Pr_Total AS varchar(20)) AS Pr_Total |from dbo.CASH_REPORT |where To1C = 1 |order by data asc"; Попытка Выборка=Соединение.Execute(СтрокаЗапроса); Исключение Сообщить ("Ошибка выполнения запроса к БД: "+ОписаниеОшибки()+"!!!"); ЗаписатьВФ("Ошибка выполнения запроса к БД: "+ОписаниеОшибки()); Возврат; КонецПопытки; СчетчикКол = 0; //выборка из результата запроса Если Выборка.EOF()=-1 Тогда Иначе //установка указателя на первую строку Попытка Выборка.MoveFirst(); Исключение Выборка.Close(); Сообщить ("Ошибка установки указателя на первую строку или записей в базе данных до сегодняшнего дня нет или выгружены "+ОписаниеОшибки()); ЗаписатьВФ("Ошибка установки указателя на первую строку или записей в базе данных до сегодняшнего дня нет или выгружены "+ОписаниеОшибки()); Возврат; КонецПопытки; // Заполненяем данными нашу ТЗ из Выборки с SQL Сервера Пока Выборка.EOF()=0 Цикл Поле = Выборка.Fields; Если НайтиТорговуюТочку(Выборка.Fields("filial").Value) = -1 Тогда //установка указателя на следующую строку Попытка Выборка.MoveNext(); Исключение Выборка.Close(); Сообщить ("Ошибка установки указателя на следующее поле: "+ОписаниеОшибки(),"!!!"); ЗаписатьВФ("Ошибка установки указателя на следующее поле: "+ОписаниеОшибки()); Возврат; КонецПопытки; Продолжить; КонецЕсли; стрТЗ = ТЗ.Добавить(); стрТЗ.НомерИзВне = Выборка.Fields("GUID").Value; стрТЗ.КодФилиала = Выборка.Fields("filial").Value; стрТЗ.НазваниеФилиала = НайтиТорговуюТочку(стрТЗ.КодФилиала).Наименование; стрТЗ.ДатаДанных = Выборка.Fields("data").Value; стрТЗ.РеализацияКомиссия = Число(Выборка.Fields("Pr_Kom_Sr").Value); стрТЗ.РеализацияКомиссияНомер = Число(Выборка.Fields("N_Pr_Kom_Sr").Value); стрТЗ.РеализацияСкупка = Число(Выборка.Fields("Pr_Real").Value); стрТЗ.РеализацияСкупкаНомер = Число(Выборка.Fields("N_Pr_Real").Value); стрТЗ.ВозвратСсудыЛомбарду = Число(Выборка.Fields("Pr_Real_Lombard").Value); стрТЗ.ВозвратСсудыЛомбардуНомер = Число(Выборка.Fields("N_Pr_Real_Lombard").Value); стрТЗ.ПроцентыПоЛомбарду = Число(Выборка.Fields("Pr_Real_Lombard_Percent").Value); стрТЗ.ПроцентыПоЛомбардуНомер = Число(Выборка.Fields("N_Pr_Real_Lombard_Percent").Value); стрТЗ.ХранениеКомиссионногоТовара = Число(Выборка.Fields("Pr_hr_kom").Value); стрТЗ.ХранениеКомиссионногоТовараНомер = 0; стрТЗ.ПолученоИзКассыСобственник = Число(Выборка.Fields("Pr_Cash").Value); стрТЗ.ПолученоИзКассыСобственникНомер = Число(Выборка.Fields("N_Pr_Cash").Value);; стрТЗ.ПринятоЗаймов = Число(Выборка.Fields("Pr_Credit").Value); стрТЗ.ПринятоЗаймовНомер = Число(Выборка.Fields("N_Pr_Credit").Value); стрТЗ.ВыплатаЗадолженностиКомитентам = Число(Выборка.Fields("R_Zad_Kom").Value); стрТЗ.ВыплатаЗадолженностиКомитентамНомер = 0; стрТЗ.Скупка = Число(Выборка.Fields("R_Skupka").Value); стрТЗ.СкупкаНомер = Число(Выборка.Fields("N_R_Skupka").Value); стрТЗ.ПереданоВкассуСобственник = Число(Выборка.Fields("R_Cash").Value); стрТЗ.ПереданоВкассуСобственникНомер = Число(Выборка.Fields("N_R_Cash").Value); стрТЗ.ВыданоЗаймов = Число(Выборка.Fields("R_Credit").Value); стрТЗ.ВыданоЗаймовНомер = Число(Выборка.Fields("N_R_Credit").Value); стрТЗ.ВыданоПроцентовПоЗаймам = Число(Выборка.Fields("R_Credit_Percent").Value); стрТЗ.ВыданоПроцентовПоЗаймамНомер = Число(Выборка.Fields("N_R_Credit_Percent").Value); стрТЗ.ВыданоСсуд = Число(Выборка.Fields("R_Lombard").Value); стрТЗ.ВыданоСсудНомер = Число(Выборка.Fields("N_R_Lombard").Value); стрТЗ.ОстатокН = Число(Выборка.Fields("BeginCashRegister").Value); стрТЗ.ОстатокК = Число(Выборка.Fields("EndCashRegister").Value); стрТЗ.Возврат = стрТЗ.ОстатокК - стрТЗ.ОстатокН - Число(Выборка.Fields("Pr_Total").Value); //запрос изменения в таблице cash_report параметра To1C на 1 СтрокаЗапроса1="update dbo.CASH_REPORT set To1C = 0 where GUID = '" + стрТЗ.НомерИзВне+ "'"; //выполнение запроса Попытка Выборка1 = Соединение.Execute(СтрокаЗапроса1); Исключение Сообщить ("Ошибка обновления данных на сервере БД: "+ОписаниеОшибки(),"!!!"); ЗаписатьВФ("Ошибка обновления данных на сервере БД: "+ОписаниеОшибки()); Возврат; КонецПопытки; //установка указателя на следующую строку Попытка Выборка.MoveNext(); Исключение Выборка.Close(); Сообщить ("Ошибка установки указателя на следующее поле: "+ОписаниеОшибки()+"!!!"); ЗаписатьВФ("Ошибка установки указателя на следующее поле: "+ОписаниеОшибки()); Возврат; КонецПопытки; КонецЦикла; КонецЕсли; ТЗ.Свернуть("НомерИзВне,КодФилиала,НазваниеФилиала,ДатаДанных,ОстатокН,ОстатокК,Возврат","РеализацияКомиссия,РеализацияСкупка, |ВозвратСсудыЛомбарду,ПроцентыПоЛомбарду,ХранениеКомиссионногоТовара,ПолученоИзКассыСобственник, |ПринятоЗаймов,ВыплатаЗадолженностиКомитентам,Скупка,ПереданоВкассуСобственник,ВыданоЗаймов,ВыданоПроцентовПоЗаймам, |ВыданоСсуд,РеализацияКомиссияНомер, |РеализацияСкупкаНомер,ВозвратСсудыЛомбардуНомер,ПроцентыПоЛомбардуНомер, |ХранениеКомиссионногоТовараНомер,ПолученоИзКассыСобственникНомер,ПринятоЗаймовНомер, |ВыплатаЗадолженностиКомитентамНомер,СкупкаНомер,ПереданоВкассуСобственникНомер,ВыданоЗаймовНомер, |ВыданоПроцентовПоЗаймамНомер,ВыданоСсудНомер"); //Закрытие выборки Выборка.Close(); //Закрытие соединения Соединение.Close(); Ну дальше собственно и работая с моей ТЗ уже в 1С. |
|||
14
Ёхан Палыч
16.05.12
✎
11:34
|
ок, спасибо, щас посмотрю
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |