Имя: Пароль:
1C
1С v8
[При склонении]Преобразование значения к типу Число не может быть выполнено
0 ejiki
 
10.07.13
07:50

Преобразование значения к типу Число не может быть выполнено
                               + ПадежП(Выборка.Должность,2,1)


пользуюсь чужой функцией, которая работает %) вот ссылка на мисте на нее v8: Как просклонять должность?

в функцию Функцию передается Строковое значение Должности которую склонять пытаюсь


ПадежП(Знач z1,Знач z2,z3=0) Экспорт
 z1=СокрЛП(z1);z4=Найти(z1+" "," ")+1;z5=Лев(z1,z4-2);z6=Прав(z5,2);
 z7=?((Найти("ая ий ый",z6)>0)и(Найти("ющий нный",Сред(z1,z4-5,4))=0)и(z3=0),"1","*");
Возврат НРег(?((z6="ая")или(Прав(z6,1)="а"),ПадежС(z5,z2,z7,1)+" "+ПадежС(Сред(z1,z4),z2),ПадежС(z5,z2,"ч",1)+?((z6="ий")и(Найти(z1," ")=0),""," "+?(z7="1",ПадежП(Сред(z1,z4),z2,Число(z7)),Сред(z1,z4)))));
КонецФункции


//Это функция где собственно происходит склонение

Функция ПадежС(z1,Знач z2=2,Знач z3="*",z4=0) Экспорт
 z5=Найти(z1,"-");
 z6=?(z5=0,"","-"+ПадежС(Сред(z1,z5+1,СтрДлина(z1)-z5+1),z2,z3,z4));
 z1=НРег(?(z5=0,z1,Лев(z1,z5-1)));
 z7=Прав(z1,3);z8=Прав(z7,2);z9=Прав(z8,1);
 z5=СтрДлина(z1);
 za=Найти("ая ия ел ок яц ий па да ца ша ба та га ка",z8);
 zb=Найти("аеёийоуэюяжнгхкчшщ",Лев(z7,1));
 zc=Макс(z2,-z2);
 zd=?(za=4,5,Найти("айяь",z9));
 zd=?((zc=1)или(z9=".")или((z4=2)и(Найти("оиеу"+?(z3="ч","","бвгджзклмнпрстфхцчшщъ"),z9)>0))или((z4=1)и(Найти("мия мяэ лия кия жая лея",z7)>0)),9,?((zd=4)и(z3="ч"),2,?(z4=1,?(Найти("оеиую",z9)+Найти("их ых аа еа ёа иа оа уа ыа эа юа яа",z8)>0,9,?(z3<>"ч",?(za=1,7,?(z9="а",?(za>18,1,6),9)),?(((Найти("ой ый",z8)>0)и(z5>4)и(Найти("опой вбой",Прав(z1,4))=0))или((zb>10)и(za=16)),8,zd))),zd)));
 ze=Найти("лец нёк вей бей дец пец мец нец рец вец аец иец ыец бер",z7);
 zf=?((zd=8)и(zc<>5),?((zb>15)или(Найти("жий ний",z7)>0),"е","о"),?(z1="лев","ьв",?((Найти("аеёийоуэюя",Сред(z1,z5-3 ,1))=0)и((zb>11)или(zb=0))и(ze<>49),"",?(za=7,"л",?(za=10,"к",?(za=13,"йц",?(ze=0,"",?(ze<16,"ь"+?(ze=1,"ц",?(ze=5,"к","")),?(ze<41,"ц",?(ze<53,"йц","р"))))))))));
 zf=?((zd=9)или((z4=3)и(Прав(z1,1)="ы")),z1,Лев(z1,z5-?((zd>6)или(zf<>""),2,?(zd>0,1,0)))+zf+СокрП(Сред("а у а "+?((z8="ич")или(z8="ыш"),"е",?((z8="ов")or(z8="ин"),"ы","о"))+"ме "+?(Найти("гжкхш",Лев(z8,1))>0,"и","ы")+" е у ойе я ю я ем"+?(za=16,"и","е")+" и е ю ейе и и ь ьюи и и ю ейи ойойу ойойойойуюойойгомуго"+?((zf="е")или(za=16)или((zb>12)и(zb<16)),"и","ы")+"мм",10*zd+2*zc-3,2)));
Возврат ?(""=z1,"",?(z4>0,ВРег(Лев(zf,1))+?((z2<0)и(z4>1),".",Сред(zf,2)),zf)+z6);
КонецФункции


Вот и сам собственно вопрос, может зря пытаюсь данную штуку использовать или моя ошибка очевидна и по не знанию не вижу. Возможно подскажете что-нибудь дельное по склонениям. Потому-что перешерстил много чего %) и нашел какого-то Juras'а пытался использовать, но так как за давностью лет данную обработку решил не трогать
1 Mitriy
 
10.07.13
07:52
я не уверен, что Выборка.Должность - строковый тип...
2 ejiki
 
10.07.13
07:58
(1) о как, а какой еще может быть тогда?! оО вот запрос для должности

Запрос.Текст =
    "ВЫБРАТЬ
    |    ОтветственныеЛицаОрганизацийСрезПоследних.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
    |    ОтветственныеЛицаОрганизацийСрезПоследних.ОтветственноеЛицо КАК ОтветственноеЛицо,
    |    ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо,
    |    ОтветственныеЛицаОрганизацийСрезПоследних.Должность КАК Должность
    |ИЗ
    |    РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(
    |            &ВыбДата,
    |            СтруктурнаяЕдиница = &Организация
    |                И ОтветственноеЛицо = &Руководитель) КАК ОтветственныеЛицаОрганизацийСрезПоследних";

выборка = Запрос.Выполнить().Выбрать();
3 Mitriy
 
10.07.13
07:58
подумай... желательно мозгом...
4 ejiki
 
10.07.13
08:13
(3) океюшки, как преобразовать к строковому типу?
5 skunk
 
10.07.13
08:14
ПадежП(СокрЛП(Выборка.Должность),2,1)
6 Mitriy
 
10.07.13
08:19
|    ОтветственныеЛицаОрганизацийСрезПоследних.Должность.Наименование КАК Должность
7 skunk
 
10.07.13
08:20
(6)это типовой запрос его лучше не менять ...
8 ejiki
 
10.07.13
08:22
(5) ну вот этот вариант не помог мне, ошибка та же

Преобразование значения к типу Число не может быть выполнено
ПадежП(СокрЛП(Выборка.Должность),2,1)
9 Mitriy
 
10.07.13
08:22
(7) ОК :)
10 ejiki
 
10.07.13
08:23
(6) и такая подмена в запросе ничем не помогла %) курю отладчик хоть слаб и немощен в нем
11 ejiki
 
10.07.13
08:24
(9) Причем тип у должности в подмене запроса "Строка" "Генеральный директор", от чего же тогда? может не в ту сторону бреду?
12 Mitriy
 
10.07.13
08:25
А ты Выборка.Следующий() делаешь? Вопрос на засыпку...
13 1Сергей
 
10.07.13
08:26
(0) За такую функцию надо яйца дверью прищемить
14 ejiki
 
10.07.13
08:29
(7) и да я не использую типовой запрос, это ВПФ договора, просто должности сторон должны склняться в тексте договора :(

(12) Вот гляди, что не так?


Пока Выборка.Следующий() Цикл
   Если Выборка.ОтветственноеЛицо = Перечисления.ОтветственныеЛицаОрганизаций.Руководитель Тогда
        ОтвЛицоРуководитель = Выборка.ФизическоеЛицо;
        ОтвЛицоДолжность = Выборка.Должность;
КонецЕсли;
15 skunk
 
10.07.13
08:30
а покажи всю строку из своего "+ ПадежП(Выборка.Должность,2,1)"
16 skunk
 
10.07.13
08:31
(13)нормальная функция
17 ejiki
 
10.07.13
08:31
(13) Для меня тема 1с очень сильно не расскрыта, я учусь - и на своих и начужих ошибках.

Писать Функцию для склонения с нуля очень тяжковато будет. Если можете помочь с решением данного вопроса советом каким - подскажите.

Вот вы, 1Сергей, склоняете каким образом должности? ну возможно еще и подразделения?
18 skunk
 
10.07.13
08:31
(12)сдается мне собака в другом зарыта
19 ejiki
 
10.07.13
08:32
(15) Поясни пожалуйста. Показать ВЫРАЖЕНИЕ и Выборки по запросу? или что?
20 1Сергей
 
10.07.13
08:33
(16) можно было более понятно назвать переменные и не делать бесконечных выражений с множеством ?(,,)
21 ejiki
 
10.07.13
08:33
(18) да я уже тоже думаю что не в ту сторону поперли, мб сама используемая функция с большой буквы Г, но тогда с чего бы 2е людей с этого славного форума заверяют что все работает
22 ejiki
 
10.07.13
08:34
(20) Приму любую помощь в решении вопроса по слонениям ;)
23 Mitriy
 
10.07.13
08:35
(21) да я тоже когда-то и где-то эту функцию успешно использовал... благо, узнаваемая по первому взгляду...
24 skunk
 
10.07.13
08:35
(19)покажи всю строку в которой происходит ошибка ... то есть к чему ты пытаешься прибавить  должность в родительском падеже
25 skunk
 
10.07.13
08:36
(21)могу уверить, что работает ... и как мне кажеться проблема в том что у тебя должность пытается прибавиться к числу
26 ejiki
 
10.07.13
08:37
(24) Вот, кусок, и все в таком духе, само обидное что простая функция по слонению ФИО отрабатывает :(


ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияООрганизации, "НаименованиеПолное")+" , именуемое в дальнейшем Поставщик, в лице "+
                               + ПадежП(СокрЛП(Выборка.Должность),2,1) + " "+
                               СклонениеФИО(ОтвЛицоРуководитель,2,1)+" ,действущего на основании доверенности б/н от 05.11.2012, с одной стороны, и "+
27 ejiki
 
10.07.13
08:40
(25) это текст выводимый на печатную форму %) я не знаю, всегда так делал если нужно какие-то переменные данные вывести вместе с текстом. Не уж то я грамматически не верно делаю?
28 skunk
 
10.07.13
08:41
поставь в отладчике галку остановка по ошибке ... и запусти склонялку
29 ejiki
 
10.07.13
08:42
это ВПФ, ну надеюсь поможет %) спасибо ;) совсемзабыл про остановку по ошибке
30 1Сергей
 
10.07.13
08:42
(26) два плюса подряд? в конце первой строки и начале второй
31 skunk
 
10.07.13
08:45
(30)кстати а как такое удалось сохранить ... выдает неопозанный оператор
32 1Сергей
 
10.07.13
08:47
(31) видимо, не копипаста :)
33 skunk
 
10.07.13
08:48
собственно даже при откдючении автоматической проверки ... в режиме предприятия все равно не та ошибка будет
34 ejiki
 
10.07.13
08:48
(31) блин, во дела %) а почему реально ошибки то не было?!

фига я слепой %)
35 1Сергей
 
10.07.13
08:50
(33) это не в коде, видимо, а в табличном документе, в расшифровке
36 ejiki
 
10.07.13
08:51
(35) да, вывожу данную сумму значений в текст печатной формы
37 1Сергей
 
10.07.13
08:54
(36) ну, так исправил? помогло?
38 skunk
 
10.07.13
08:55
(35)про это я даже не подумал
39 ejiki
 
10.07.13
09:07
(37) спасибо, данная ошибка отсеялась, появилась другая %) но думаю вам уже мозг своими глупостями не буду! спасибо очень помогли, не заметил бы этого второго плюса %)
40 hhhh
 
10.07.13
10:01
(39) ввобще не нужно там склонять. Пиши всё в именительном падеже, никто не придирается к этому.
41 ejiki
 
10.07.13
12:05
(40) ну как так можно?! В лице генеральный директор Иванов Иванович?!?!

хотят видеть " в лице генеральн(-ОГО) директор(-А) Иванов(-А) Иван(-А) иванович(-А)
AdBlock убивает бесплатный контент. 1Сергей