Имя: Пароль:
1C
 
Как вывести корректное представление года?
0 program345
 
17.04.25
07:01
привет!
Например:
10 лет
15 лет
22 года

есть ли встроенные функции которые позволят это сделать?
1 AlexKimp
 
17.04.25
07:15
(0) ЧислоПрописью.
2 ads55
 
17.04.25
07:52
Не забудь про контекст - "22 года" могут стать "22 лет"
3 AlexKimp
 
17.04.25
08:03
(2) Любопытно. На ум даже не приходит. Можно подробнее?
4 ads55
 
17.04.25
08:04
(3)
1. "Выведен список сотрудников, которым на сегодня исполнилось 22 года."
2. "Выведен список сотрудников, которым на сегодня более 22 лет."
5 AlexKimp
 
17.04.25
08:27
(4) Во дела. Данке шон.
6 maxab72
 
17.04.25
08:49
(4) выводить возраст в секундах.
7 Волшебник
 
17.04.25
09:52
//-------------------------------------------------------------------------------------------
// возвращает число с подписью единиц измерения
//
public function plural(int $count, array $units = ['штука', 'штуки', 'штук']):string
{
	$count10 = $count % 100;
	$count1 = $count10 % 10;

	$unit = match(true) {
		$count1 == 0 || $count1 > 4 || ($count10>9 && $count10 < 21) => $units[2], // штук
		$count1 == 1 => $units[0], // штука
		default => $units[1], // штуки
	};

	return (string)$count . " " . $unit;
}


Пример вызова:
plural($years, array('год', 'года', 'лет'));
8 АгентБезопасной Нацио
 
17.04.25
09:53
(4) написать "более 22 годиков"
9 ads55
 
17.04.25
09:55
(6) Не забудь про контекст -
"Отчет выполнялся около 22 секунд"
"Отчет выполнялся почти 22 секунды" :)
10 laeg
 
17.04.25
09:57
+(9) уже пошла 22 секунда
11 АгентБезопасной Нацио
 
17.04.25
09:58
(9) Закончил выполнение на 22 секунде. Ограничился 22 секундами.
12 ads55
 
17.04.25
10:01
(10) "Уже шла двадцать вторая секунда выполнения отчёта, а отчёт, запланированный к выполнению за двадцать две секунды, так и не выполнился на двадцать второй секунде..." :)
13 Волшебник
 
17.04.25
10:06
В русском языке два множественных числа:
одно окно
два окна
пять окон
14 Волшебник
 
17.04.25
10:50
(7) Перевод на 1С

Функция МножественноеЧисло(Знач Количество, Единицы = Неопределено) Экспорт
    Если Единицы = Неопределено Тогда
        Единицы = Новый Массив;
        Единицы.Добавить("штука");
        Единицы.Добавить("штуки");
        Единицы.Добавить("штук");
    КонецЕсли;
    
    count10 = Количество % 100;
    count1 = count10 % 10;
    
    Индекс = 2;
    Если (count1 = 0 ИЛИ count1 > 4) ИЛИ (count10 >= 10 И count10 <= 20) Тогда
        Индекс = 2;
    ИначеЕсли count1 = 1 Тогда
        Индекс = 0;
    Иначе
        Индекс = 1;
    КонецЕсли;
    
    Возврат Строка(Количество) + " " + Единицы[Индекс];
КонецФункции
15 Дмитрий
 
17.04.25
10:53
(13) три: двадцать одно окно
16 patapum
 
17.04.25
11:14
Выведи стандартной функцией, как будто это были бы рубли, потом замени:
рубль - год
рубля - года
рублей - лет
и т.д.
17 СвинТуз
 
17.04.25
11:26
(16)
Что то сложно. Вроде можно в параметрах у функции сразу указать.
18 Толич
 
17.04.25
11:30
(4) Заменить Лет/Годов на "Вёсен" и сократить до "вёс." =)
19 Волшебник
 
17.04.25
11:40
(18) «Стыдись, Белое Перо! Ты ещё не отпраздновал свою шестнадцатую весну»
https://yandex.ru/video/preview/15238176010874734007
20 takefive
 
17.04.25
16:19
ЧислоПрописью(Объект.Год, , "год, года, лет, м,,,,,0");
21 formista2000
 
17.04.25
16:37
"г." - и всё!
22 Злопчинский
 
17.04.25
21:00
22 г.
23 Волшебник
 
18.04.25
16:41
Функция ПросклонятьЧислоЛет(Знач ЧислоЛет)
   а = ПолучитьСклоненияСтрокиПоЧислу("год", ЧислоЛет, "",  "ЧС=Количественное", "ПД=Именительный")[0];
   Возврат СтрЗаменить(а,"годов","лет");
КонецФункции


с версии 8.3.14