Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) ЗначениеВСтрокуБД для "чужой базы" (число прочтений - 5242 )
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
ЗначениеВСтрокуБД для "чужой базы"
06. Октября 2006 :: 01:32
Печать  
Код
Выбрать все
МетаИнфоОЛЕ=СоздатьОбъект("MetaDataWork");
МетаИнфоОЛЕ.ПрисоединитьМД(ПутьБД+"1cv7.md");

клОЛЕ=СоздатьОбъект("V77.Application");
клОЛЕ.Initialize(клОЛЕ.RMTrade,"/D"+ПутьБД+" /NАдминистратор /P??????","NO_SPLASH_SHOW");
Если ПопыткаЗапуска=0 Тогда
  ******
Конецесли;

П_ОЛЕ=клОЛЕ.Enum.ПолучитьАтрибут(IdS);
ПЗ_ОЛЕ=П_ОЛЕ.ЗначениеПоИдентификатору(ИдЗначПеречисления);
IdS4OLE=МетаИнфоОЛЕ.ЗначениеВСтрокуБД(ПЗ_ОЛЕ);
 



В IdS4OLE - пусто. Так и должно быть?  Нерешительный Злой
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: ЗначениеВСтрокуБД для "чужой базы"
Ответ #1 - 06. Октября 2006 :: 01:35
Печать  
Небольшое дополнение: ПЗ_ОЛЕ проверял, там нужное мне значение из ОЛЕ-базы
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: ЗначениеВСтрокуБД для "чужой базы"
Ответ #2 - 06. Октября 2006 :: 01:42
Печать  
Код
Выбрать все
ПЗ_ОЛЕ=клОЛЕ.EvalExpr("Перечисление."+IdS+"."+ИдЗначПеречисления);
IdS4OLE=МетаИнфоОЛЕ.ЗначениеВСтрокуБД(ПЗ_ОЛЕ);
 


тоже самое
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: ЗначениеВСтрокуБД для "чужой базы"
Ответ #3 - 06. Октября 2006 :: 01:56
Печать  
Будет ли правильно вот так:
Код
Выбрать все
ечисления));
Поз=Найти(Стр," ");
IdS4OLE=Прав(клОЛЕ._IdToStr(Число(СокрЛП(Сред(Стр,Поз,10)))),9);
 


Единственно, что меня смещает - возращается 6 символов. Оно, понятно, что скорее всего 3 посл. символа будут пробелы, но... всё таки, так будет правильно?
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: ЗначениеВСтрокуБД для "чужой базы"
Ответ #4 - 06. Октября 2006 :: 02:08
Печать  
И ещё такой вопрос: индификатор значения перечисления уникальный для всех перечислений или только внутри вида перечисления?
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ЗначениеВСтрокуБД для "чужой базы"
Ответ #5 - 06. Октября 2006 :: 02:12
Печать  
раз уж ты создал ОЛЕ подключение к базе 1с, то и Метадату в нем создавай...
Код
Выбрать все
клОЛЕ=СоздатьОбъект("V77.Application");
клОЛЕ.Initialize(клОЛЕ.RMTrade,"/D"+ПутьБД+" /NАдминистратор /P??????","NO_SPLASH_SHOW");
Если ПопыткаЗапуска=0 Тогда
  ******
Конецесли;

МетаИнфоОЛЕ=клОЛЕ.CreateObject("MetaDataWork");
//МетаИнфоОЛЕ.ПрисоединитьМД(ПутьБД+"1cv7.md");

П_ОЛЕ=клОЛЕ.Enum.ПолучитьАтрибут(IdS);
ПЗ_ОЛЕ=П_ОЛЕ.ЗначениеПоИдентификатору(ИдЗначПеречисления);
IdS4OLE=МетаИнфоОЛЕ.ЗначениеВСтрокуБД(ПЗ_ОЛЕ); 

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



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: ЗначениеВСтрокуБД для "чужой базы"
Ответ #6 - 06. Октября 2006 :: 02:18
Печать  
Цитата:
МетаИнфоОЛЕ=клОЛЕ.CreateObject("MetaDataWork");

Это всё, конечно, замечательно, НО! В "той" базе нет класса MetaDataWork по той простой причине, что не подгружена 1спп.длл
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ЗначениеВСтрокуБД для "чужой базы"
Ответ #7 - 06. Октября 2006 :: 02:36
Печать  
ну тады - извините Озадачен
ведь переменная ПЗ_ОЛЕ содержит значение OLE, т.е. его в текущей базе не увидеть (по моему)
  
Наверх
 
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: ЗначениеВСтрокуБД для "чужой базы"
Ответ #8 - 06. Октября 2006 :: 02:39
Печать  
DionX писал(а) 06. Октября 2006 :: 01:56:
Будет ли правильно вот так:
Код
Выбрать все
ечисления));
Поз=Найти(Стр," ");
IdS4OLE=Прав(клОЛЕ._IdToStr(Число(СокрЛП(Сред(Стр,Поз,10)))),9);
 


Единственно, что меня смещает - возращается 6 символов. Оно, понятно, что скорее всего 3 посл. символа будут пробелы, но... всё таки, так будет правильно?


Значит так?
И:
Цитата:
индификатор значения перечисления уникальный для всех перечислений или только внутри вида перечисления?
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: ЗначениеВСтрокуБД для "чужой базы"
Ответ #9 - 06. Октября 2006 :: 03:10
Печать  
хотя, наверное, можно попробовать что-нить вроде:
Код
Выбрать все
Если клОЛЕ.ExecuteBath("ЗагрузитьВнешнююКомпонету(""1CPP.DLL"")")=-1 Тогда
    МетаИнфоОЛЕ=клОЛЕ.CreateObject("MetaDataWork");
КонецЕсли;
 


Хотя и "мой" метод действенный (проверено)  Класс
  
Наверх
ICQ  
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ЗначениеВСтрокуБД для "чужой базы"
Ответ #10 - 06. Октября 2006 :: 08:35
Печать  
Можно загрузить 1С++ в базе-ОЛЕ и из своего каталога, указав полный путь
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать