daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр

0. Михаил Андропов (daMaster) 165 13.02.15 20:13 Сейчас в теме
Функция предназначена для склонения выражений, которые часто требуется при формировании печатных форм договоров и прочих печатных форм. Функция склоняет по падежам ФИО, должности, числительные, валюты, единицы измерения, предметы. Также функция склоняет глаголы и прилагательные по числам и родам и существительные по числам. Имеется режим определения рода переданного выражения. Поддержка форматной строки для вывода результата. Функция не использует внешние библиотеки и веб-сервисы, написана на чистом языке 1С, и поэтому легко встраивается в любую конфигурацию или внешнюю обработку. Правила склонения оформлены в виде таблицы и могут быть легко изменены при необходимости.

Перейти к публикации

KazanKokos; +1 Ответить
Комментарии
1. Марина Чирина (chmv) 16.02.15 10:22 Сейчас в теме
2. Александр Савченко (invertercant) 22 16.02.15 12:12 Сейчас в теме
Тоже была недавно задача склонения произвольных словосочетаний. Воспользовался готовой dll.
Как заполнял и систематизировал таблицу правил? Сидел и склонял подряд все имена?
3. Михаил Андропов (daMaster) 165 16.02.15 12:38 Сейчас в теме
(1) chmv,

Я в статье уже писал, какие недостатки у .dll, распишу подробнее:
    - .dll необходимо регистрировать на каждом компьютере, где должен работать механизм склонений, если таких компьютеров много - это не самая простая и быстрая работа
    - политика IT-безопасности компании может запрещать подобные действия, например у нас 1С работает на ферме терминальных серверов, и на эти сервера вообще не подобраться
    - если планируется написать универсальную обработку, использующую механизм склонений, которая будет широко распространяться, в дистрибутив потребуется включать эту .dll с инструкциями, как ее зарегистрировать
    - .dll имеет закрытый исходный код, и в случае обнаружения ошибочных склонений (а ошибки, повторюсь, есть в каждом из существующих алгоритмов склонений), вы не сможете исправить ошибки самостоятельно, придется ждать выпуска новой версии .dll, которого можно и не дождаться
Кстати, во время тестирования на реальных данных библиотека padeg.dll при некоторых входных значениях у меня намертво зависала, приходилось перезапускать сеанс 1С.
tormozit; opx; and-blag; dedkov; maXon777; UralKIT; molodoi1sneg; +7 Ответить 1
4. Михаил Андропов (daMaster) 165 16.02.15 12:50 Сейчас в теме
(2) invertercant, я нашел в сети исходные коды около десятка процедур склонения, причем не только на языке 1С (например, "NamecaseLib" и "Петрович"), и первоначальные правила набрал оттуда. Затем прогонял различные тесты - как специальные тесты от авторов процедур склонения, так и импортированные справочники из реальных конфигураций, и по результатам тестов дополнял правила. Если вы скачаете архив из статьи - обнаружите некоторые из этих тестов, а также ТестЦентр, чтобы тесты прогонять и самостоятельно создавать свои)
5. Яков Коган (Yashazz) 2096 16.02.15 19:20 Сейчас в теме
Баян. Смотрите все сюда: http://infostart.ru/public/16470/ - и не столько на саму публикацию, хотя тоже неплоха, но и на комментарии к ней, там много полезного приведено, в т.ч. на регулярных выражениях.
6. Михаил Андропов (daMaster) 165 16.02.15 20:08 Сейчас в теме
(5) Yashazz, я как бы и не скрывал, что баян, но зато баян-то - новый! А функция "Коган", написанная "студентом-программистом и студентом-лингвистом", есть в моем тест-центре, среди 11-ти прочих функций, можете ее протестировать. Если вам нравится алгоритм, который склоняет типа "Петров Юрий Васильевич -> Петрове Юрие Васильевиче", "Басинских Иван Семенович -> Басинскиха Ивана Семеновича", "Бережной Сергей Иванович -> Бережним Сергеем Ивановичем", то пользуйтесь ей на здоровье!
Результат теста на реальном справочнике сотрудников нашей организации: "Алгоритм: Коган (Я. и С. Коган); Вызовов: 7 225; Ошибок: 587 (8,12%)". Как по мне, то 8% ошибок - это слишком много.
7. Константин Юрин (kostyaomsk) 71 16.02.15 20:47 Сейчас в теме
(3) daMaster, верно говорите в dll исключения не добавить :)
(5) Yashazz, не проверял, но видно автор текущей разработки взял за основу и добавил очень мощный редактор исключений для окончаний слов.
8. Михаил Андропов (daMaster) 165 17.02.15 00:00 Сейчас в теме
(7) kostyaomsk, в качестве редактора как раз подойдет любой текстовый) Здесь более важен принцип,согласно которому правила склонения для всех окончаний не разбросаны по разным участкам кода в бесконечных ветвях "Если..Иначе", а объединены в наглядную табличку, которую можно поправить даже и не зная языка 1С!
9. Павел (Yimaida) 32 17.02.15 00:14 Сейчас в теме
Видно, что проделана огромная работа. Автору большой +. Но читать и дорабатывать код, который пестрит нижними подчеркиваниями не совсем удобно (маленькая ложечка дегтя).
Я тоже как то искал в инете алгоритмы для склонений, но не видел, чтобы они склоняли составные должности и тем более глаголы (пока не тестировал но +). Плюс за возможность вносить исключения. То что автор собрал наиболее известные алгоритмы в одной обработке тоже +, только вот я бы добавил ссылки на первоисточники (авторам будет приятно). Для ЗУП просто незаменимая функция, из разряда must have.
10. Михаил Андропов (daMaster) 165 17.02.15 00:43 Сейчас в теме
(9) Yimaida, все переменные начинаются с _НижнихПодчеркиваний сознательно! Предполагается, что функция должна беспроблемно встраиваться в любой модуль, в любую форму, и при этом не портить значения реквизитов и глобальных переменных - вдруг на форме тоже окажется реквизит типа "Род" или "Метод"? В отличие от C++, в 1С с подчеркиваний именовать переменные не принято, поэтому вероятность конфликтов гораздо ниже. Ну и предполагается, что код обычный пользователь менять не будет, разве только не захочет добавить какой-нибудь более продвинутый функционал, в таком случае придется уже поразбираться в логике) А чтобы добавить исключение или исправить ошибочное правило, программировать не нужно - редактируйте таблицы склонений! Ну а ссылки на первоисточники я добавлю в credits для следующей версии.
корум; CratosX; +2 Ответить
11. Константин Юрин (kostyaomsk) 71 17.02.15 08:47 Сейчас в теме
Такие вещи со склонением и списком исключений для серьезных внедрений. Даже нужно продумывать кто будет и как вносить исключения по словам. Это не для внешнего отчета по формированию печатных форм из ЗУП в холдинге например. Кадровики ругаются на некоторые ФИО, которые приходится ручками корректировать, а что делать. Тут более простая доработка нужна для хранения ислючений, причем где-то во внешнем "листке"
12. DAnry (DAnry) 12 18.02.15 11:56 Сейчас в теме
Спасибо автору за труд. Подход к проблемы, я б сказал, фундаментальный. Особой похвалы заслуживает то, что сама функция выложена открыто.
13. Максим *** (premier) 136 18.02.15 13:42 Сейчас в теме
Впечатляет! Особенно результаты тестов. И скорость обработки неплохая. Поставлю "+" и возьму на вооружение.
P.S. Когда использовал компоненту склонения из типовой ЗиУП, долго смеялся, как она должности склоняет, а здесь, вроде бы, вполне корректно.
14. Сергей Сомов (sssomov@mail.ru) 18.02.15 15:28 Сейчас в теме
Спасибо автору! Действительно гигантский труд. Даже должности через тире правильно склоняет.
15. Михаил Андропов (daMaster) 165 18.02.15 15:49 Сейчас в теме
(11) kostyaomsk, я хотел отойти от списков исключений - зачем городить исключения, если можно модифицировать правила? Но вы правы насчет тех ситуаций, когда обрабатывать ошибки склонений будет не слишком продвинутый пользователь. Я подумаю насчет "добавления очень мощного редактора исключений" в будущих версиях.
16. Яков Коган (Yashazz) 2096 18.02.15 19:54 Сейчас в теме
(6) daMaster, вы мои сообщения читайте-то внимательно, прежде чем проценты ошибок приводить. Я вам про что говорил, разве про нашу с женой? Я вам про те, что в комментариях там, а именно, про супермонстра от Jurer'а, каковой ещё никто не превзошёл, полагаю, и вы тоже.
А просто тупо расписать всё в табличку - значит по сути хардкодить в заданных условиях, а не делать универсал. Jurer сделал иначе, и за то ему мегареспекты.
17. rasswet (rasswet) 80 19.02.15 11:04 Сейчас в теме
благодарю, видно что работа проведена огромная! Спасибо за ваш труд.
18. Марина Чирина (chmv) 19.02.15 13:51 Сейчас в теме
Должности плохо склоняются
19. Михаил Андропов (daMaster) 165 22.02.15 11:43 Сейчас в теме
(18) chmv, вы бы привели примеры ошибок, я постараюсь исправить
20. Михаил Андропов (daMaster) 165 03.03.15 19:34 Сейчас в теме
(16) Yashazz, а вы, походу, и есть тот самый Яков Коган, студент-филолог, тогда понятно, почему у вас так подгорело))
Алгоритм "Крохотулька" от Юрия Железнякова не только старейший для 1С, но и действительно выдающийся среди прочих, соотношение длины кода к функционалу поражает воображение 1С-ников. Уверен, на каком-нибудь конкурсе-олимпиаде среди программистов 1С он бы взял главный приз. Но реальная жизнь - это не олимпиада. От рабочей функции требуется высокая точность работы и минимальное количество ошибок. У "Крохотульки", к сожалению, процент ошибок слишком высок. Я сам долго пользовался "Крохотулькой" для формирования печатных форм договоров, но когда от менеджеров посыпались жалобы о многочисленных ошибках, пришлось написать свою функцию. Доработка "Крохотульки", чтобы исправить эти ошибки - занятие слишком трудоемкое, поскольку ее код не предназначен для чтения другим человеком, сокращение длины кода привело по сути к полной и безоговорочной обфускации. Юрию летит от меня плотный респект, но в работе "Крохотульку" больше не использую.
По сути ваших нелепых предъяв про "тупо расписать всё в табличку" - это вы здесь в комментариях "тупо" набрасываете. А "табличка" сделана в максимально наглядном виде специально, чтобы любой программист мог самостоятельно, не напрягаясь сверх меры, исправить ошибки или добавить свои правила.
herfis; Somebody1; dgolovanov; +3 Ответить
21. Иван Титов (Ibrogim) 622 10.03.15 10:59 Сейчас в теме
(0) + за функцию. Можно ли вашу функцию использовать в коммерческих разработках (с указанием ссылки на вас в коде и в самой публикации) ?
22. Михаил Андропов (daMaster) 165 10.03.15 14:29 Сейчас в теме
(21) Ibrogim, то, что выложено в интернет с исходниками, сложно запретить использовать) Так что, пользуйтесь на здоровье, естественно, с указанием ссылок и копирайтов. На данном этапе я заинтересован в обратной связи - поэтому буду благодарен за описание найденных ошибок и за конструктивные замечания и пожелания к функционалу.
dgolovanov; teflon; +2 Ответить
23. Александр Бочкарев (iiiaiiika) 21.05.15 15:53 Сейчас в теме
Спасибо за функцию. Столкнулся только с одним глюком - когда в должности есть и мужской и женский род - получается фигня. В моем случае Начальник отдела транспортной логистики - при передаче параметра Мужской род в функцию первую половину склоняет корректно - Начальника отдела, потом транспортной - уже не склоняет, логистики - правильно. Но все равно гранд мерси.
24. Иван Пантелеев (RailMen) 677 28.05.15 11:26 Сейчас в теме
Давно и много создаю печатные формы в различных форматах. С первого дня считал, что готовый макет должен быть максимально полно заполнен. Со склонениями, падежами и окончаниями. Пользователь не должен редактировать макет вообще т.к. это время/деньги - это очень важное требование. И как много копий было сломано и шишек набито по поводу склонений ФИО, должностей и подразделений, с окончаниями в зависимости от рода вообще беда. 100% решения нет. Но вот теперь есть идея (почему я сам не додумался???) и инструмент как ПРОТЕСТИРОВАТЬ различные варианты и выбрать лучший, а потом допиливать и перепиливать его, делая "самурайский меч" ))) Автору СПАСИБО!
25. Михаил Андропов (daMaster) 165 17.06.15 16:28 Сейчас в теме
(23) iiiaiiika, благодарю за обнаруженную ошибку! Но ошибка была не мужском и женском родах - здесь все в порядке, дело в том, что слово "транспортной" оканчивается на "портной", а профессию "портной" склонять надо) Дело решилось добавлением одной звездочки (*) в таблицу правил, теперь "начальник отдела транспортной логистики" склоняется верно, а слово "портной" - только если слово встретилось целиком. В новой версии алгоритма еще несколько исправлений мелких ошибок.
dgolovanov; +1 Ответить
26. vlad Sa (1pioner) 01.07.15 08:48 Сейчас в теме
Большое Спасибо. Мы работаем удаленно и через терминалы. dll - нет возможности использовать. Стандартный механизм глючный. и если ФИО более менее, то с названием должностей полная ... труба. Делал всякие исключения и т.д. Это обрабатывать, это слово нет и т.д. Разрастается алгоритм сильно, но всё равно ошибки. У вашего их пока не обнаружил, но посмотрим дальше... :-) Еще раз спасибо.
27. Гость 24.08.15 16:33 Сейчас в теме
daMaster,

неправильно склоняет "Департамент", возможно решается? :
|М; ОРУБ/ДУВ/КЛАД/ВЕД/ЕВОД/ОВОД/ОХОД/ЛАЗ/ВАЛ/ДЕЛ/СОЛ/ОКОЛ/КОП/ВА­Р/ОПАР/ВЕС/МЕС/НОС/ТЕС/МЕНТ/; ; 0; а; у; а; ом; е;

неправильно склоняет "Дирекция", возможно решается? :
|Ж; ЦИЯ/; ; 3; ции; ции; цию ; цией; ции;

28. Гость 24.08.15 16:53 Сейчас в теме
daMaster,
в должностях не склоняется "Редакция", "Служба", "Управление делами", "Отдела политика", "Канцелярия"
29. Иван Иванчиков (Dr.ZIG) 27 27.08.15 12:17 Сейчас в теме
Нашёл выражение, которое никак не могу добавить в таблицу правил: "Кафедра бизнес-процессов". Нужно получить родительный падеж, т.е. "Кафедры бизнес-процессов". Если добавить "бизнес" в список исключений, то не будет склоняться просто бизнес, а "бизнес-процессов" не добавляется.
30. Михаил Андропов (daMaster) 165 28.08.15 17:58 Сейчас в теме
(27) Гость, "Департамент", "Редакция", "Канцелярия" - это не должности, это наименования подразделений. Данный алгоритм склоняет должности, если они переданы в процедуру в начальной форме - в таком виде отдел имеет форму родительного падежа: "Секретарь дирекции", "Начальник управления делами", а не "Секретарь дирекция", "Начальник управление делами". В этой форме процедура отрабатывает корректно. Если же вы хотите склонять подразделения отдельно, из формы именительного падежа, следует использовать режим "В" (выражение).
31. Михаил Андропов (daMaster) 165 28.08.15 18:07 Сейчас в теме
(29) Dr.ZIG, в данном случае вам стоит использовать режим склонения должностей "daСклонение("Кафедра бизнес-процессов", "Р", , "Д")", только в таблицу _ПравилаД добавьте правило для слова "кафедра":
Ж; СЕСТРА/ССА/КАФЕДРА/; ; 1; ы; е; у; ой; е; //Сестра, Стюардесса, Поэтесса
Dr.ZIG; virus2; +2 Ответить
32. Антонио Антонио (Fragster) 684 27.10.15 15:50 Сейчас в теме
как мне получить из "доверенность номер 17 от 12 января 15 года" результат "действующего на основании доверенности номер 17 от 12 января 15 года"? Или как лучше подставлять в договоры данные?
33. Михаил Андропов (daMaster) 165 29.10.15 16:34 Сейчас в теме
(32) Fragster, из первого вашего выражения второе вы никак не получите, алгоритм пока не обладает функцией телепатии) А если внимательно прочитать описание, то станет понятно, как алгоритм использовать. Преамбула договора действительно, часто содержит фразу наподобие "ООО "Ромашка" в лице <Пиотровского И.И./Пиотровской А.А.>, <действующего/действующей> на основании <устава/доверенности> № 66 от 14.08.2008 г.", где отдельные фразы изменяются в зависимости от рода и падежа.
Сначала мы определяем род представителя контрагента, заодно просклоняем его в родительный падеж:

ПоискРода = "?"; ПредставительКонтрагентаРП = daСклонение("Пиотровский И.И.", "Р", ПоискРода, "ФИО"); // ПредставительКонтрагентаРП = "Пиотровского И.И."

Затем глагол "действующий" склоняем в родительный падеж, а род склонения подставим тот, который определился по ФИО представителя контрагента:

ГлаголРП = daСклонение("действующий", "Р", ПоискРода, "В"); // ГлаголРП = "действующего"

Также просклоняем тип документа, это может быть "Устав" или "доверенность", род не указываем, он определится автоматически:

ТипДокументаРП = daСклонение("доверенность", "Р", , "В"); // ТипДокументаРП = "доверенности"

Теперь нам остается соединить строку:

СтрокаПреамбула = ИмяКонтрагента + " в лице " + ПредставительКонтрагентаРП + ", " + ГлаголРП + " на основании " + ТипДокументаРП + " № " + НомерДокумента + " от " + ДатаДокумента;
Fragster; +1 Ответить
34. romhik romhika (romhika) 09.12.15 17:09 Сейчас в теме
Похоже "Глава представительства фирмы" спотыкается на Р. (от кого, чего?).

Правильного ответа ни дал ни кто.

Не правильно Крохотулька, daСклонение, finix, Плаха и Jack19.
Остальные результата не дали....
35. Михаил Андропов (daMaster) 165 10.12.15 15:32 Сейчас в теме
(34) romhika, возможно, вы неправильно указали параметры вызова функции, для склонения должностей используется режим "Д". Проверил для версии от 17.06.2015, все правильно:
daСклонение("Глава представительства фирмы", "Р", , "Д", ) = "Главы представительства фирмы"
36. Максим *** (premier) 136 24.12.15 22:06 Сейчас в теме
(0) daMaster, использую на работе Вашу функцию склонения вместо стандартной 1С-ной библиотеки склонений.
А если я буду внедрять печатные формы, к примеру, у своих заказчиков, это не будет нарушением авторских прав, если я укажу Ваше авторство?
37. Михаил Андропов (daMaster) 165 25.12.15 19:40 Сейчас в теме
(36) premier, нет, нарушением не будет. А если вы укажете мое авторство - то мне приятно будет! )
корум; +1 Ответить
38. Максим *** (premier) 136 26.12.15 13:12 Сейчас в теме
Спасибо. Жаль второй плюс поставить нельзя. Я бы поставил )))
daMaster; +1 Ответить
39. Сергей Смирнов (milanse) 24 13.01.16 19:24 Сейчас в теме
Вставил, использовал, работает.
40. Андрей Казанцев (ander_) 27.01.16 13:03 Сейчас в теме
(5) Yashazz,
что за "процедуры Jurer'а"? ссылочкой не поделитесь?
41. Михаил Андропов (daMaster) 165 27.01.16 16:43 Сейчас в теме
(40) ander_,
Jurer - это Юрий Железняков. "процедуры Jurer'а" - это пресловутая "крохотулька". Вам нужно склонение цехов?
42. Андрей Казанцев (ander_) 28.01.16 08:06 Сейчас в теме
(41) daMaster,
Спасибо за пояснение.
Нет, склонение цехов мне не нужно. Я почему-то решил что "процедуры Jurer'а" это какая-то библиотека для морфологического анализа ЕЯ, в т.ч. включающая в себя и склонение.
43. Кирилл Тюрин (turinx) 05.04.16 09:45 Сейчас в теме
Большое спасибо, очень пригодилась функция!
44. Павел (virus2) 07.04.16 19:50 Сейчас в теме
А как высшее образование склонять?
45. Оксана Мартынова (OksDallas) 22 01.08.16 06:38 Сейчас в теме
Спасибо, пригодилось! Изменения можно внести без проблем.
46. Николай Гончаров (JohnConnor) 5 10.08.16 05:29 Сейчас в теме
попробуйте просклонять слово - участок , получаем участока, участоку и т.д.
47. Оксана Мартынова (OksDallas) 22 12.08.16 07:40 Сейчас в теме
Повторюсь, изменения можно внести без проблем
Например, про слово "участок":

_ПравилаВ = //Выражение
//Род; Окончания; Обрезка; И; Р; Д; В; Т; П; О;
"С; ЕНИЕ/; 1; е/я; я/й; ю/ям; е/я; ем/ями; и/ях; е/й;
//"Р" в колонке "Род" означает, слово родоизменяемое, и порядок окончания в списке определяет род слова

............................................

|М; ШОК/; 2; ок/ки; ка/ков; ку/кам; ок/ки; ком/ками; ке/ках; ка/ков;


можно изменить на

_ПравилаВ = //Выражение
//Род; Окончания; Обрезка; И; Р; Д; В; Т; П; О;
"С; ЕНИЕ/; 1; е/я; я/й; ю/ям; е/я; ем/ями; и/ях; е/й;
//"Р" в колонке "Род" означает, слово родоизменяемое, и порядок окончания в списке определяет род слова

..........................................

|М; ШОК/ТОК/; 2; ок/ки; ка/ков; ку/кам; ок/ки; ком/ками; ке/ках; ка/ков;
daMaster; +1 Ответить
48. Николай Овчинников (gkoles010) 23 25.08.16 14:23 Сейчас в теме
Добрый день!
Есть ли возможность просклонять Порядковые числительные из введенного числа?
1 - Первый, Первого, Первому ...
20 - Двадцатый, Двадцатого, Двадцатому ...
49. Вячеслав (slawa) 24 27.08.16 05:43 Сейчас в теме
Если склонять "Горобец" без указания рода, тогда срабатывает правило "М-; ОВЕЦ/БЕЦ/АМЕЦ/НЕЦ/ТЕЦ/; 2; ца; цу; ца; цом; це; Горовец"
Это специально сделано?
Мне кажется, правильней было-бы чтоб срабатывало правило без рода "; "
50. Михаил Андропов (daMaster) 165 19.10.16 12:10 Сейчас в теме
(46) JohnConnor, склонение корней с беглыми гласными - сложный вопрос, по окончанию слова невозможно понять, беглая гласная или нет. Например: для "СТОК " - "участок/участка", но "водосток/водостока". Чтобы корректно склонять максимальное количество слов, необходимо значительно увеличивать словарь окончаний. Поэтому в данном случае правильным решением будет самостоятельная модификация таблицы правил.
51. Михаил Андропов (daMaster) 165 19.10.16 12:26 Сейчас в теме
(49) slawa, в комментарии к таблице правил написано:
"М-" в колонке "Род" означает, что по окончанию род не определить, но правило действует только для рода "М" ("Воробей" склоняется только для "М", для "Ж" - не склоняется)
Поэтому если вы будет склонять "Горобец" с указанием мужского рода, данное правило сработает, фамилия будет склоняться, если укажете женский род - не сработает. Если вы при вызове род не указали, алгоритм попытается определить род по отчеству и имени. Когда это не удалось (например, были указаны только инициалы), алгоритм будет по умолчанию считать, что род - мужской (да, это такой синтаксический шовинизм). Если вы считаете, что при неопределенном роде склонять ФИО не следует вовсе, то добавьте сначала вызов функции в режиме определения рода, если род не определился - то не вызывайте функцию в режиме склонения.
52. Михаил Андропов (daMaster) 165 19.10.16 12:37 Сейчас в теме
(48) gkoles010, пока такой возможности нет, мне сложно придумать ситуацию, где это было бы необходимо. В "канцелярском языке", для которого был разработан данный алгоритм, почти всегда можно вместо "товар находится в двадцать первом ящике" написать "товар находится в ящике двадцать один".
53. Anton S (ntemny) 10 21.12.16 15:13 Сейчас в теме
За склонение числительных - отдельный гигантский плюсище!
daMaster; +1 Ответить
54. Наталья Янкевич (nyuya@mail.ru) 28.02.17 10:47 Сейчас в теме
Большое спасибо за Ваш труд! То, что нужно)
daMaster; +1 Ответить
55. Дмитрий Коваленко (dvk09) 01.03.17 11:02 Сейчас в теме
56. Evgeny Sergeev (sea123) 12 09.03.17 12:10 Сейчас в теме
Огромная благодарность!!!!)
daMaster; +1 Ответить
57. Виталий Бугаев (vitalick) 24 13.03.17 14:36 Сейчас в теме
Штука отличная.

"41 метр" склоняет как положено "41 метра" а вот "55 метров" - "55 метрова" в РП
58. Михаил Андропов (daMaster) 165 13.03.17 19:32 Сейчас в теме
(57) идея алгоритма не в том, чтобы сделать универсальный менеджер склонений из любой формы в любую форму - это вызвало бы значительное увеличение объема кода и таблиц склонений. Основной смысл разработки - сделать удобный и компактный инструмент для склонения тех выражений и в тех грамматических формах, которые встречаются при генерации печатных форм из базы данных 1С. Я исходил из того, что при склонении единиц измерений, валют и т. п., программисту доступна начальная форма слова - в которой это слово обычно хранится где-нибудь в справочнике либо перечислении, то есть "метр", а не "метров" или "метра". Прочитайте еще раз комментарии с примерами:

//возможно склонение сочетания числа и исчислимого (валюты, единицы измерения, прочих существительных)
// daСклонение("32 доска", "Р", , "Ч") = "Тридцати двух досок"
//исчислимое должно быть в начальной форме (именительный падеж, единственное число):
// daСклонение("23 австралийский доллар", "Р", , "Ч") = "Двадцати трех австралийских долларов"

В вашем случае также надо передавать в качестве исходной строки "41 метр", "55 метр", "62 метр"
KazanKokos; +1 Ответить
59. Виталий Бугаев (vitalick) 24 14.03.17 10:09 Сейчас в теме
60. Анатолий Лукьянов (KazanKokos) 9 28.04.17 14:11 Сейчас в теме
действующего на основании приказа №1 ота 01.04.2017 г.


"ота" получилось. наверное "от" склонять не надо... или я не так вызвал?

за функцию огромное спасибо. азиз вставил в общий модуль конфы
61. Михаил Андропов (daMaster) 165 02.05.17 17:17 Сейчас в теме
(60) алгоритм не предназначен для морфологического анализа фраз перед их склонением! Это бы значительно усложнило код и увеличило его размер. Не ленись, помоги функции - раздели сам те слова, которые надо склонять, и те, которые склонять не надо, а потом собирай их по частям. Смотри внимательнее примеры. Азизу - привет!
62. Анатолий Лукьянов (KazanKokos) 9 03.05.17 10:31 Сейчас в теме
(61) да уже тогда сделал. выделил первое слово и все ок. As is очень рад получить от тебя привет :))
63. Margarita Baeva (asdevlog) 17.05.17 06:34 Сейчас в теме
Помогите получить из "бригада транспортного обеспечения производственной деятельности" -> "бригады транспортного обеспечения производственной деятельности", т.е. надо получить родительный падеж, инструкция бригады транспортного обеспечения производственной деятельности.
У меня получается "бригады транспортногО обеспечения производственноИ деятельности" (большими буквами указаны ошибки.
Оставьте свое сообщение