Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 6 7 ... 14 ОтправитьПечать
Очень популярная тема (более 25 ответов) Ошибка при создании объекта из компоненты (число прочтений - 168745 )
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка при создании объекта из компоненты
Ответ #60 - 26. Мая 2006 :: 13:02
Печать  
Остудитесь, джентельмены.
Все все поняли.
Решение нашлось (вроде как еще на итланде).
Незадокументированные методы 1С будут задокументированы разработчиками 1С++.
Возможно в будущем 1С++ избавится от этих проблем навсегда.

Дальнейший флейм в этой ветке буду нещадно отстреливать.
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #61 - 26. Мая 2006 :: 13:05
Печать  
Методы описаны в желто-красных книжках, кто еще их не пропил.

Славко, давай завязывать, я тебе точно говорю, все у тебя будет хорошо.

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

De quelle planète es-tu?
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка при создании объекта из компоненты
Ответ #62 - 26. Мая 2006 :: 13:27
Печать  
kms писал(а) 26. Мая 2006 :: 13:05:
Методы описаны в желто-красных книжках, кто еще их не пропил.

Славко, давай завязывать, я тебе точно говорю, все у тебя будет хорошо.

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

это Вы  на тусовку 3-4 собрались? или просто в Крым? бензин ща 95  - 3.95-4.20 верхняя планка, вернее ближе к ней в Крыму, насчет ГАИ не скажу ниче, у меня машины пока нет, вот тока созрел ее покупать и в раздумьях каку купить, но начну с прав и навыков вождения, ибо оных у меня нет, но думаю по этому поводу луче в курилке поговрить... но мне кажется ничего не изменилось, как ты верно заметил кроме цен...

а описание данных методов да, есть, но не в ЖКК, а в книге под названием "Технология создания внешних компонент", благо она у меня есть в CHM, в бумажняном виде у меня ее нет, т.к. ВК еще не создавал, поэтому не четко и помню, где я про Загрузить то читал...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #63 - 26. Мая 2006 :: 13:38
Печать  
OK, сенкс.

Наверное, правда, надо весь опыт задокументировать в FAQ, глядишь и проблемы решатся.
Тем более, что это реально касается и всех остальных стандартных компонент 1С.
А их Александр явно переделывать не станет  Подмигивание
  

De quelle planète es-tu?
Наверх
 
IP записан
 
elkpro
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 145
Зарегистрирован: 19. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #64 - 26. Мая 2006 :: 13:44
Печать  
Ну вот и мне полезно было узнать, что можно загружать компоненту, через другой метод
ПодключитьВнешнююКомпоненту("Addin.1C++");

Я везде прописал один путь и все вроде пока нормально. Поживем увидим - если будут проблемы, тогда буду по другому решать.
Насколько я понимаю данная проблема с регистрацией будет возникать, если эту же компоненту грузить из нескольких баз - в данном случае конечно поможет ПодключитьВнешнююКомпоненту("Addin.1C++")

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #65 - 26. Мая 2006 :: 13:47
Печать  
elkpro писал(а) 26. Мая 2006 :: 13:44:
Не ожидал, что у других тоже есть проблемы

Улыбка

Позвольте закрыть неделю на позитивной ноте!
  

De quelle planète es-tu?
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #66 - 28. Мая 2006 :: 20:55
Печать  
Хочется отметить, что ЗагрузитьВнешнююКомпоненту и ПодключитьВнешнююКомпоненту в стандартном наборе ЖКК отсутствуют. И описываются лишь в отдельной "Технологии создания внешних компонент". Поэтому давайте не упрекать друг-друга в плохом чтении мануалов.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #67 - 29. Мая 2006 :: 07:51
Печать  
ОК, приведем сюда (раскрасить в ЖКК самостоятельно):

Цитата:
Средства встроенного языка 1С:Предприятия, предназначенные для работы с внешними компонентами.

ЗагрузитьВнешнююКомпоненту

Загружает внешнюю компоненту, создает соответствующие OLE объекты и подключает их к 1С:Предприятию .

Синтаксис:

ЗагрузитьВнешнююКомпоненту ( <ИмяФайлаКомпоненты>)

Англоязычный синоним:

LoadAddIn

Параметры:
ИмяФайлаКомпоненты      

имя файла внешней компоненты.      ИмяФайлаКомпоненты иметь вид  "Имя.Расширение" и не должно содержатьпуть. Файл компоненты ищется последовательно в каталоге пользователя, в каталоге информационной базы, и в каталоге c исполняемым файлом 1С:Предприятия.            

