Должности в винительном подеже

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Должности в винительном подеже

Сообщение Espada »

Здравствуйте. столкнулся с такой проблемой: При формировании "Приказа на командировки" ФИО и должность должны быть указаны в Творительном(или родительном) подеже! с ФИО я разобрался, а вот с Должностями что-то не выходит. Думал сделать просто замену( типо "Водитель" на "Водителя", "Директор" на "Директора" и т.д.) но должностей много, не самый простой способ :) Может можете посоветовать, что-нибудь попроще?) спасибо
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Должности в винительном подеже

Сообщение RAJAH »

Код: Выделить всё

#ifndef __StringUtils_vih__
#define __StringUtils_vih__

#component "Utils"

   // Падежи
   const
      csNominativeCase      = 1; // Именительный падеж (Кто? Что?)
      csGenitiveCase        = 2; // Родительный падеж (Кого? Чего?)
      csDativeCase          = 3; // Дательный (Кому? Чему?)
      csAccusativeCase      = 4; // Винительный (Кого? Что?)
      csInstrumentativeCase = 5; // Творительный (Кем? Чем?)
      csPrepositionCase     = 6; // Предложный (О ком? О чём?)
   end;
   
   // Части речи
   const
      csUnknownWord   = 0;    // Неопределенное
      csNounWord      = 1;    // Существительное
      csAdjectiveWord = 2;    // Прилагательное      
   end;
   
   
   // Тип данных -> слово и часть речи  
   public type tWordWithType = record
      WordStr  : string;
      WordType : byte;
   end;   
   
   public type StringArray = array [1..1] of string;   

   public objInterface IStringUtils;
      public:
         ////////////////////////////////////////////////////////////////////////
         // Склонение слов и предложений, состоящих из существительных и прилагательных
         // _case - падеж (константа)
         // stopAfterNoun - прекратить склонение после того как наткнулись на существительное
         ////////////////////////////////////////////////////////////////////////   
         function ConvertWordToCase(str : string; _case : byte) : tWordWithType;
         function ConvertStatementToCase(str : string; _case : byte; stopAfterNoun : boolean = false) : string;   
   end;

   public vipInterface StringUtils implements IStringUtils;  
#end
Irina_
Местный житель
Сообщения: 553
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Должности в винительном подеже

Сообщение Irina_ »

Здравствуйте.
Сама не пробовала, но может подойдет следующее.
Компонент Z_Staff. В SpecialPropetiesForG.vih:
#doc
Функция возвращает должность в требуемом падеже
cPersons - ссылка на персону
CasePost - склонение должности : (1 - 6) (1 - именительный ... 6 - предложный)
#end
function GetPersPost (cPersons: comp; CasePost: word; rabDate: date): string;

Не могу сказать, нужны ли для работы данной функции какие-либо условия, например наличие внешних атрибутов к должностям.
О склонении должностей, например, см. в текстовике StaffOrders_res_... описание к ПИР 102.124275.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: Должности в винительном подеже

Сообщение Espada »

Спасибо. Примерно понял, про что вы) сейчас буду пробовать)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Ответить