0. daMaster 195 13.02.15 20:13 Сейчас в теме

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

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

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

Deletex; Анастасия1978; KazanKokos; +3 Ответить
Комментарии
Избранное Подписка Сортировка: Древо
1. chmv 16.02.15 10:22 Сейчас в теме
3. daMaster 195 16.02.15 12:38 Сейчас в теме
(1) chmv,

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

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

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

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

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

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

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

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

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

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

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

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

Не правильно Крохотулька, daСклонение, finix, Плаха и Jack19.
Остальные результата не дали....
35. daMaster 195 10.12.15 15:32 Сейчас в теме
(34) romhika, возможно, вы неправильно указали параметры вызова функции, для склонения должностей используется режим "Д". Проверил для версии от 17.06.2015, все правильно:
daСклонение("Глава представительства фирмы", "Р", , "Д", ) = "Главы представительства фирмы"
36. premier 166 24.12.15 22:06 Сейчас в теме
(0) использую на работе Вашу функцию склонения вместо стандартной 1С-ной библиотеки склонений.
А если я буду внедрять печатные формы, к примеру, у своих заказчиков, это не будет нарушением авторских прав, если я укажу Ваше авторство?
37. daMaster 195 25.12.15 19:40 Сейчас в теме
(36) premier, нет, нарушением не будет. А если вы укажете мое авторство - то мне приятно будет! )
pallid; корум; +2 Ответить
38. premier 166 26.12.15 13:12 Сейчас в теме
Спасибо. Жаль второй плюс поставить нельзя. Я бы поставил )))
daMaster; +1 Ответить
71. pallid 188 22.02.18 13:24 Сейчас в теме
(38) а ставьте плюсы на всех комментария автора )))
daMaster; +1 Ответить
39. milanse 32 13.01.16 19:24 Сейчас в теме
Вставил, использовал, работает.
43. turinx 05.04.16 09:45 Сейчас в теме
Большое спасибо, очень пригодилась функция!
44. virus2 07.04.16 19:50 Сейчас в теме
А как высшее образование склонять?
45. OksDallas 22 01.08.16 06:38 Сейчас в теме
Спасибо, пригодилось! Изменения можно внести без проблем.
46. JohnConnor 32 10.08.16 05:29 Сейчас в теме
попробуйте просклонять слово - участок , получаем участока, участоку и т.д.
50. daMaster 195 19.10.16 12:10 Сейчас в теме
(46) JohnConnor, склонение корней с беглыми гласными - сложный вопрос, по окончанию слова невозможно понять, беглая гласная или нет. Например: для "СТОК " - "участок/участка", но "водосток/водостока". Чтобы корректно склонять максимальное количество слов, необходимо значительно увеличивать словарь окончаний. Поэтому в данном случае правильным решением будет самостоятельная модификация таблицы правил.
47. OksDallas 22 12.08.16 07:40 Сейчас в теме
Повторюсь, изменения можно внести без проблем
Например, про слово "участок":

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

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

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


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

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

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

|М; ШОК/ТОК/; 2; ок/ки; ка/ков; ку/кам; ок/ки; ком/ками; ке/ках; ка/ков;
daMaster; +1 Ответить
48. gkoles010 25 25.08.16 14:23 Сейчас в теме
Добрый день!
Есть ли возможность просклонять Порядковые числительные из введенного числа?
1 - Первый, Первого, Первому ...
20 - Двадцатый, Двадцатого, Двадцатому ...
52. daMaster 195 19.10.16 12:37 Сейчас в теме
(48) gkoles010, пока такой возможности нет, мне сложно придумать ситуацию, где это было бы необходимо. В "канцелярском языке", для которого был разработан данный алгоритм, почти всегда можно вместо "товар находится в двадцать первом ящике" написать "товар находится в ящике двадцать один".
49. slawa 25 27.08.16 05:43 Сейчас в теме
Если склонять "Горобец" без указания рода, тогда срабатывает правило "М-; ОВЕЦ/БЕЦ/АМЕЦ/НЕЦ/ТЕЦ/; 2; ца; цу; ца; цом; це; Горовец"
Это специально сделано?
Мне кажется, правильней было-бы чтоб срабатывало правило без рода "; "
51. daMaster 195 19.10.16 12:26 Сейчас в теме
(49) slawa, в комментарии к таблице правил написано:
"М-" в колонке "Род" означает, что по окончанию род не определить, но правило действует только для рода "М" ("Воробей" склоняется только для "М", для "Ж" - не склоняется)
Поэтому если вы будет склонять "Горобец" с указанием мужского рода, данное правило сработает, фамилия будет склоняться, если укажете женский род - не сработает. Если вы при вызове род не указали, алгоритм попытается определить род по отчеству и имени. Когда это не удалось (например, были указаны только инициалы), алгоритм будет по умолчанию считать, что род - мужской (да, это такой синтаксический шовинизм). Если вы считаете, что при неопределенном роде склонять ФИО не следует вовсе, то добавьте сначала вызов функции в режиме определения рода, если род не определился - то не вызывайте функцию в режиме склонения.
53. 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. sea123 13 09.03.17 12:10 Сейчас в теме
Огромная благодарность!!!!)
daMaster; +1 Ответить
57. vitalick 24 13.03.17 14:36 Сейчас в теме
Штука отличная.

"41 метр" склоняет как положено "41 метра" а вот "55 метров" - "55 метрова" в РП
58. daMaster 195 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 7 28.04.17 14:11 Сейчас в теме
действующего на основании приказа №1 ота 01.04.2017 г.


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

за функцию огромное спасибо. азиз вставил в общий модуль конфы
61. daMaster 195 02.05.17 17:17 Сейчас в теме
(60) алгоритм не предназначен для морфологического анализа фраз перед их склонением! Это бы значительно усложнило код и увеличило его размер. Не ленись, помоги функции - раздели сам те слова, которые надо склонять, и те, которые склонять не надо, а потом собирай их по частям. Смотри внимательнее примеры. Азизу - привет!
62. KazanKokos 7 03.05.17 10:31 Сейчас в теме
(61) да уже тогда сделал. выделил первое слово и все ок. As is очень рад получить от тебя привет :))
63. asdevlog 17.05.17 06:34 Сейчас в теме
Помогите получить из "бригада транспортного обеспечения производственной деятельности" -> "бригады транспортного обеспечения производственной деятельности", т.е. надо получить родительный падеж, инструкция бригады транспортного обеспечения производственной деятельности.
У меня получается "бригады транспортногО обеспечения производственноИ деятельности" (большими буквами указаны ошибки.
64. dr.death 62 21.08.17 10:54 Сейчас в теме
Спасибо за функцию. Можно ли получить из множественного числа единственное (наоборот можно) именительного падежа существительного? Например: "Товары"->"Товар", "Сумки"->"Сумка"?
82. tdkintel 08.08.18 09:14 Сейчас в теме
(64)
получить из множественного числа единственное


Подскажите пожалуйста, Вам удалось найти решение?
65. shadowcpu 21.09.17 11:54 Сейчас в теме
Добрый день!
Если не сложно - помогите с двумя вопросами:
1) Первая ситуация:
Если использовать конструкцию - daСклонение("^1500 рубль", "Р", , "Ч", "абвГ");
то получается - 1500-сот рублей
А если написать - daСклонение("^1500 рубль", "Р", , "Ч", "абвГ");
то получается - 1500 рубля
А нужно - 1500 рублей
Как этого добиться?
Может есть возможность каким то префиксом указать что переводить число в слова не надо, но при это склонять валюту надо по числительному.
Или может есть возможность отдельно для слова указать использовать множественное число при склонении или нет?

2) Вторая ситуация:
У меня почему то неправильно склоняется конструкция
daСклонение("(1000) рубль", "Р", , "Ч", "абвГ");
В моём понимании должно получиться - (одной тысячи) рублей.
А получается - (одной тысячи) рубля.
Что я делаю не так?

