Страница 1 из 1

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

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

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

Добавлено: 12 мар 2015, 12:37
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

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

Добавлено: 12 мар 2015, 13:13
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.

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

Добавлено: 12 мар 2015, 13:55
Espada
Спасибо. Примерно понял, про что вы) сейчас буду пробовать)