Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Как из 8.2 сделать прямой запрос к 7.7? (число прочтений - 10652 )
Лунтик
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 11. Июля 2010
Как из 8.2 сделать прямой запрос к 7.7?
15. Июня 2011 :: 06:36
Печать  
Для чтения 7.7 из 7.7 использовался 1cpp+VFPOLEDB. А из восьмерки как ?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #1 - 15. Июня 2011 :: 08:09
Печать  
Вариантов много, например "ADODB.Connection", но у себя я всегда обращаюсь из семерки в восьмерку...
  
Наверх
 
IP записан
 
Лунтик
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 11. Июля 2010
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #2 - 15. Июня 2011 :: 08:35
Печать  
А как читать MD. Или каждый раз построчно анализировать DD?
  
Наверх
 
IP записан
 
Maxo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 28. Декабря 2006
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #3 - 15. Июня 2011 :: 08:46
Печать  
Есть команда в 1срр : ПрисоединитьМД("Путь до 1cv7.md")
  
Наверх
 
IP записан
 
Лунтик
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 11. Июля 2010
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #4 - 15. Июня 2011 :: 08:53
Печать  
1сpp можно как-то воткнуть в восьмерку?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #5 - 16. Июня 2011 :: 02:10
Печать  
а нафик тебе ДД и МД? типизацию в восьмерке семерочными типами ты все равно никак не получишь, ибо там нет таких ... если нужно обращаться к внутренностям семерки, то подойдет только OLE, но лучше читать только данные...
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #6 - 16. Июня 2011 :: 03:22
Печать  
Я бы делал так:
Создал бы пустую базу 7.7 со спец конфой.
К этой базе коннектишься через ОЛЕ, в ней загружается 1С++, цепляешься к МДшнику нужной базы клюшек, транслируешь запрос в снеговика, выполняешь запрос в снеговике.

Как более продвинутый вариант - не просто спец-конфу, а какие-то параметры вынести в справочники базы. Но абстрактной структуры метаданных я не вижу - разве что, на конкретной задаче что-нить придумается.
А так - в спецконфе только глобальный модуль, который загружает необходимые ДЛЛки в ПриНачалеРаботыСистемы, да имеет парочку экспортных методов (ПрисоединитьМД(), РаспарситьМетаЗапрос(),...).


Еще более брутальный вариант:
создаешь ОЛЕ77 = Новый(ОЛЕ объект 7.7 нужной базы).
Далее, делаешь так:
ОЛЕ77.ЗагрузитьВнешнююКомпоненту("1с++.длл");   //вот тут не 100% уверен. Но должно сработать, кажется.
ОЛЕ77.глРасшифровка = ОЛЕ77.СоздатьОбъект("ОДБЦРекордСет");
ТекстЗапроса = ОЛЕ77.глРасшифровка.ОбрМетаСКЛ(ТекстМетаЗапроса);

Скорее всего, даже не обязательно ссылку на ОДБЦРекордСет хранить через ОЛЕ77.глРасшифровка, достаточно просто
МетаПарсер = ОЛЕ77.СоздатьОбъект("ОДБЦРекордСет");
ТекстЗапроса = МетаПарсер.ОбрМетаСКЛ(ТекстМетаЗапроса);
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #7 - 16. Июня 2011 :: 03:25
Печать  
Ну и, надеюсь, есть понимание того, что объекты базы клюшек тебе в снеговике нафиг не сдались?
Т.е. даже если ты их и развернешь в объекты (а сделать это можно только развернув их в ОЛЕ-объекты, опять же - посредством подключенных через ОЛЕ клюшек) - все-равно ты с ними толком ничего не сможешь сделать.
Так что, проще сразу собирать данные до конкретных полей.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #8 - 16. Июня 2011 :: 04:37
Печать  
  
Наверх
 
IP записан
 
Лунтик
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 11. Июля 2010
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #9 - 16. Июня 2011 :: 08:08
Печать  
Спасибо, то что надо! Если бы еще пару слов насчет стабильности...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #10 - 16. Июня 2011 :: 08:25
Печать  
? какая стабильность тебя интересует ?
  
Наверх
 
IP записан
 
Лунтик
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 11. Июля 2010
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #11 - 16. Июня 2011 :: 09:02
Печать  
Правда, что ADODB.Connection может оторваться в самый неожиданные момент? http://www.kb.mista.ru/article.php?id=454)

И ОЛЕ, наверное, не вечное.
Или их каждый раз нужно пересоздавать?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #12 - 16. Июня 2011 :: 09:11
Печать  
Врят ли, запросов "на полчаса не имею", поэтому таких проблем не было.
А вот оле страдает 2-х минутным таймаутом..
  
Наверх
 
IP записан
 
Лунтик
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 11. Июля 2010
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #13 - 16. Июня 2011 :: 09:18
Печать  
Таймаут - имеется ввиду, что к нему две минуты не обращаются или то, что обработка в оле длительностью более двух минут тоже приведет к обрыву?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как из 8.2 сделать прямой запрос к 7.7?
Ответ #14 - 16. Июня 2011 :: 10:00
Печать  
оле да, после 2-х минут будет таймаут и всплывёт модальное окошко, что база не отвечает и надо бы нажать на кнопку продолжить или отключится..
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать