Имя: Пароль:
1C
 
Помогите с Padeg.Declension не склоняет
0 Sova112
 
26.01.17
16:02
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(121)}: Ошибка при вызове конструктора (COMОбъект)
    Склонение = НОвый COMОбъект("Padeg.Declension");
по причине:
Недопустимая строка с указанием класса

ЧТо сделать в этому случае?)
1 TolikoSprosit
 
26.01.17
16:39
Вот тебе королевская функция склонения(также склоняет професии):

Функция Склонение(ЭтоФио,Знач Текст,Падеж,Пол = 0)Экспорт
    
    Результат = ПолучитьРезультатИзРегистра(Текст,Падеж,Пол);
    Если НЕ ПустаяСтрока(Результат) Тогда
        Возврат Результат;
    КонецЕсли;
    
    //Склонение ФИО
    Если ЭтоФио Тогда
        

        Попытка
            Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСклонения","NameDecl",ТипВнешнейКомпоненты.Native)ТОгда
                Объект = Новый("AddIn.NameDecl.CNameDecl");                
                Результат = Объект.Просклонять(Текст,Падеж,Пол);
            КонецЕсли;
        Исключение
            Сообщить("Не удалось загрузить внешнюю компаненту по причине: "+ОписаниеОшибки());
        КонецПопытки;     
        
    //Склонение должностей    
    Иначе         
        СоответствиеПадежей = Новый Соответствие;
        СоответствиеПадежей.Вставить(1,"И");
        СоответствиеПадежей.Вставить(2,"Р");
        СоответствиеПадежей.Вставить(3,"Д");
        СоответствиеПадежей.Вставить(4,"В");
        СоответствиеПадежей.Вставить(5,"Т");
        СоответствиеПадежей.Вставить(6,"П_о");
        
        ОпределениеМорфер=Новый WSОпределения("http://api.morpher.ru/WebService.asmx?WSDL";);
        Морфер=Новый WSПрокси(ОпределениеМорфер,"http://morpher.ru/","WebService","WebServiceSoap";);
        
        РезультатМорфер = Морфер.GetXml(Текст);
        ПадежМорфер = СоответствиеПадежей.Получить(Падеж);
        Если ПадежМорфер<>Неопределено Тогда
            Результат = РезультатМорфер[ПадежМорфер];    
        КонецЕсли;        
    
    КонецЕсли;
    
    Если ПустаяСтрока(Результат) Тогда
        Сообщить("При склонении <" + Текст + "> произошла ошибка.");
    Иначе
        ЗаписатьРезультатВРегистр(Текст,Падеж,Пол,Результат);
        Возврат Результат;
    КонецЕсли;    

КонецФункции // ()

NameDecl - качается у 1с, в макет пихается архив(!) и регистрировать Dll не надо.
2 Fish
 
26.01.17
16:42
(1) Есть гораздо лучшая функция вообще без внешних компонент и в три строчки кода.
3 Fish
 
26.01.17
16:43
4 TolikoSprosit
 
26.01.17
16:44
(3) Пользуйся ей, я же не заставляю)
5 Fish
 
26.01.17
16:46
(4) Ну так я и не разрешения спрашиваю, а просто говорю, что имеется функция, работающая корректнее, и без всякой лишней лабуды.
6 Sova112
 
26.01.17
16:47
вот нашла, (2). Спасибо
7 Sova112
 
26.01.17
16:47
8 TolikoSprosit
 
26.01.17
16:53
(5) Вы сами ее использовали? Были проблемы? Почему 1с ее не использует?)
9 Fish
 
26.01.17
17:00
(8) Я использую только её, т.к. с NameDecl натыкался и на ошибочное склонение, да и на другие косяки. Ну и тупо удобнее сразу получать сокращения типа Фамилия И.О. или И.О. Фамилия и т.п. в любом падеже. А ещё и должности склоняет.