Очень надеюсь на ответы.
66. newold2 123 09.11.17 18:55 Сейчас в теме
Работа весьма серьёзная, Автору спасибо. Скачал, пока не проверял, но подход нравиться. Также нравиться возможность тестирования.
84. daMaster 195 03.10.18 14:48 Сейчас в теме
67. Petrosyanc 5 10.11.17 08:57 Сейчас в теме
68. Katty_K 18.12.17 09:13 Сейчас в теме
Простите за глупые вопросы, но как эту функцию использовать, "подключить" к своей конфигурации?
78. daMaster 195 25.02.18 20:51 Сейчас в теме
(68) Попросите программиста 1С, он без труда сможет это сделать.
69. Fragster 857 19.12.17 18:40 Сейчас в теме
Может, пора выложить на GIT?
72. pallid 188 22.02.18 13:32 Сейчас в теме
(69) @daMaster может и в правду уже разместить на каком нибудь гит сервисе Вашу работы.
Меня уже ни раз выручала эта функция. https://infostart.ru/public/789442/
но в последнее время появилась необходимость добавлять правила
73. daMaster 195 22.02.18 16:37 Сейчас в теме
(72) Надо бы время найти, допилить новую версию, несколько идей появилось, но руки пока не доходят. А с чем связана необходимость в новых правилах? На каких лексических конструкциях она спотыкается? И в чем прикол гита, неужели кто-то там будет связываться с 1С-ной разработкой и допиливать ее?
74. pallid 188 22.02.18 16:49 Сейчас в теме
(73) склоняю подразделения

УПРАВЛЕНИЕ
ОБРАЗОВАНИЕ
спотыкаются об правилоД = |; Е/И/Ы/Ю/; П; 0; ; ; ; ; ;

пришлось решать предправилом
"; *УПРАВЛЕНИЕ/*ОБРАЗОВАНИЕ/; ; 1; я; ю; е; ем; и;


БУХГАЛТЕРИЯ
АДМИНИСТРАЦИЯ
Вывел в предправило из за того что потом Начальник управления склонялся не правильно
|; *БУХГАЛТЕРИЯ/*АДМИНИСТРАЦИЯ/; ; 1; и; и; ю; ей; ей";


ТЕЛЕКАНАЛ
"; АЛ/; ; 0; а; у; ; ом; е;

СЛУЖБА
|; ЖБА/; ; 1; ы; е; у; ой; е;";


daСклонение(Подразделение, "Р", ,"Д");

75. pallid 188 22.02.18 16:52 Сейчас в теме
(73) И в чем прикол гита, неужели кто-то там будет связываться с 1С-ной разработкой и допиливать ее?

будут
вот примеры
https://github.com/xDrivenDevelopment
https://github.com/silverbulleters
https://github.com/oscript-library
https://github.com/BlizD/Tasks
76. daMaster 195 22.02.18 19:57 Сейчас в теме
(74) Да, про подразделения во время создания первой версии я даже не задумывался, следовательно, не тестировал правила склонения для них. Сделать нормальные правила для подразделений как раз в планах на новую версию. В гит не хочется сырую версию выкладывать, постараюсь сам допилить сначала, но если, скажем, за год с даты данного поста я так и не найду время, то любой заинтересованный может сам выложить туда)
80. pallid 188 08.05.18 08:56 Сейчас в теме
(76) выложил https://github.com/pallid/daSklonenie правда переделал немного чтоб и на oscript работало
daMaster; +1 Ответить
70. ДмитрийС 16.02.18 08:39 Сейчас в теме
Автору огромное спасибо! Понимаю, что обработка написана давно, но в качестве пожелания: можно ли включить еще и анализ числа (множественное или единственное) ?

А то к примеру "Один санки" в родительном падеже выглядит как "Одного санки", вместо "Одних санок" ))
77. Samarkan63 24.02.18 18:57 Сейчас в теме
79. Tavisdm 28.03.18 13:01 Сейчас в теме
81. Dmitriy_Kolesnikov 06.06.18 02:19 Сейчас в теме
daСклонение("доверенность №5 на право подписи от 5 мая 2018 года", "Р", , "В");

Результат в мужском роде: "доверенности №5 на права подписи ота 5 мой 2018 годы"
Результат в женском роде: "доверенности №5 на право подписи от 5 мой 2018 годы"

Что делать?
83. daMaster 195 03.10.18 14:42 Сейчас в теме
(81) Данная функция - все-таки не искусственный интеллект, она не может разбирать сложное предложение на составляющие - это слишком бы усложнило алгоритмы. Морфер это может делать, но вы видели его исходный код и словарную базу?) Вы должны сами помочь функции в разборе фразы, передавая для склонения только нужные части предложения. В вашем случае это будет выглядеть так:

Результат = daСклонение("доверенность", "Р", , "В") + " №5 на право подписи от 5 мая 2018 года";
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Москва
зарплата от 80 000 руб.
Полный день

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
зарплата от 80 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
По совместительству