Имя: Пароль:
1C
1С v8
Изменение окончаний в зависимости от количества покупателей
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,"ь", "я", "ей"))

А еще можно курить ЧислоПрописью.