Как склоняется должность через тире

Опубликовано: 12.03.2025

Склонение сложных составных слов. Развитие языка не ос­танавливается ни на миг. Он гибок и изменчив, поскольку иначе утратил бы роль главного средства человеческого обще­ния. Особенно быстро и непосредственно реагирует на все происходящее в жизни людей лексика — словарный состав языка. Любое новое явление в области политики, науки, ис­кусства, быта, моды и другой должно обрести имя. Так воз­никают новые слова. Некоторые из них вскоре забываются, другие остаются в языке надолго.

Один из путей образования новых слов — сложение. Со­единяться могут основы с использованием соединительных гласных, иногда также с участием суффиксов (сельское + хо­зяйство = сельскохозяйственный), части основ (туристическая + + база = турбаза), начальные буквы слов (Всероссийский вы­ставочный центр = ВВЦ). Возможно и сложение целых слов. Это особенно часто происходит, когда существует потреб­ность в составном наименовании нового объекта, соединяю­щего в себе признаки двух предметов. Так возникли в разное время широко употребительные сегодня слова плащ-палатка, вагон-ресторан, диван-кровать и др.

Употребление таких терминов сопряжено с определенными трудностями. Во-первых, в каждом конкретном случае следует определить, как склоняется состоящее из двух частей слово: надо ли изменять по падежам обе части или только одну. Например, какой вариант предпочесть: сообщить генералу-лейтенанту или сообщить генерал-лейтенанту?

Во-вторых, бывает непросто выбрать форму ска­зуемого или определения при подлежащем, выражен­ном составным наименованием. Слова, вошедшие в состав нового термина, могут относиться к разным грамматическим родам. Как правильно: новый плащ-палатка или новая плащ-палатка?

Эти вопросы нельзя отнести к числу окончательно решен­ных. Речь идет об относительно новых словах. Традиция их употребления только формируется, поэтому возникают неиз­бежные разночтения.

Столкнувшись с трудностями при использовании сложносоставных наименований, нужно избрать определенную последо­вательность действий:

1) установить, сколько частей слова склоняется;

2) если склоняются обе части, определить грамматический род по первому слову (платье-костюм — у меня нет платья-костюма — у нее появилось новое платье-костюм);

3) если склоняется только вторая часть, грамматический род определяется по второму слову (кафе-мороженое открыто).

Однако эти рекомендации нельзя назвать исчерпывающими. Далеко не всегда мы в состоянии с уверенностью сказать, обе ли части слова склоняются. Наиболее верный способ ответить на этот вопрос — обратиться к словарю. Правда, толковый словарь русского языка может помочь не во всех случаях. Как уже ска­зано выше, большая часть этих слов возникла относительно недавно и не успела попасть в словари. Другие отмечены слова­рем, но им не посвящены отдельные статьи, содержащие грам­матическую информацию. Так, слово диван-кровать приведено в «Словаре русского языка С.И. Ожегова» (изд. 14) в статье «ди­ван», слово летчик-космонавт — в статье «летчик»; при этом информация о склонении отсутствует. Полезным может оказать­ся «Словарь трудностей русского языка» Д.Э. Розенталя и М.А. Теленковой. В нем слова, склонение которых вызывает затруднения, приводятся в форме как именительного, так и ро­дительного падежа; при необходимости указывается также грам­матический род: «генерал-майор, генерал-майора», «кресло-кровать, кресла-кровати, ср.»*

* Розенталь Д.Э., Теленкова М.А. Словарь трудностей русского языка, изд. 3-е. М., 1984, с. 108, 239.

Но как быть, когда под рукой нет необходимого словаря? Что делать, если слово относится к числу недавних новообразований или является узкоспециальным и потому не зафиксиро­вано общедоступными словарями? В этом случае автор пособия «Практическая стилистика русского языка» Д.Э. Розенталь ре­комендует руководствоваться прежде всего смыслом термина. Чтобы решить вопрос о склонении и грамматическом роде, надо установить, какое из двух слов, вошедших в состав наименова­ния, оказывается ведущим, т.е. концентрирует в себе основное содержание понятия: «. ведущим. является то слово, которое выражает более широкое понятие или конкретно обо­значает предмет, например: Кафе-столовая отремонтирована (столовая — более широкое понятие). Кресло-кровать стояло в углу (мыслится один из видов кресел, вторая часть выступает в роли уточняющей). »*.

* Розенталь Д.Э. Практическая стилистика русского языка, изд. 3-е. — М., 1974, с. 230.

Отмечается также, что чаще всего ведущее слово стоит на первом месте и обе части термина склоняются. Если же, напро­тив, ведущим является второе слово («Роман-газета» — издание, публикующее романы), то склоняется только вторая часть: Про­читать в «Роман-газете».

Аналогично предлагает решать вопрос о склонении и роде сложносоставных слов К.С. Горбачевич — автор пособия «Нор­мы современного русского литературного языка». Он различает составные и слитные слова. Сами названия указывают на раз­ницу между типами двойных терминов:

• в составных сложных словах каждый элемент несет самостоятельную информацию, причем вторая часть вос­принимается как определение к первой: телефон-автомат (автоматический телефон);

• слитные сложные слова обозначают единое, факти­чески нерасчленимое понятие; основная смысловая нагрузка падает на вторую часть: дизель-мотор (дизель­ный мотор)*.

* Горбачевич К.С. Нормы современного русского литературного языка, изд. 3-е. — М„ 1989, с. 148.

Особо подчеркивается, что наименования лиц по профессии, должности, чину, званию (премьер-министр, генерал-полковник и др.), а также специальные термины (эхо-импульс, грамм-масса и др.) обычно представляют собой слитные сложные слова.

В соответствии со смыслом определяются грамматические характеристики слов:

• в составных сложных склоняются обе части и грам­матический род соответствует первой (в кресле-кровати — ср. р., встреча-банкет состоялась);

в слитных сложных склоняется только вторая часть и по ней устанавливается род (спросить у шеф-повара, ди­визионная штаб-квартира).

Важно помнить о том, что перечисленные правила не имеют абсолютного характера. Они рассчитаны на человека, обладающего языковым чутьем, способного самостоятельно анализиро­вать смысл и определять грамматические свойства слова. Живая речевая практика порой противоречит языковой теории. В не­принужденной устной речи проявляется тенденция к склонению только второй части составного наименования (в вагон-ресто­ране, на диван-кровати и т.п.). Подобные колебания могут с тече­нием времени повлиять на грамматические характеристики слова. Однако в современной официально-деловой речи, которая в це­лом строго нормирована, эти варианты могут не учитываться. Ав­тор и редактор текста документа должны ориентироваться не на речевую стихию, а на литературную языковую норму.

Полные наименования федеральных органов исполнительной власти используются при подготовке:

Сокращенные наименования федеральных органов исполнительной власти используются при подготовке:

Слова министерство, служба, агентство пишутся со строчной буквы во множественном числе и не в качестве имен собственных: Предложить агентству рассмотреть вопрос о…; По согласованию с министерствами…

НАИМЕНОВАНИЯ ОРГАНИЗАЦИЙ, УЧРЕЖДЕНИЙ И ПРЕДПРИЯТИЙ

НАИМЕНОВАНИЯ ПАРТИЙ, ОБЩЕСТВЕННЫЙ ОРГАНИЗАЦИЙ, ПРОФЕССИОНАЛЬНЫХ СОЮЗОВ

НАИМЕНОВАНИЯ МЕЖДУНАРОДНЫХ ОРГАНИЗАЦИЙ И ОРГАНИЗАЦИЙ ЗАРУБЕЖНЫХ СТРАН

В некоторых случаях, главным образом в специальной литературе, используется как полное, так и сокращенное, на языке оригинала, название организации: компания «Microsoft».

Если название зарубежной организации не имеет широкой известности, в тексте документа целесообразно дать название на русском языке, а в скобках – на языке оригинала: Международная организация стандартизации (International Organization for Standardization ISO).

НАИМЕНОВАНИЯ СУБЪЕКТОВ РОССИЙСКОЙ ФЕДЕРАЦИИ

НАИМЕНОВАНИЯ ДОЛЖНОСТЕЙ, ВОИНСКИХ И ПОЧЕТНЫХ ЗВАНИЙ, УЧЕНЫХ СТЕПЕНЕЙ

С прописной буквы пишутся все слова, кроме служебных, в высших церковных должностях: Святейший Патриарх Московский и всея Руси, Патриарший Местоблюститель, Святейший Папа Римский, Святейший Католикос Востока и Митрополит Маланкарский.

Почетные звания пишутся с прописной буквы и в кавычках при их установлении и присвоении: Установить почетное звание «Народный артист Российской Федерации. ».

НАЗВАНИЯ ДОКУМЕНТОВ

Предшествующее сложное прилагательное, образованное от названий стран, заключивших договор, пишется со строчной буквы: российско-французский Договор о сотрудничестве.

Со строчной буквы пишется наименование проекта законодательного акта: проект федерального конституционного закона «О. », проект указа Президента Российской Федерации «О…», проект закона города Москвы «О …».

При упоминании в тексте Конституции Российской Федерации, кодексов Российской Федерации, а также конституций (уставов) субъектов Российской Федерации дата их принятия и номер, как правило, не приводятся: Конституция Российской Федерации, Бюджетный кодекс Российской Федерации, Устав города Москвы.

В текстах многостраничных документов после первого полного наименования документа вводится его сокращенное наименование в скобках, далее в тексте документа используется сокращенное наименование документа, которое пишется с прописной буквы: 1.1. Инструкция о документационном обеспечении управления Министерства природных ресурсов Российской Федерации (далее – Инструкция) разработана в соответствии с…

НАЗВАНИЯ ОРДЕНОВ, МЕДАЛЕЙ, ЗНАКОВ ОТЛИЧИЯ

ГЕОГРАФИЧЕСКИЕ НАЗВАНИЯ И НАЗВАНИЯ ГОСУДАРСТ

