Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Прямые запросы 1С8 (число прочтений - 5667 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Прямые запросы 1С8
09. Марта 2011 :: 06:46
Печать  
Интересует возможность сабжа с целью реализации полноценного обмена между разными конфамии платформами 1С.
Dmitry The Wing писал(а) 09. Марта 2011 :: 04:54:
Есть более новая информация по теме?
Актуальность темы задает еще и необходимость отвязаться от конкретной БД (MSSQL vs PostgreSQL) и возможность обращения в БД восьмерки из семерки - для обмена: на чтение к документам и регистрам и на запись к не1С-им таблицам той же БД.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Прямые запросы 1С8
Ответ #1 - 14. Марта 2011 :: 05:21
Печать  
Хотелось бы получить остатки прямым запросом (из семерки). Помогите.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Прямые запросы 1С8
Ответ #2 - 14. Марта 2011 :: 13:09
Печать  
  

1&&2&&3
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Прямые запросы 1С8
Ответ #3 - 15. Марта 2011 :: 02:35
Печать  
trad писал(а) 14. Марта 2011 :: 13:09:

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

Суть моего вопроса не в способе ускорения получения данных, а в формировании самого запроса, т.к. информации по этой теме найти не смог...

P.S.: в описании ВК не нашел ничего о возможности работы с PostgreSQL оно работает с уже полученными из БД данными, а значит, - вообще не по теме вопроса...
« Последняя редакция: 15. Марта 2011 :: 07:19 - Dmitry The Wing »  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
1С8. Как определить имя БД PostgreSQL?
Ответ #4 - 01. Июня 2011 :: 07:55
Печать  
Как определить имя БД PostgreSQL?

нашел ... жутко извратный код, который это делает ... приведу в человеческий вид и выложу, вдруг еще кому потребуется...
  
Наверх
 
IP записан
 
ndacoder
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 15. Января 2011
Re: Прямые запросы 1С8
Ответ #5 - 02. Июня 2011 :: 06:22
Печать  
да поделись Улыбка и стоку соединения для него Улыбка
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Получение параметров БД PostgreSQL
Ответ #6 - 03. Июня 2011 :: 02:13
Печать  
Строка соединения зависит от драйвера, т.е. лучше всего будет почитать доку по нему.
А вот довольно извратный способ получить параметры БД
Код
Выбрать все
Процедура ЗапросПараметровИБ(ИмяКластера, ИмяИБ, СерверИБ, ИмяСервераИБ, СерверБД, ИмяБД)
	СтрокаСоединенияИнформационнойБазы = СтрокаСоединенияИнформационнойБазы();
	ПозицияРазделителя = Найти(СтрокаСоединенияИнформационнойБазы, ";");
	ИмяКластера = Сред(СтрокаСоединенияИнформационнойБазы, 7, ПозицияРазделителя - 8);
	ИмяИБ = Сред(СтрокаСоединенияИнформационнойБазы, ПозицияРазделителя + 5, СтрДлина(СтрокаСоединенияИнформационнойБазы) - ПозицияРазделителя - 5);
	ИмяИБ = СтрЗаменить(ИмяИБ, """", "");

	Соединитель = Новый COMОбъект("V82.COMConnector");
	АгентСервера = Соединитель.ConnectAgent(ИмяКластера);  
	КластерыСерверов = АгентСервера.GetClusters().Выгрузить();
	ИмяСервераИБВРег = ВРег(ИмяКластера);
	Для Каждого Кластер Из КластерыСерверов Цикл
		Если ВРег(Кластер.HostName) = ИмяСервераИБВРег Тогда
			СерверИнформационнойБазы = Кластер;
			СерверИБ = СерверИнформационнойБазы.HostName;
			ИмяСервераИБ = СерверИнформационнойБазы.Name;
			Прервать;
		КонецЕсли;
	КонецЦикла;

	АдминистраторКластера = "";
	ПарольАдминистратораКластера = "";
	Пользователь = ...;
	ПарольПользователя = ...;
	АгентСервера.Authenticate(СерверИнформационнойБазы, АдминистраторКластера, ПарольАдминистратораКластера);

	ПроцессыCOM = АгентСервера.GetWorkingProcesses(СерверИнформационнойБазы);
	РабочиеПроцессы = ПроцессыCOM.Выгрузить();

	РабочийПроцесс = РабочиеПроцессы[0];
	//СписокСоединений = РабочиеПроцессы;
	СоединениеСРабочимПроцессом = Соединитель.ConnectWorkingProcess(РабочийПроцесс.HostName + ":" + Формат(РабочийПроцесс.MainPort, "ЧГ="));

	СоединениеСРабочимПроцессом.AddAuthentication(Пользователь, ПарольПользователя);

	// Получение списка информационных баз
	ИнформационныеБазы = СоединениеСРабочимПроцессом.GetInfoBases().Выгрузить();

	Для Каждого ИБ Из ИнформационныеБазы Цикл
		// Если информационная база найдена
		Если ВРег(ИБ.Name) = ВРег(ИмяИБ) Тогда
			// Запомнить информационную базу и прекратить поиск
			ИмяБД = ИБ.DBName;
			СерверБД = ИБ.DBServerName;
			//ИБ.DBUser
			Прервать;              
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры	//ЗапросПараметровИБ 


Основное неудобство в том, что в коде надо явно указать пользователя и его пароль, имеющего админские права. У себя для этой цели я завел роль, у которой есть ТОЛЬКО админское право. это дыра, но о ней надо знать ... этот юзер отсутствует в списке подстановки и имеет многостраничный пароль.
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямые запросы 1С8
Ответ #7 - 11. Июня 2011 :: 20:27
Печать  
trad писал(а) 14. Марта 2011 :: 13:09:

игры с огнем? Улыбка У разработчика хорошая фантазия Улыбка
  
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямые запросы 1С8
Ответ #8 - 14. Июня 2011 :: 11:22
Печать  
trdm писал(а) 11. Июня 2011 :: 20:27:
trad писал(а) 14. Марта 2011 :: 13:09:

игры с огнем? Улыбка У разработчика хорошая фантазия Улыбка

Да, ДмитрО хорошее название придумал Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать