Имя: Пароль:
1C
 
Правильное склонение значения в наименование справочника
0 falselight
 
22.11.19
09:59
Подскажите как правильно просклонять значения, для занесения в наименование справочника.
Делаю функцию, поиска или создания элементов справочника ПериодичностьСобитий.
В функцию передаются параметры Период, ЧислоПериодов, Уточнение.

Они могут принимать значения, -

Период - "Месяц" или "Год"

Уточнение - "Каждые"

ЧислоПериодов - любое число

формировать в зависимости от этого нужно наименования справочника, такие как, -

"Каждые 12 месяцев", "Каждый 1 месяц", "Каждые 5 месяцев", "Каждые 3 месяца"
"Каждые 2 года", "Каждые 5 лет", "Каждые 12 лет" и тд.

Как мне правильно формировать значение наименования исходя от передаваемых параметров ?
2 FIXXXL
 
22.11.19
10:05
кодом сделай соответствие типа
1 - "Каждый %1 месяц"
2 - "Каждые %1 месяца"
и т.д.

ну и далее
СтрШаблон(Соответствие.Получить(ТвоеЧисло), ТвоеЧисло);
3 falselight
 
22.11.19
10:57
так сделал

Функция ВернутьПериодичностьСобытий(Период, ЧислоПериодов, Уточнение)
    Если Не ЗначениеЗаполнено(Период) или Не ЗначениеЗаполнено(ЧислоПериодов) или Не ЗначениеЗаполнено(Уточнение) Тогда
        Возврат 0;
    КонецЕсли;
    ЧислоПериодов = Число(ЧислоПериодов);
    Если (Период = "Месяц" и Уточнение = "Каждые") И
        (ЧислоПериодов = 2 или ЧислоПериодов = 3 или ЧислоПериодов = 4 или ЧислоПериодов = 22 или ЧислоПериодов = 23 или ЧислоПериодов = 24) Тогда
        НаименованиеПериодичности = "Каждые " + ЧислоПериодов + " месяца";
    ИначеЕсли (Период = "Месяц" и Уточнение = "Каждые") И (ЧислоПериодов = 1 или ЧислоПериодов = 21) Тогда
        НаименованиеПериодичности = "Каждый " + ЧислоПериодов + " месяц";    
    ИначеЕсли (Период = "Месяц" и Уточнение = "Каждые") И
        (ЧислоПериодов = 5 или ЧислоПериодов = 6 или ЧислоПериодов = 7 или ЧислоПериодов = 8 или ЧислоПериодов = 9 или ЧислоПериодов = 10 или ЧислоПериодов = 11
        или ЧислоПериодов = 12 или ЧислоПериодов = 13 или ЧислоПериодов = 14 или ЧислоПериодов = 15 или ЧислоПериодов = 16 или ЧислоПериодов = 17 или ЧислоПериодов = 18 или ЧислоПериодов = 19
        или ЧислоПериодов = 20 или ЧислоПериодов = 25) Тогда
        НаименованиеПериодичности = "Каждые " + ЧислоПериодов + " месяцев";
    ИначеЕсли (Период = "Год" и Уточнение = "Каждые") И
        (ЧислоПериодов = 2 или ЧислоПериодов = 3 или ЧислоПериодов = 4 или ЧислоПериодов = 22 или ЧислоПериодов = 23 или ЧислоПериодов = 24) Тогда
        НаименованиеПериодичности = "Каждые " + ЧислоПериодов + " года";
    ИначеЕсли (Период = "Год" и Уточнение = "Каждые") И (ЧислоПериодов = 1 или ЧислоПериодов = 21) Тогда
        НаименованиеПериодичности = "Каждый " + ЧислоПериодов + " год";    
    ИначеЕсли (Период = "Год" и Уточнение = "Каждые") И
        (ЧислоПериодов = 5 или ЧислоПериодов = 6 или ЧислоПериодов = 7 или ЧислоПериодов = 8 или ЧислоПериодов = 9 или ЧислоПериодов = 10 или ЧислоПериодов = 11
        или ЧислоПериодов = 12 или ЧислоПериодов = 13 или ЧислоПериодов = 14 или ЧислоПериодов = 15 или ЧислоПериодов = 16 или ЧислоПериодов = 17 или ЧислоПериодов = 18 или ЧислоПериодов = 19
        или ЧислоПериодов = 20 или ЧислоПериодов = 25) Тогда
        НаименованиеПериодичности = "Каждые " + ЧислоПериодов + " лет";
    КонецЕсли;
    НайденнаяПериодичность = Справочники.ПериодичностьСобытий.НайтиПоНаименованию(НаименованиеПериодичности, 1);
    Если НЕ НайденнаяПериодичность = Справочники.ПериодичностьСобытий.ПустаяСсылка() Тогда
        Возврат НайденнаяПериодичность;
    Иначе
        НоваяПериодичность               = Справочники.ПериодичностьСобытий.СоздатьЭлемент();
        НоваяПериодичность.Наименование  = НаименованиеПериодичности;
        НоваяПериодичность.Уточнение     = Перечисления.УточнениеПериодичности.Каждые;
        НоваяПериодичность.Период        = Перечисления.Периодичность.Месяц;
        НоваяПериодичность.ЧислоПериодов = Число(ЧислоПериодов);
        НоваяПериодичность.Записать();
        //
        Возврат НоваяПериодичность.Ссылка;
    КонецЕсли;
Возврат 0;
КонецФункции
4 falselight
 
22.11.19
11:03
(1) как это в применении бы было ?
5 falselight
 
22.11.19
11:05
(2) что то тоже интересное
6 Дмитрий
 
22.11.19
11:57
Добавь пропись для валюты Каждый месяц. Потом разбирай и вставляй число.
Независимо от того, куда вы едете — это в гору и против ветра!