Если в составе иноязычного названия есть родовое географическое понятие, вошедшее в русский язык в качестве нарицательного существительного (фьорд, каньон, стрит, сквер), то оно пишется со строчной буквы: Уолл-стрит, Беркли-сквер; в остальных случаях принято написание с прописной буквы: Йошкар-Ола (ола – город), Сьерра-Невада (сьерра – горная цепь), Рио-Колорадо (рио – река). Предлоги, артикли, частицы в начале названия пишутся с прописной буквы и присоединяются дефисом: Сан-Франциско, Сен-Готард, Санта-Крус. Служебные слова, находящиеся в середине географического названия, соединяются двумя дефисами и пишутся со строчной буквы: Франкфурт-на-Майне, Рио-де-Жанейро, Шуази-ле-Руа, Сан-Франциско-де-ла-Колетта.

Пишутся через дефис названия государств: Коста-Рика, Сьерра-Леоне, Сан-Марино, Гвинея-Бисау, Кабо-Верде, Кот-д’Ивуар и др.

ЕДИНИЦЫ АДМИНИСТРАТИВНО-ТЕРРИТОРИАЛЬНОГО ДЕЛЕНИЯ

ПРАЗДНИКИ, ЗНАМЕНАТЕЛЬНЫЕ ДАТЫ

НАЗВАНИЯ ЛИТЕРАТУРНЫХ ПРОИЗВЕДЕНИЙ И СРЕДСТВ МАССОВОЙ ИНФОРМАЦИИ

Здравствуйте! Подскажите, пожалуйста, нормы написания промежутков месяцев или дней недели.

Вот временной промежуток из цифр пишется Х—Х (знак-тире-знак, без пробелов), а как правильно написать "сентябрь-декабрь" или "понедельник-пятница". Через дефис? Через тире с пробелами? Тире без пробелов?

И ещё в случае, например, таком (о периоде работы):
пн. — птн. | пн.—птн. | пн.-птн. ?

Или:
"Выход альбома планируется в феврале-апреле. " (тире, дефис?).

Если кто-нибудь даст ссылку на правило, то будет вообще замечательно. Заранее всем спасибо.

Comments

Тире - если обозначается точный количественный или временной промежуток, а дефис - если приблизительный. В вашем примере, мне кажется, временной промежуток приблизительный: то ли в феврале выйдет альбом, то ли в марте, то ли в апреле. Или я ошибаюсь? Если нет, то - дефис.

Про пробелы: тут рекомендации разных справочников расходятся. В большинстве современных всё однозначно: между словами тире всегда ставится с пробелами. Однако старые корректоры утверждают, что Гиленсон рекомендует употреблять тире без пробелов при обозначении интервалов, промежутков, маршрутов, отрезков пути и пр. Я не могу ни подтвердить их правоту, ни опровергнуть: у меня только электронная версия справочника Гиленсона в формате *.txt, так что неизвестно, как в оригинале выглядели примеры. "Бумажного" же потрепанного Гиленсона я видела 15 лет назад.

Ну почему же - всегда приблизительность? Вы же сами привели пример четкого указания на конкретный период. Да, чаще всего это лучше выглядит с предлогами, но бывают случаи, когда необходимо написать (точнее, у автора написано и нет оснований менять) именно через тире. Это могут быть научные тексты, таблицы, распоряжения-приказы - да мало ли что еще.

Решать вам. Я, например, всегда правлю на тире с пробелами - как завещал нам Розенталь. Но это у нас согласовано с начальством. Просто для единообразия.

Тире отбивается шпациями во всех случаях, кроме диапазонов. В случае диапазона ставится короткое тире, которое не отбивается шпациями и пробелами.

Пример:
февраль–май 2008 года (короткое тире alt 0150)
Телефон — устройство для. (длинное тире)

Долго обсуждали с моим другом верстальщиком. Он посоветовал так:

цифры: 10–20 (короткое прибитое)
буквы, если по одному слову: май-июнь (дефис)
если по несколько слов: двадцать восемь — тридцать три (длинное отбитое)

Я согласен, что так смотрится очень хорошо, хотя это небольшое исключение из правил.

Период, ограниченный пределами двух лет или года и десятилетия
В обычных изданиях:
В 1981—1985 гг. (не: 1981–85 гг. или 1981-85 гг.); [здесь без пробелов]
В период 1950 г. — 1960-е гг. (год и десятилетие). [здесь с пробелами, ибо разные величины]

Цитируется по книге:
Справочник издателя и автора: Редакционно-изд. оформление издания / А. Э. Мильчин, Л. К. Чельцова. — 2-е изд., испр. и доп. — М. : ОЛМА-Пресс, 2003. — 800 с.
ISBN 5-224-04565-7
Это самая толковая книга для корректоров и издателей на сегодняшний день.

Вот ещё нашёл (с. 115):
Употребление тире. Тире в качестве знака интервала значений рекомендуется ставить:
1. При словесной форме чисел (прописью) в изданиях худож. лит., а также близких к ней. Напр.: . длиной пять — десять метров. При этом, как и обычно между словами, тире по техн. правилам набора, должно быть отбито от слов на 2 п., что и должно быть обозначено в оригинале.
2. В тексте изданий общественно-полит., гуманитарной и подобной лит. Напр.: План выполнялся на 110—115 процентов; 30—35 тыс. юношей и девушек. При этом, как и обычно между числами в цифровой форме, тире, по техн. правилам набора, не должно отбиваться от цифр.

Думаю, что аналогично (через тире без пробелов) пишутся дни недели:
пн—пт
Высекаемые слова — слова, в которых высечены буквы и (или) слоги, кроме начальных и конечных букв, а оставшиеся стянуты в сокращённое слово, пишутся без точек при сокращении: млрд, млн, по аналогии, скорее всего, без точек также пишутся и дни недели – пн, вт, ср, чт, пт, сб, вс.

Короткие тире я обычно использую вместо длинных по всему тектсу издания, так как они выглядят в колонках симпатичнее и лучше воспринимаются читателем для всех шрифтов.

Слово трудодень пишется слитно.

  1. Названия промежуточных стран света, русские и иноязычные , например: ceверо-восток и т. п., норд-ост и т. п.
  1. Сочетания слов, имеющие значение существительных, если в состав таких сочетаний входят:
    1. а) глагол в личной форме, например: не-тронь-меня (растение), любишь-не-любишь (цветок);
    2. б) союз, например: иван-да-марья (растение);
    3. в) предлог, например: Ростов-на-Дону, Комсомольск-на-Амуре, Франкфурт-на-Майне.
    1. Составные фамилии, образованные из двух личных наименований, например: Римский-Корсаков, Скворцов-Степанов, Мамин-Сибиряк, Мендельсон-Бартольди, Андерсен-Нексе.

    О выборе между строчной и прописной буквами в таких фамилиях и именах см. § 95, примечание 1 .

    1. Иноязычные составные фамилии с первой частью Сен- и Сент- , например: Сен-Симон, Сен-Жюст, Сен-Санс, Сент-Бёв. Так же пишутся восточные (тюркские, арабские и т. п.) личные наименования с начальной или конечной составной частью, обозначающей родственные отношения, социальное положение и т. д., например: Ибн-Фадлан, Кёр-оглы, Турсун-заде, Измаил-беи, Осман-паша.

    Примечание 1. Составные имена с первой частью дон- пишутся через дефис только в тех случаях, когда вторая, основная часть имени в русском литературном языке отдельно не употребляется, например: Дон-Жуан, Дон-Кихот. Но если слово дон употребляется в значении «господин», оно пишется раздельно, например: дон Педро, дон Базилио.

    Примечание 2. Артикли и частицы, входящие в состав иноязычных фамилий, пишутся отдельно, без дефиса, например: фон Бисмарк, ле Шaпелье, де Костер, де Валера, Леонардо да Винчи, Лопе де Вега, Бодуэн де Куртене, фон дер Гольц. Артикли и частицы, без которых фамилии данного типа не употребляются, пишутся через дефис, например: Ван-Дейк.

    В русской передаче некоторых иноязычных фамилий артикли и частицы пишутся слитно, хотя в соответствующих языках они пишутся отдельно, например: Лафонтен, Лагарп, Декандоль, Делиль.

    Примечание 3. Не соединяются между собой дефисами имена разных категорий, например римские Гай Юлий Цезарь, подобно соответствующим русским имени, отчеству и фамилии.

    Примечание 4. Личные имена и фамилии, соединённые с прозвищами, пишутся с последними раздельно, например: Илья Муромец, Всеволод Третий Большое Гнездо, Ванька Каин, Муравьёв Вешатель.

    1. Географические названия, состоящие:
      1. а) из двух существительных, например: Орехово-Зуево, Каменец-Подольск, Сердце-Камень (мыс);
      2. б) из существительного и последующего прилагательного, например: Могилёв-Подольский, Гусь-Хрустальный, Москва-Товарная;
      3. в) из сочетания артикля или частицы с знаменательной частью речи, например: Ле-Крезо (город), Ла-Каролина (город), Де-Кастри (залив).

      Примечание. Раздельно пишутся географические названия:

      1. а) состоящие из прилагательного и следующего за ним существительного или из числительного и следующего за ним существительного, например: Белая Церковь, Нижний Тагил, Великие Луки, Ясная Поляна, Семь Братьев;
      2. б) представляющие собой сочетания имени и фамилии, имени и отчества, например: посёлок Лев Толстой, станция Ерофей Павлович.
      1. Названия населённых пунктов, в состав которых в качестве первой части входят: и т. п., а также некоторые названия населенных пунктов с первой и т. п., кроме тех, слитное написание которых закрепилось в справочных изданиях, на географических картах и т. п., например: Усть-Абакан, Соль-Илецк, Верх-Ирмень, Ново-Вязники, Нижне-Гнилое, но: Новосибирск, Малоархангельск, Старобельск, Новоалексеевка, Верхнеколымск, Нижнедевицк.
      1. Составные географические названия, образованные как при помощи соединительной гласной, так и без неё из названий частей данного географического объекта, например: Австро-Венгрия, Эльзас-Лотарингия, но: Чехословакия.

      Примечание. Данное правило не распространяется на передаваемые русскими буквами составные иноязычные названия литературных произведений, газет, журналов, предприятий и т. п., которые пишутся раздельно, если выделяются в тексте кавычками, например: «Стандарт Ойл», «Коррьеро делла Рома».

      1. Пол- (половина) с последующим родительным падежом существительного, если существительное начинается с гласной буквы или согласной л, например: пол-оборота, пол-яблока, пол-лимона, но: полметра, полчаса, полкомнаты; через дефис пишутся также сочетания пол- с последующим именем собственным, например: пол-Москвы, пол-Европы. Слова, начинающиеся всегда пишутся слитно, например: в полуверсте от города, полустанок, полукруг.
      1. Слова, первой составной частью которых являются иноязычные элементы например: обер-мастер, унтер-офицер, лейб-медик, штаб-квартира, вице-президент, экс-чемпион.

      О слитном написании контр- см. § 76 .

      Также пишется через дефис контр-адмирал (здесь контр- имеет не то значение, при котором оно пишется слитно).

      О выделении приложения запятыми см. § 152 .

      1. Определяемое слово со следующим непосредственно за ним однословным приложением, например: мать-старуха, Маша-резвушка, Аника-воин.

      Примечание 1. Между определяемым словом и стоящим перед ним однословным приложением, которое может быть приравнено по значению к прилагательному, дефис не пишется, например: красавец сынишка.

      Примечание 2. Если определяемое слово или приложение само пишется через дефис, то между ними дефис не пишется, например: социал-демократы меньшевики.

      Как-то на одном из проектов столкнулся с такой ситуацией, когда заказчику потребовалось в отчетах, формируемых системой DIRECTUM, склонять ФИО и должности работников организации по падежам. Данную проблему, на мой взгляд, можно было решить несколькими путями:

      1. Добавить на карточку справочника Работники закладку с дополнительными реквизитами, куда в ручную будут вбиваться ФИО работника в различных падежах. Затем в отчетах выводить информацию из этих реквизитов в зависимости от нужного падежа.
      2. Разработать свою функцию, которая бы умела склонять ФИО работников и их должности по падежам.
      3. Использовать какое-нибудь готовое решение.

      Первый вариант отпал сразу, так как потребует значительной нагрузки на ответственных, следящих за актуальностью оргструктуры предприятия. Второй вариант тоже отпал, так как потребует значительных трудозатрат. Следовательно, остается только третий вариант. Порыскав по просторам интернета, была найдена библиотека функций Padeg.dll.

      Данная библиотека предназначена для преобразования фамилии, имени и отчества, наименования должности или подразделения, заданных в именительном падеже в форму любого другого падежа, а также для восстановления именительного падежа для ФИО, записанного в произвольном падеже. Склонение ФИО выполняется по правилам склонения имен собственных, принятых в русском языке. ФИО для склонения может быть задано одной или тремя строками при склонении и одной строкой – при восстановлении именительного падежа. Наименование должности или подразделения задаются одной строкой.

      Список функций библиотеки Padeg.dll:

      1. функции склонения ФИО, заданного в формате "фамилия имя отчество"

      • function GetFIOPadeg(pLastName, pFirstName, pMiddleName: PChar; bSex: Boolean; nPadeg: LongInt; pResult: PChar; var nLen: LongInt): Integer; stdcall; export; - Помещает в буфер (pResult) размера (nLen) результат склонения фамилии (pLastName), имени (pFirstName) и отчества (pMiddleName) рода (bSex) в заданный падеж (nPadeg). Значение функции – результат выполнения операции преобразования.
      • function GetFIOPadegAS(pLastName, pFirstName, pMiddleName: PChar; nPadeg: LongInt; pResult: PChar; var nLen: LongInt): Integer; stdcall; export; - Помещает в буфер (pResult) размера (nLen) результат склонения фамилии (pLastName), имени (pFirstName) и отчества (pMiddleName) в заданный падеж (nPadeg) с автоматическим определением рода. Значение функции – результат выполнения операции преобразования.
      • function GetFIOPadegFS(pFIO: PChar; bSex: Boolean; nPadeg: LongInt; pResult: PChar; var nLen: LongInt):Integer; stdcall; export; - Помещаетвбуфер(pResult) размера(nLen) результатсклоненияфамилииименииотчества, записанныходнойстрокой(pFIO), рода(bSex) взаданныйпадеж(nPadeg). Значение функции – результат выполнения операции преобразования.
      • function GetFIOPadegFSAS(pFIO: PChar; nPadeg: LongInt; pResult: PChar; var nLen: LongInt):Integer; stdcall; export; - Помещаетвбуфер(pResult) размера(nLen) результатсклоненияфамилииименииотчества, записанныходнойстрокой(pFIO), взаданныйпадеж(nPadeg) савтоматическимопределениемрода. Значение функции – результат выполнения операции преобразования.

      2. функции склонения ФИО, заданного в формате "имя фамилия"

      • function GetIFPadeg(pFirstName, pLastName: PChar; bSex: Boolean; nPadeg: LongInt; pResult: PChar; var nLen: LongInt): Integer; stdcall; export; - Помещает в буфер (pResult) размера (nLen) результат склонения имени (pFirstName) и фамилии (pLastName) рода (bSex) в заданный падеж (nPadeg). Значение функции – результат выполнения операции преобразования.
      • function GetIFPadegFS(pIF: PChar; bSex: Boolean; nPadeg: LongInt; pResult: PChar; var nLen: LongInt): Integer; stdcall; export; - Помещаетвбуфер(pResult) размера(nLen) результатсклоненияимениифамилии(pIF), записанныходнойстрокой, рода(bSex) вуказанныйпадеж(nPadeg). Значение функции – результат выполнения операции преобразования.

      3. функция восстановления именительного падежа

      • function GetNominativePadeg(pFIO, pResult: PChar; var nLen: LongInt): Integer; stdcall; export; - Помещает в буфер (pResult) размера (nLen) восстановленный именительный падеж для ФИО, записанного одной строкой (pFIO) в произвольном падеже. Значение функции – результат выполнения операции преобразования.

      4. функции склонения наименований должностей и подразделений

      • function GetAppointmentPadeg(pAppointment: PChar; nPadeg: LongInt; pResult: PChar; var nLen: LongInt): Integer; stdcall; export; - Помещает в буфер (pResult) размера (nLen) результат склонения наименования должности (pAppointment) в заданный падеж (nPadeg). Значение функции – результат выполнения операции преобразования.
      • function GetFullAppointmentPadeg(pAppointment, pOffice: PChar; nPadeg: LongInt; pResult: PChar; var nLen: LongInt): Integer; stdcall; export; - Помещаетвбуфер(pResult) размера(nLen) результатобъдинениянаименованийдолжности(Appointment) иподразделения(Office) впадеже(nPadeg). Значение функции – результат выполнения операции преобразования.
      • function GetOfficePadeg(pOffice: PChar; nPadeg: LongInt; pResult: PChar; var nLen: LongInt): Integer; stdcall; export; - Помещаетвбуфер(pResult) размера(nLen) результатсклонениянаименованияподразделения(pSrc) взаданныйпадеж(nPadeg). Значение функции – результат выполнения операции преобразования.

      5. сервисные функции

      • function GetSex(pMiddleName: PChar): Integer; stdcall; export; - Определяет род по отчеству, записанному в произвольном падеже.
      • function GetPadegID(pFIO: PChar): Integer; stdcall; export; - Определяет номер падежа в котором записано ФИО(pFIO).
      • function GetFIOParts(pFIO: PChar; Parts: PPartsFIO): Integer; stdcall; export; - Выделяет из ФИО (pFIO) его составляющие. Результат помещается в буфер (Parts).

      6. функции работы со словарем исключений

      • function UpdateExceptions: Boolean; stdcall; export; - Служит для принятия изменений, сделанных в файле словаря исключений во время работы приложения, использующего библиотеку.
      • function GetExceptionsFileName(pResult: PChar; var nLen: LongInt): Integer; stdcall; export; - Возвращает в буфере (pResult) размера (nLen) полное имя словаря исключений.
      • function SetDictionary(FileName: PChar): Boolean; stdcall; export; - УстанавливаетвкачестверабочегословарьFileName.

      Процесс установки библиотеки сводится к следующему:

      1. Скопировать файл Padeg.dll в директорию C:\Windows\System32\
      2. Скопировать файл Except.dic в директорию C:\Program Files\Microsoft Office\Office10\. Если путь к каталогу Office отличается от приведенного или принято решение разместить файл словаря в другом месте, то в этом случае перед установкой программы потребуется редактирование параметра "ExceptionDicDir" в файле Padeg.reg
      3. Выполнить файл Padeg.reg для внесения служебной информации в системный реестр Windows
      4. Для обеспечения работы с сервером автоматизации необходимо зарегистрировать его, выполнив в командной строке: regsvr32.exe padeg.dll

      Пример работы с библиотекой по технологии COM:

      Результат работы примера:


      Пример работы с библиотекой через функцию CallProcedure:

      Результат работы примера:


      Результаты тестирования нескольких продуктов с аналогичной заявленной функциональностью:

      % ошибок

      Для некоммерческого использования библиотека распространяется бесплатно.

      ***** Обновление от 17.10.2012 *****

      Появилось аналогичное по функционалу техническое решение DIRECTUM:

      следует, что у вас как раз коммерческое использование.

      В любом случае, при публикации было бы справедливым указать авторов продукта: Склонение фамилий, имен и отчеств по падежам Библиотека функций.

      В приложенном архиве pd_Library.zip в файле License.txt указано:

      Настоящие лицензионное соглашение распространяется только на библиотеку версии 3.X и выше.
      Лицензия на библиотеку версии ниже 3.0 не изменяется.

      Когда я использовал эту библиотеку, она была еще свободно распространяемой. К сожалению сейчас она действительно для коммерческого использования стала платной. Но судя по ценам взятым из прайса:

      - Лицнзия для коммерческого использования Программы - 500 руб РФ
      - Корпоративная лицензия для коммерческого использования Программы - 1000 руб РФ
      - Исходные тексты *) - 1000 руб РФ

      я вполне могу позволить купить её себе и использовать в своих разработках. Для сравнения тот же морфер стоит 7500 руб.

      Ну а Директумовцы вполне бы могли купить исходники и разработать на их основе ф-ии, которые включили бы в стандартную разработку, чтобы мы не использовали для решения таких задач сторонние продукты. Ну или сами бы чего-нибудь подобное реализовали :)

      З.Ы. Ссылку на авторов продукта в материал добавлю

      Что-то ссылка не работает :(

      Как её в материал добавить правильно?

      Ссылка, вроде, правильная. Это Delphi Kingdom отвечать перестал. Починят.

      А может есть более простые и бесплатные варианты решения данной задачи? Просто на тот момент мне в голову ничего другого не пришло :(

      Кстати у данного решения есть существенный минус, библиотеку придеться регать на всех рабочих местах, где потребуется её использование, правда при наличии АД данная задача решается просто.

      В Диасофте (www.diasoft.ru) используется собственная функция для этих целей, вот её написание на diasoftscript (delphi)

      function GenitiveCase(aSurname, aName, aPatronymic: string): string;
      var
      bMaleSex: Boolean;
      sSurname, sName, sPatronymic: string;
      begin
      Result := '';
      try
      sSurname := AnsiUpperCase(Trim(aSurname));
      sName := AnsiUpperCase(Trim(aName));
      sPatronymic := AnsiUpperCase(Trim(aPatronymic));


      if sPatronymic <> '' then
      bMaleSex := sPatronymic[Length(sPatronymic)] = 'Ч'
      else
      bMaleSex := true;

      // Фамилия
      if Length(sSurname) > 0 then
      begin
      if bMaleSex then
      Case sSurname[Length(sSurname)] of
      'О', 'И', 'Я', 'А': Result := sSurname;
      'Й': Result := LeftStr(sSurname, Length(sSurname) - 2) + 'ОГО';
      else Result := sSurname + 'А';
      end
      else
      case sSurname[Length(sSurname)] of
      'О', 'И', 'Б', 'В', 'Г', 'Д', 'Ж', 'З',
      'К', 'Л', 'М', 'Н', 'П', 'Р', 'С', 'Т',
      'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ь': Result := sSurname;
      'Я': Result := LeftStr(sSurname, Length(sSurname) - 2) + 'ОЙ';
      else Result := LeftStr(sSurname, Length(sSurname) - 1) + 'ОЙ';
      end;
      Result := Result + ' ';
      end;

      // Имя
      if Length(sName) > 0 then
      begin
      if bMaleSex then
      case sName[Length(sName)] of
      'Й', 'Ь': Result := Result + LeftStr(sName, Length(sName) - 1) + 'Я';
      else Result := Result + sName + 'А';
      end
      else
      case sName[Length(sName)] of
      'А': case sName[Length(sName) - 1] of
      'И', 'Г': Result := Result + LeftStr(sName, Length(sName) - 1) + 'И';
      else Result := Result + LeftStr(sName, Length(sName) - 1) + 'Ы';
      end;
      'Я': if sName[Length(sName) - 1] = 'И' then
      Result := Result + LeftStr(sName, Length(sName) - 1) + 'И'
      else
      Result := Result + LeftStr(sName, Length(sName) - 1) + 'И';
      'Ь': Result := Result + LeftStr(sName, Length(sName) - 1) + 'И';
      else Result := Result + sName;
      end; //of case
      Result := Result + ' ';
      end;

      // Отчество
      if Length(sPatronymic) > 0 then
      if bMaleSex then Result := Result + sPatronymic + 'А'
      else Result := Result + LeftStr(sPatronymic, Length(sPatronymic) - 1) + 'Ы';
      except
      end;
      Result := NameCase(Result);
      end;

      function NameCase(aString: string): string;
      var
      iPos: integer;
      s, sTemp: string;
      begin
      Result := '';
      sTemp := AnsiLowerCase(Trim(aString));
      while Length(sTemp) > 0 do
      begin
      s := ChooseWord(sTemp,1);
      Result := Result + ' ' + AnsiUpperCase(LeftStr(s,1)) + RightStr(s, Length(s)-1);
      sTemp := Trim(RightStr(sTemp, Length(sTemp) - Length(s)));
      end;
      Result := Result;
      end;

      Склонение ФИО - как раз не проблема! И решается функцией DIRECTUM без дополнительных средств.

      Уважаемый автор, как будет корректное склонение наименований должностей и подразделений, в которых может быть более 10 слов?

      Например, прослконяется ли с помощью Вашего решения следущее наименование:

      заведующий сектором разработки и внедрения корпоративных проектов Отдела корпоративных информационных систем управления управления автоматизированных систем управления департамента информационных технологий ЗАО "Газпромнефтьбурение".

      Заранее благодарю за ответ.

      Уважаемый Дмитрий! Название подразделений - не ошибка. Как правило на данном предприятии используются сокращенные названия подразделений. Например, "Сектор разработки и внедрения корпоративных проектов ОКИСУ управления АСУ департамента ИТ ЗАО "Газпромнефтьбурение".

      Но в официальных документах наименование пишется полностью. И вот здесь правила склонения применить без человеческого участия практически невозможно. Что скажете?

      Если вы сходите по ссылке, ведущей к авторам продукта, то в пункте 10: "Правила склонения ФИО, реализованные в библиотеке" вы увидите правила, по которым данная библиотека склоняет ФИО. Написание данного функционала с нуля, с учетом всех этих нюансов и правил склонения, в директум своими силами потребует значительных трудозатрат. Я всего лишь предложил уже готовое решение. Впрочем, если вы все тоже самое реализуете средствами директум, то это будет отличное техническое решение :)

      Не совсем понял что имелось ввиду.

      Я специально привел в конце материала табличку с процентом ошибок склонения при применении различных аналогичных продуктов. В данном случае проблему ошибочного склонения можно решить добавлением исключений в файл исключений.

      Вот код, которым я тестировал склонение вышеприведенных должности и наименования подразделения:

      Dolg = 'заведующий сектором разработки и внедрения корпоративных проектов Отдела корпоративных информационных систем управления управления автоматизированных систем управления департамента информационных технологий ЗАО "Газпромнефтьбурение"'
      Rez1 = Decl.GetAppointmentPadeg(Dolg; 1)
      Rez2 = Decl.GetAppointmentPadeg(Dolg; 2)
      Rez3 = Decl.GetAppointmentPadeg(Dolg; 3)
      Rez4 = Decl.GetAppointmentPadeg(Dolg; 4)
      Rez5 = Decl.GetAppointmentPadeg(Dolg; 5)
      Rez6 = Decl.GetAppointmentPadeg(Dolg; 6)

      Podr = 'Сектор разработки и внедрения корпоративных проектов ОКИСУ управления АСУ департамента ИТ ЗАО "Газпромнефтьбурение"'
      Rez11 = Decl.GetOfficePadeg(Podr; 1)
      Rez12 = Decl.GetOfficePadeg(Podr; 2)
      Rez13 = Decl.GetOfficePadeg(Podr; 3)
      Rez14 = Decl.GetOfficePadeg(Podr; 4)
      Rez15 = Decl.GetOfficePadeg(Podr; 5)
      Rez16 = Decl.GetOfficePadeg(Podr; 6)
      EditText("Именительный: "&Rez1&CR&
      "Родительный: "&Rez2&CR&
      "Дательный: "&Rez3&CR&
      "Винительный: "&Rez4&CR&
      "Творительный: "&Rez5&CR&
      "Предложный: "&Rez6&CR&CR&
      "Именительный: "&Rez11&CR&
      "Родительный: "&Rez12&CR&
      "Дательный: "&Rez13&CR&
      "Винительный: "&Rez14&CR&
      "Творительный: "&Rez15&CR&
      "Предложный: "&Rez16)
      Decl = nil

      Результат работы тестового примера:

      Именительный: заведующий сектором разработки и внедрения корпоративных проектов Отдела корпоративных информационных систем управления управления автоматизированных систем управления департамента информационных технологий ЗАО "Газпромнефтьбурение"
      Родительный: заведующего сектором разработки и внедрения корпоративных проектов Отдела корпоративных информационных систем управления управления автоматизированных систем управления департамента информационных технологий ЗАО "Газпромнефтьбурение"
      Дательный: заведующему сектором разработки и внедрения корпоративных проектов Отдела корпоративных информационных систем управления управления автоматизированных систем управления департамента информационных технологий ЗАО "Газпромнефтьбурение"
      Винительный: заведующего сектором разработки и внедрения корпоративных проектов Отдела корпоративных информационных систем управления управления автоматизированных систем управления департамента информационных технологий ЗАО "Газпромнефтьбурение"
      Творительный: заведующим сектором разработки и внедрения корпоративных проектов Отдела корпоративных информационных систем управления управления автоматизированных систем управления департамента информационных технологий ЗАО "Газпромнефтьбурение"
      Предложный: заведующем сектором разработки и внедрения корпоративных проектов Отдела корпоративных информационных систем управления управления автоматизированных систем управления департамента информационных технологий ЗАО "Газпромнефтьбурение"

      Именительный: Сектор разработки и внедрения корпоративных проектов ОКИСУ управления АСУ департамента ИТ ЗАО "Газпромнефтьбурение"
      Родительный: Сектора разработки и внедрения корпоративных проектов ОКИСУ управления АСУ департамента ИТ ЗАО "Газпромнефтьбурение"
      Дательный: Сектору разработки и внедрения корпоративных проектов ОКИСУ управления АСУ департамента ИТ ЗАО "Газпромнефтьбурение"
      Винительный: Сектор разработки и внедрения корпоративных проектов ОКИСУ управления АСУ департамента ИТ ЗАО "Газпромнефтьбурение"
      Творительный: Сектором разработки и внедрения корпоративных проектов ОКИСУ управления АСУ департамента ИТ ЗАО "Газпромнефтьбурение"
      Предложный: Секторе разработки и внедрения корпоративных проектов ОКИСУ управления АСУ департамента ИТ ЗАО "Газпромнефтьбурение"

      Читайте также: