Имя: Пароль:
1C
1С v8
Работа с библиотекой NameDecl.dll
0 Aleksey1989
 
01.02.13
18:39
Добрый вечер. Недавно столкнулся с такой интересной ошибкой: использую библиотеку NameDecl.dll (эта библиотека отвечает за склонение ФИО), она у меня загружена в общий макет, имеющий тип "Двоичные данные". Проверил работу конфигурации на нескольких компах - все хорошо, никаких ошибок нет. Стал проверять работу на компе, на котором стоит неруссифицированная Windows 2008R2 - стала появляться вот такая ошибка:

Не удалось загрузить внешнюю компоненту по причине: {Отчет.АктСверкиСПоставщиком.Форма.ФормаОтчета.Форма(556)}: Тип не определен (AddIn.NameDeclension)

Сам код, который использую:

       Попытка
       // Загружаем внешнюю компоненту
       ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСклонения", "NameDecl", ТипВнешнейКомпоненты.COM);
       Объект = Новый("AddIn.NameDeclension");
   Исключение
       Сообщить("Не удалось загрузить внешнюю компоненту по причине: " + ОписаниеОшибки());
   КонецПопытки;
       
   // Получаем результат склонения
   
   РезультатСклонения = Объект.Просклонять(СтрокаСклонения, НомерПадежа) + " ";
   
           
   Возврат РезультатСклонения;
1 DrShad
 
01.02.13
18:41
она у тебя в реестре не прописана
2 МихаилМ
 
01.02.13
18:41
может проверяли на 32 битных
а ошибка на 64 битной.
3 DrShad
 
01.02.13
18:43
(2) а для библиотеки не все ли равно какая ось?
4 Aleksey1989
 
01.02.13
18:45
(1) В реестре она прописана, правда компьютер после этого не перегружал, надо перегружать?
(2) Я проверял и на 32, и на 64 битных ОС.

Кстати, то, что винда не руссифицированная - это не является ошибкой?
5 DrShad
 
01.02.13
18:46
(4) ну конечно или у тебя реестр динамически обновляется?
6 Aleksey1989
 
01.02.13
18:51
(5) Хорошо, сейчас перезагружаю комп, посмотрим, что будет.
Хотя вряд ли это поможет, т.е. регистрировать эту библиотеку в реестри винды не имеет значения: я проверял у себя на локальной машине, до этого я эту библиотеку никогда не регистрировал (да и винду неделю назад поставил) - у меня никаких ошибок не было.
7 loh_pedalny
 
01.02.13
18:51
В случае ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСклонения", "NameDecl", ТипВнешнейКомпоненты.COM);
возвращает Истина или Ложь. Вот возврат и нужно проверять
8 DrShad
 
01.02.13
18:51
(6) ты у себя был админом компа
9 Aleksey1989
 
01.02.13
18:54
Перезагрузил комп - ошибка осталась.

(7) ПодключитьВнешнююКомпоненту возвращает  истину.
10 DrShad
 
01.02.13
18:58
смотри что в реестре прописано, какой progID
11 Aleksey1989
 
01.02.13
19:02
(10) "AddIn.NameDecl.1" - это он и есть? просто не очень разбираюсь в реестре винды.
12 DrShad
 
01.02.13
19:05
".1" обрати внимание
13 DrShad
 
01.02.13
19:06
да и вообщето объект "AddIn.NameDecl"
14 Aleksey1989
 
01.02.13
19:06
(12) И что это значит?
П.с. я по-прежнему в этом плохо разбираюсь :(
15 DrShad
 
01.02.13
19:06
Объект = Новый("AddIn.NameDecl");
16 Aleksey1989
 
01.02.13
19:08
(15) Только что попробовал - та же самая ошибка.
17 DrShad
 
01.02.13
19:09
а случаем ты не на клиенте сидишь, а код на серваке выполняется?
18 Aleksey1989
 
01.02.13
19:12
(17) Код выполняется с директивой компилляции НаСервере, база работает в файловом режиме.
19 DrShad
 
01.02.13
19:16
ну у меня progID = AddIn.NameDecl.1
20 DrShad
 
01.02.13
19:16
Объект = Новый("AddIn.NameDecl.1");

что говорит?
21 DrShad
 
01.02.13
19:19
хотя есть и без ".1"
22 Aleksey1989
 
01.02.13
19:21
(20) То же самое. Еще раз спрошу про "национальность" ОС: то, что она не руссифицированна, а полностью английская (т.е. русский язык в ней вообще не установлен) - может из-за этого быть ошибка?
23 DrShad
 
01.02.13
19:23
да он до языка еще даже не дошел - пишет же тебе русским языком, что не определен такой тип
24 Aleksey1989
 
01.02.13
21:15
Больше ни у кого нет идей по данному вопросу?
25 Aleksey1989
 
02.02.13
09:56
up
Вообще интересует такой вопрос: как узнать, какой тип надо указывать при создании объекта:
Объект = Новый("AddIn.NameDeclension")
Почему именно "AddIn.NameDeclension"?
26 Aleksey1989
 
02.02.13
13:12
УРА!!! Решил проблему. Как решил: скопировал макет зи конфы ЗУП. Компонента, которая находилась в этом макете, имеет тип API, а не COM.