Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) подключение к базе 1С (число прочтений - 4254 )
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
подключение к базе 1С
02. Апреля 2008 :: 10:58
Печать  
сделал на дельфи эктивикс компонент (грид, одбс коннект к базе, одбс рекордсет). засунул его в форму 1с (через контейнер из 1с++). все отлично работает. потом захотелось получить хэндл коннекта 1с и использовать его. для этого сделал библиотеку на с++, в которой всего 1 функция - берет хэндл коннекта 1с (как это реализовано в 1с++, подсмотрел) и возвращает его как целое число. эту функцию подгружаю в дельфийском компоненте, получаю хэндл и пытаюсь его использовать при формировании запроса к базе. так вот выдает ошибку, что хэндл невалидный. сам идентификатор совпадает с тем, что использует 1с++. получается мой эктивикс компонент работает в другом "адресном пространстве" (не знаю как правильно сказать)? вопрос такой - это можно обойти или не реально? как заставить мой рекорсет получать данные по коннекту 1с, чтобы не создавать дополнительное подключение к базе.
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: подключение к базе 1С
Ответ #1 - 02. Апреля 2008 :: 11:19
Печать  
1. Для чего делался грид? Чего он умеет вкусного?
2. Зачем отдельная библиотека? Почему сразу в дельфях хэндл не получаешь?

Код
Выбрать все
//*****************************************************************
function GetDefault(): Integer;   stdcall; external 'BkEnd.dll' name '?GetDefault@CDataBase7@@SAPAV1@XZ'
//*****************************************************************


  //Получим хэндл 1С-ки
  hdbc1:=dword(Ptr(dword(Ptr(GetDefault()+$20)^)+$4c)^);
  //Получим хэндл для запроса - hstmt1
  Rez:=SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, hstmt1);
  if Rez<>SQL_SUCCESS then
    begin
	//Если что-то не получилось, вернем '##Ошибка##'
	TZInSQL:='##Ошибка##';
	exit;
    end;

 

  
Наверх
 
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: подключение к базе 1С
Ответ #2 - 02. Апреля 2008 :: 11:32
Печать  
вот спасибо!!! я парюсь уже 2 дня Улыбка:)Улыбка поставил студию, рылся в исходниках 1с++, делал библиотеку...а тут раз и одной функцией...спасибо!

оказывается моя функция выдает всетаки не то число Печаль непонятно... надо будет посмотреть еще

а грид - просто грид с возможностью поиска, фильтрации, установка порядка колонок, ширины...просто чтобы был удобный интерфейс для отчетов , да и просто интересно было. вообще копаю в сторону табличного поля, но до конца еще не разобрался с ним...

еще есть сводная таблица...но это уже сильно дальше Улыбка
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: подключение к базе 1С
Ответ #3 - 02. Апреля 2008 :: 11:37
Печать  
spenov писал(а) 02. Апреля 2008 :: 11:32:
а грид - просто грид с возможностью поиска, фильтрации, установка порядка колонок, ширины...просто чтобы был удобный интерфейс для отчетов , да и просто интересно было. вообще копаю в сторону табличного поля, но до конца еще не разобрался с ним...

еще есть сводная таблица...но это уже сильно дальше Улыбка


А чем табличное поле не нравится?
  
Наверх
 
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: подключение к базе 1С
Ответ #4 - 02. Апреля 2008 :: 11:38
Печать  
так яже сказал что пока разбираюсь с табличным полем Улыбка а грид уже разобран, работает, и наращивать свой функционал можно Улыбка

я использовал такую конструкцию для получения хэндла:
(long(pDataBase7->CanBeCommited())+0x4c)

почему то число выдает другое, но 1с++ то работает на нем. непонятно...
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: подключение к базе 1С
Ответ #5 - 02. Апреля 2008 :: 11:43
Печать  
to spenov
Лучше все-таки разберись с ТабличнымПолем, не пожалеешь Улыбка
  
Наверх
ICQ  
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: подключение к базе 1С
Ответ #6 - 02. Апреля 2008 :: 11:48
Печать  
я догадываюсь, уже разбираюсь во всю. мне единственное что не нравится - если поставщик данных одбс, то данные получаются не разом, а по кусочкам (по количеству видимых строк). понятно зачем это надо (для автообновления), но хотелосьбы и режим простого запроса чтобы был. это вроде как обходится через получение данных в таюлицу значений. но длинновато как то. почему то  в инете нет комплексных примеров использования этой штуки. будем дальше копать Улыбка
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: подключение к базе 1С
Ответ #7 - 02. Апреля 2008 :: 11:51
Печать  
spenov писал(а) 02. Апреля 2008 :: 11:48:
мне единственное что не нравится - если поставщик данных одбс, то данные получаются не разом, а по кусочкам (по количеству видимых строк). понятно зачем это надо (для автообновления), но хотелосьбы и режим простого запроса чтобы был.