Возвращаемое значение:

0 - при загрузке компоненты произошла ошибка

1 - компонента успешно загружена

Описание:

Внешние компоненты загружаются функцией встроенного языкаЗагрузитьВнешнююКомпоненту. Файл  внешней компоненты должен быть динамически загружаемой библиотекой (например, DLL или OCX), то есть работать как InProc сервер. При загрузке внешней компоненты 1С:Предприятие вызывает функцию, если она экспортирована из внешней компоненты. Это позволяет просто переносить  компоненты между компьютерами без дополнительной регистрации их как OLE серверов. При возникновении ошибок при загрузке 1С:Предприятие выдает информацию об ошибке в окно сообщений.

О создании OLE объекта внешней компоненты при загрузке - см. Разработка внешней компоненты, стр.  * .

ПодключитьВнешнююКомпоненту

Создает OLE объекты внешней компоненты и подключает их к 1С:Предприятию.

Синтаксис:

ПодключитьВнешнююКомпоненту ( <ИмяОбъектаКомпоненты>)

Англоязычный синоним:

AttachAddIn

Параметры:
ИмяОбъектаКомпоненты      

ProgID (Programmatic Id entifier) объекта внешней компоненты. ИмяОбъектаКомпоненты  должно   соответствовать информации, находящейся в регистрационной базе данных системы (Registry).    

Возвращаемое значение:

0 - при подключении компоненты произошла ошибка

1 - компонента успешно подключена

Описание:

Внешние компоненты подключаются функцией встроенного языка ПодключитьВнешнююКомпоненту . Внешняя компонента может быть как динамически загружаемой библиотекой (например, DLL или OCX), так и приложением. При возникновении ошибок при подключении 1С:Предприятие выдает информацию об ошибке в окно сообщений.

ОбработкаВнешнегоСобытия

Предопределенная процедура встроенного языка. Вызывается при возникновении сообщения от внешней компоненты.

Синтаксис:

ОбработкаВнешнегоСобытия( < Источник>, <Событие>, <Данные> )

Англоязычный синоним:

ExternEventProcessing

Параметры:
Источник      

строка с наименованием источника сообщения.
Событие      

строка с наименованием сообщения.
Данные      

строка с параметрами сообщения.

Возвращаемое значение:

отсутствует

Описание:

Процедура ОбработкаВнешнегоСобытия - предопределенная процедура обработки сообщений от внешних компонент.

Процедура может быть описана в любом модуле системы 1С:Предприятие. При получении сообщения будет вызвана процедура ОбработкаВнешнегоСобытия, определенная в модуле активной на этот момент формы. Если в этом модуле процедура ОбработкаВнешнегоСобытия не определена, то будет вызвана процедура ОбработкаВнешнегоСобытия , определенная в глобальном модуле. Если в глобальном модуле процедура ОбработкаВнешнегоСобытия отсутствует, будет выдано сообщение об отсутствии процедуры ОбработкаВнешнегоСобытия . Процедура ОбработкаВнешнегоСобытия в глобальном модуле не ызывается,

если событие обработано в модуле активной формы.

Вызов этой процедуры синхронизирован с обработкой сообщений системой 1С:Предприятие и происходит только при отсутствии других выполняемых системой операций (проведении документов, построении отчетов и т.д.).
  

De quelle planète es-tu?
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #68 - 29. Мая 2006 :: 08:40
Печать  
Ok. Народ, предлагаю потестить.

vkloader (далее ВК) - внешняя компонента для 1С-Предприятия 7.7, которая может
загружаться без ее регистрации в реестре, и загружать другие внешние
компоненты без их регистрации. Предназначена для безпроблемной загрузки
внешних компонент пользователями, не имеющими прав на запись в HKCR ветку
реестра.
  

vkloader.zip ( 21 KB | Загрузки )
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #69 - 29. Мая 2006 :: 09:13
Печать  
Это правда очень и очень круто.
Спасибо.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #70 - 29. Мая 2006 :: 09:30
Печать  
orefkov

1. А почему property pages работают, вроде ты писал, что не должны.
2. РезультатВыполнения не нравится по мелочам.  Типа Если Результат.Успех = 0, то все хорошо. Нелогично как-то.
3. Может, стоит добавить композитный метод Загрузить(ПутьВК), который просто берет и загружает все объекты из компоненты?

Тем более, что КодЗагрузки возвращает следующее:
Цитата:
Код.Результат = "      Загрузчик = СоздатьОбъект("ЗагрузчикВК");      Результат = Загрузчик.ЗагрузитьВК("v7plus.dll", "Addin.V7Mail=faa6ebe0-1069-11d4-a5ff-008048da0cd2            |Addin.V7SysInfo=046d5520-2c8f-11d4-a62a-008048da0cd2            |Addin.V7HttpReader=1e7bc440-1076-11d4-a635-004095"

Т.е. нужен еще ВыполняемыйМодуль для исполнения кода.
Не, надо бы облегчить себе жизнь.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #71 - 29. Мая 2006 :: 09:43
Печать  
По п.3 - достаточно просто перегрузить ЗагрузитьВК().
Если второй параметр не задан - грузить все объекты по указанному в первом параметре пути.

Зачем нужен метод КодЗагрузки()? Что-то я смысл не догоняю.

Если бы не он, можно было бы сделать стандартный механизм возврата значений:
1. Флаг успеха возвращает метод ЗагрузитьВК()
2. Если произошла ошибка, то можно добавить метод Загрузчик.ОписаниеОшибки().

Все равно результат нужен только в течение первых трех строчек после попытки загрузки.
Или ты планируешь расширять его функционал?

Короче я понял, нехрен тебя напрягать.
Надо просто взять и сделать как мне надо.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #72 - 29. Мая 2006 :: 11:27
Печать  
Вот версия с несколькими подправленными неточностями.

Для kms. Разъясняю.
0-успех, не 0 - коды ошибок - такая система принята очень во многих програмных продуктах.

КодЗагрузки - сервисный метод, призванный избавить от необходимости лазить
сначала по дллке с редактором ресурсов, а потом по реестру в поисках CLSID.

ОДИН раз, под правами админа нужная ВК регится, и для нее выполняется КодЗагрузки.
(В любой базе, да хоть во внешнем отчете).
Этот метод находит ProgID объектов этой ВК и соответствующие им CLSID.
Далее делается Сообщить(Рез.Результат).
Потом текст тупо копируестя из окна сообщений в боевую конфу, в ПриНачалеРаботыСистемы.

Все. Юзеры могут юзать ВК без регистрации, так как в данный метод передается
соответствие ProgID и CLSID объектов компоненты (то, которое ранее искалось в реестре).
  

vkloader_001.zip ( 21 KB | Загрузки )
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #73 - 29. Мая 2006 :: 11:42
Печать  
Да, добавлю, как проверять.
Грохните в реестре ветки HKCR\Addin.1C++ и HKCR\Addin.1C++.1
Потом в конфе замените
ЗагрузитьВнешнююКомпоненту("1cpp.dll")
на
ЗагрузитьВнешнююКомпоненту("vkloader.dll");
Загрузчик = СоздатьОбъект("ЗагрузчикВК");
Результат = Загрузчик.ЗагрузитьВК("1cpp.dll", "Addin.1C++=fde5ae76-00b3-4bdb-921b-d5937997b1b7");


Запустите конфу. Удостоверьтесь, что все работает.
Проверьте отсутствие удаленных ранее веток в реестре.

kms, как ты представляешь работу метода ЗагрузитьВК без второго параметра?
Где он CLSID объектов ВК возьмет? Родит что-ли?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка при создании объекта из компоненты
Ответ #74 - 29. Мая 2006 :: 13:29
Печать  
orefkov писал(а) 29. Мая 2006 :: 11:27:
Для kms. Разъясняю.
0-успех, не 0 - коды ошибок - такая система принята очень во многих програмных продуктах.

Даа? Спасибо, что сказал.

Ты не услышал. То, что ты назвал Успех - это не успех, а Статус. Разницу понимаешь?
Успех подразумевает два состояния - true и false.
Вот ты утром выходишь из дома и заводишь машину. Заводится? Успех. Нет? Не успех.
А "троит", "забыл ключи", "у меня нет машины" - это не успех, это статус или состояние.
Ну ладно, это детали.

Цитата:
КодЗагрузки - сервисный метод, призванный избавить от необходимости лазить
сначала по дллке с редактором ресурсов, а потом по реестру в поисках CLSID.

Понятно. Парсить скрипт регистрации не будем, да регистрация может быть и нестандартной.
Хотя для стандартных скриптов - почему бы и нет...
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 6 7 ... 14
ОтправитьПечать