Переключение на Главную Страницу Страницы: 1 [2] 3 4 5 ОтправитьПечать
Очень популярная тема (более 25 ответов) Создание компонент (число прочтений - 27164 )
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание компонент
Ответ #15 - 23. Апреля 2008 :: 10:54
Печать  
DrunkProgrammer писал(а) 23. Апреля 2008 :: 10:22:
Разве нельзя вытянуть класс из 1С?

Что значит "вытянуть"?
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Создание компонент
Ответ #16 - 23. Апреля 2008 :: 12:22
Печать  
DrunkProgrammer писал(а) 23. Апреля 2008 :: 09:44:
Может кто подкинет пример "вытаскивания" таблицы значений, хоты бы из 7.7?


var
  TempTab     : ITab;
..

TempTab   := ITab(IDispatch(obj.CreateObject('ValueTable')));
TempTab.NewColumn(StrSQLODBC);
TempTab.NewLine;
TempTab.SetValue(M,N,ParamList[N-1].RezInt);

Result := TempTab;
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Создание компонент
Ответ #17 - 24. Апреля 2008 :: 02:06
Печать  
В общем тут следует использовать позднее связывание и я пытаюсь выяснить, где мне взять объект, к которому я смогу применить эту технологию.
Например: нужно написать на C# прогу, которая залезет в 1С и создаст там некоторые объекты. Решение:

Код
Выбрать все
Type lateBoundType = Type.GetTypeFromProgID("V77.Application");
object v77 = Activator.CreateInstance(lateBoundType);
object[] arg = new object[3];
arg[0] = lateBoundType.InvokeMember("RMTrade", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v77, null);
arg[1] = @"/D";
arg[2] = "NO_SPLASH_SHOW";

lateBoundType.InvokeMember("Initialize", BindingFlags.GetProperty, null, v77, arg);
 


Далее после запуска 1С создаю объект типа таблица значений:
Код
Выбрать все
arg = new object[1];
arg[0] = "ТаблицаЗначений";
object Object1C = lateBoundType.InvokeMember("CreateObject", BindingFlags.GetProperty, null, v77, arg); 



Ну и дальше работаю с этим объектом.


Так вот в вышеуказанном примере использовался lateBoundType для позднего связывания и проблема в том, что  я не знаю как мне в компоненте получить подобный объект. Пытался использовать параметр из Init(), но то ли это не то что нужно, то ли я что-то неправильно делал.

  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Создание компонент
Ответ #18 - 24. Апреля 2008 :: 03:06
Печать  
Попробуй
Код
Выбрать все
disp1C.GetType().InvokeMember("NewObject"... 

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


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Создание компонент
Ответ #19 - 24. Апреля 2008 :: 03:14
Печать  
Цитата:
Попробуй
Код
Выбрать все
disp1C.GetType().InvokeMember("NewObject"... 


disp1C - это откуда и какого типа?
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Создание компонент
Ответ #20 - 24. Апреля 2008 :: 03:40
Печать  
Это диспетч 1С предприятия, который передается в Init(). Тип object.
  
Наверх
ICQ  
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Создание компонент
Ответ #21 - 24. Апреля 2008 :: 03:42
Печать  
Цитата:
Это диспетч 1С предприятия, который передается в Init(). Тип object.

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


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Создание компонент
Ответ #22 - 24. Апреля 2008 :: 03:56
Печать  
Телепат у меня сегодня выходной Улыбка
Что значит "не помогло"?
  
Наверх
ICQ  
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Создание компонент
Ответ #23 - 24. Апреля 2008 :: 04:02
Печать  
Это значит, когда я пытаюсь создать объект:
Type T = pConnection.GetType();
object[] o = new object[] { "Справочник.Номенклатура" };
T.InvokeMember("СоздатьОбъект", BindingFlags.InvokeMethod, null, null, o);

выходит:  mscorlib: Method 'System.Object.СоздатьОбъект' not found.

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


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Создание компонент
Ответ #24 - 24. Апреля 2008 :: 04:11
Печать  
Да, еще - pConnection - это параметр типа Object, переданный в Init() и я его никак не пытался преобразовывать. Может в этом косяк?
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Создание компонент
Ответ #25 - 24. Апреля 2008 :: 04:24
Печать  
Дык это 8.1 или 7.7? В восьмерке объекты по-другому создаются...
  
Наверх
ICQ  
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Создание компонент
Ответ #26 - 24. Апреля 2008 :: 04:28
Печать  
7.7
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Создание компонент
Ответ #27 - 24. Апреля 2008 :: 04:29
Печать  
Если это 7.7, то чего ты людям мозги пудришь? Посмотри, я тебе выше пример приводил.
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Создание компонент
Ответ #28 - 24. Апреля 2008 :: 04:31
Печать  
sadovnikov писал(а) 24. Апреля 2008 :: 04:29:
Если это 7.7, то чего ты людям мозги пудришь? Посмотри, я тебе выше пример приводил.

Должно быть твой пример на С++, а я на C# пишу.
Как например ты получил TempTab и что значит ITab?
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Создание компонент
Ответ #29 - 24. Апреля 2008 :: 04:33
Печать  
DrunkProgrammer писал(а) 24. Апреля 2008 :: 04:31:
Должно быть твой пример на С++, а я на C# пишу.


Это развод? Программист не может отличтить дельфей от С++? Не верю.

DrunkProgrammer писал(а) 24. Апреля 2008 :: 04:31:
Как например ты получил TempTab?


Издеваешься?
var
  TempTab     : ITab;
..

TempTab   := ITab(IDispatch(obj.CreateObject('ValueTable')));
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 5
ОтправитьПечать