Люди столько сил потратили, чтобы оно так работало, а ты предлагаешь это убрать и, соответствено весьма ощутимо понизить быстродействие.
  
Наверх
 
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: подключение к базе 1С
Ответ #8 - 02. Апреля 2008 :: 12:03
Печать  
я не предлагаю убрать, я предлагаю сделать возможность выбора Улыбка потому как у меня и так с быстродействием нормал. а есть отчеты, которые не реально заставить так работать. использовать ТЗ - это в данном случае выходит лишнее промежуточное звено, не красиво Улыбка но у каждого свое мнение о красоте. с тех пор как я открыл для себя 1с++, работа стала нормальной а не мучением Улыбка до этого я совсем не любил 1ц Улыбка
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: подключение к базе 1С
Ответ #9 - 02. Апреля 2008 :: 12:04
Печать  
sadovnikov писал(а) 02. Апреля 2008 :: 11:51:
spenov писал(а) 02. Апреля 2008 :: 11:48:
мне единственное что не нравится - если поставщик данных одбс, то данные получаются не разом, а по кусочкам (по количеству видимых строк). понятно зачем это надо (для автообновления), но хотелосьбы и режим простого запроса чтобы был.


Люди столько сил потратили, чтобы оно так работало, а ты предлагаешь это убрать и, соответствено весьма ощутимо понизить быстродействие.

+1
ВЕСЬМА понизить! Улыбка
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: подключение к базе 1С
Ответ #10 - 02. Апреля 2008 :: 12:07
Печать  
Цитата:
я не предлагаю убрать, я предлагаю сделать возможность выбора  потому как у меня и так с быстродействием нормал

А ты попробуй запросить таблицы с многими миллионами записей и тогда поговорим о быстродействии Очень довольный
  
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: подключение к базе 1С
Ответ #11 - 02. Апреля 2008 :: 12:09
Печать  
Цитата:
А ты попробуй запросить таблицы с многими миллионами записей и тогда поговорим о быстродействии Очень довольный

ты хочешь рассказать человеку о возвращении ТП только набора записей для отображения на экране Подмигивание
  
Наверх
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: подключение к базе 1С
Ответ #12 - 02. Апреля 2008 :: 12:19
Печать  
spenov писал(а) 02. Апреля 2008 :: 12:03:
я не предлагаю убрать, я предлагаю сделать возможность выбора Улыбка потому как у меня и так с быстродействием нормал. а есть отчеты, которые не реально заставить так работать. использовать ТЗ - это в данном случае выходит лишнее промежуточное звено, не красиво Улыбка но у каждого свое мнение о красоте. с тех пор как я открыл для себя 1с++, работа стала нормальной а не мучением Улыбка до этого я совсем не любил 1ц Улыбка


Предположим что с быстродействием все ОК.
Как правило у каждого пользователя открыто несколько журналов и форм списков (ввиде табл полей). И каждые 20 сек каждый журнал каждого пользователя качает по таблице - это сильно ...
И не нужно миллиона записей.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: подключение к базе 1С
Ответ #13 - 02. Апреля 2008 :: 12:22
Печать  
Ну если человек хочет сразу всё, то пусть использует поставщика ТЗ, которая предварительно заполнилась нужным ему запросом.  Подмигивание
  
Наверх
 
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: подключение к базе 1С
Ответ #14 - 02. Апреля 2008 :: 12:31
Печать  
зачем накинулись? я всеголишь сказал что былобы разумно сделать 2 режима - как есть и простой Улыбка случаи бывают разные. тем более что простой режим не требует никаких усилий, надо только сделать возможность выбора. чтобы не пользоваться промежуточным звеном в виде таблицы значений. но вобщем то и так очень все не плохо.


лучше бы сказали почему практически нет комплексных примеров по использованию табличного поля. ведь наверняка у многих она плотно используется. а с нуля разбираться в этом достаточно хлопотно, по крупицам сижу собираю Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать