|
Изменение окончаний в зависимости от количества покупателей |
☑ |
0
MSDOS
24.04.12
✎
12:29
|
Привет всем! Мы печатаем договора из 1с, с помощью шаблонов Word и заполняемых элементов "поле". На каждый тип договора свой шаблон. В договоре может быть различное количество покупателей (1,2,..,N), в следствие чего во всем договоре меняются окончания, поэтому на каждый тип договора создается еще несколько шаблонов, в зависимости от количества покупателей. В связи с ростом различных типов договоров, решили искать способ создания одного шаблона для n-го количества покупателей. Как проще всего менять все окончания?
Делать все слова, меняющие окончания, заполняемыми тоже не выход, потому что их очень много... Возможно кто-то уже решал подобную проблему?
|
|
1
acsent
24.04.12
✎
12:30
|
какие окончания?
|
|
2
MSDOS
24.04.12
✎
12:31
|
1 покупатель оформил утвердил
2 покупателя оформили утвердили и т.д...
|
|
3
comp2006
24.04.12
✎
12:32
|
А нельзя каждое слово шаблона, в котором будут меняться окончания сделать элементом "поле"?
|
|
4
acsent
24.04.12
✎
12:32
|
забей эти слова параметрами
|
|
5
Cube
24.04.12
✎
12:33
|
(0) Список договоров контрагента, именуемый далее ПЕРЕЧЕНЬ ДОГОВОРОВ:
Договор1
Договор2
...
ДоговорN
|
|
6
MSDOS
24.04.12
✎
12:34
|
(4) там заполняемых полей около 40-30 используется... и еще с разными окончаниями 60-70 выйдет... слишком много на мой взгляд...
|
|
7
Злобный Фей
24.04.12
✎
12:34
|
Чисто из любопытства: а че это за договора такие, с множеством покупателей?
|
|
8
MSDOS
24.04.12
✎
12:35
|
(7) покупка дома, квартиры на несколько человек
|
|
9
de Bug
24.04.12
✎
12:49
|
(8) 2 покупателя, в дальнейшем именуемые Потерпевшая сторона, заключили Договор о нижеследующем...
Потерпевшая сторона оформила... утвердила...
|
|
10
dka80
24.04.12
✎
12:54
|
(6) час работы...
|
|
11
MSDOS
24.04.12
✎
13:02
|
(8) интересный вариант, но он не допускается
|
|
12
MSDOS
24.04.12
✎
13:06
|
(10) хочется найти, более оригинальное решение, если оно есть...
|
|
13
orefkov
24.04.12
✎
13:29
|
Вот код на С:
const char* numberSuffix(int number, const char* s1, const char* s24, const char* s590){
int lastDigit = number % 10;
if(lastDigit == 1 && number != 11)
return s1;
if(lastDigit >= 2 && lastDigit <= 4 && (number < 12 || number > 14))
return s24;
return s590;
}
использование:
sprintf(buf, "%s%s", "покупател", numberSuffix(n,"ь", "я", "ей"))
А еще можно курить ЧислоПрописью.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший