Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Константа.ИННОрганизации (число прочтений - 2800 )
bobast
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 22. Февраля 2009
Константа.ИННОрганизации
24. Февраля 2009 :: 06:22
Печать  
Добрый день. Существует некий само-писный плагин к 1с 7.7. Существенное отличие от внешней компоненты в том, что отсутствует IInitDone. Плагин работает со справочником товаров:

typedef CBLContext*( *pfnCreate )( char const* );
HMODULE hbkend = GetModuleHandle (__T("BKEND.DLL"));
pfnCreate pCreate = ( pfnCreate )GetProcAddress( hbkend, "?CreateInstance@CBLContext@@SAPAV1@PBD@Z" );

this ->m_pContext = pCreate( "Справочник.Номенклатура" );
FreeLibrary( hbkend );      

, раскручивая дальше CBLContext.
Сейчас встала задача получить Константа.ИННОрганизации.
Естественно, приведенный выше путь не работает.
Подскажите, плз, в какую сторону копать?

PS. Умеем дотягиваться практически до любых классов 1С.
  
Наверх
 
IP записан
 
bobast
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 22. Февраля 2009
Re: Константа.ИННОрганизации
Ответ #1 - 25. Февраля 2009 :: 08:50
Печать  
Всем спасибо.
Задача решилась.
Вопрос снимаем.
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Константа.ИННОрганизации
Ответ #2 - 25. Февраля 2009 :: 11:01
Печать  
Можно узнать как решилась?
  
Наверх
 
IP записан
 
bobast
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 22. Февраля 2009
Re: Константа.ИННОрганизации
Ответ #3 - 25. Февраля 2009 :: 18:18
Печать  
Конечно

     else if( !::pINN )
     {
           typedef unsigned long( *pfnGetFirstLoadedContextID )( void );
           typedef CBLContext*( *pfnGetLoadedContext )( unsigned long );
           typedef unsigned long( *pfnGetNextLoadedContextID )( unsigned long );


           HMODULE hbkend = GetModuleHandle (__T("BKEND.DLL"));

           pfnGetFirstLoadedContextID GetFirstLoadedContextID =
                 ( pfnGetFirstLoadedContextID )GetProcAddress( hbkend
                 , "?GetFirstLoadedContextID@CBLContext@@SAKXZ"
                 );

           pfnGetLoadedContext GetLoadedContext =
                 ( pfnGetLoadedContext )GetProcAddress( hbkend
                 , "?GetLoadedContext@CBLContext@@SAPAV1@K@Z"
                 );

           pfnGetNextLoadedContextID GetNextLoadedContextID =
                 ( pfnGetNextLoadedContextID )GetProcAddress( hbkend
                 , "?GetNextLoadedContextID@CBLContext@@SAKK@Z"
                 );

           FreeLibrary( hbkend );

           for      ( unsigned long l = GetFirstLoadedContextID( )
                 ; l > 0 && !pINN
                 ; l = GetNextLoadedContextID( l )
                 )
           {
                 CBLContext* pContext = GetLoadedContext( l );

                 int iConst;
//                  int iINN;
                 int hr;

                 iConst = pContext ->FindProp( "Константа" );
                 if( iConst < 0 ){ continue; }

                 CzValue zConst;
                 CzValue zINN;

                 hr = pContext ->GetPropVal( iConst, *zConst .m_pValue );
                 if( hr < 0 ){ continue; }

                 CBLContext* pConst = zConst .m_pValue ->m_Context;
                 hr = pConst ->GetPropVal( 5, *zINN .m_pValue );
                 if( hr < 0 ){ continue; }

                 ::pINN = zINN .m_pValue ->m_String;
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Константа.ИННОрганизации
Ответ #4 - 25. Февраля 2009 :: 18:42
Печать  
Спасибо  Улыбка
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Константа.ИННОрганизации
Ответ #5 - 27. Февраля 2009 :: 09:57
Печать  
Не ожидал такое увидеть в теме ИннОрганизации  Улыбка

А в практическом смысле что это дает в результате?
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Константа.ИННОрганизации
Ответ #6 - 27. Февраля 2009 :: 10:51
Печать  
kiruha писал(а) 27. Февраля 2009 :: 09:57:
Не ожидал такое увидеть в теме ИннОрганизации  Улыбка

А в практическом смысле что это дает в результате?


Обращение из плагина(Обычной dll не ВК) к методам 1с 7.7,
это используется например в AddGlobMD  Подмигивание

То есть для любых случаев, когда невозможно реализовать общение программы 1С и стороннего софта через ВК Улыбка

+ скорость (выполнения напрямую или через COM)
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать