Форматирование даты с учетом склонения по падежам

Опубликовал Александр Губанов (gubanoff) в раздел Программирование - Практика программирования

Функция позволяет форматировать переданную ей дату с учетом склонения по падежам.

Функция может заменить стандартный прием форматирования даты - Формат('21.01.10',"ДДДММГГ") на более гибкий - с возможностью склонения по падежам, изменения регистра, удаления в конце буквы "г". В результате использования в некоторых отчетах даты, наконец, будут очеловечены и станут радовать глаз. Имеет смысл поместить функцию в Глобальный модуль.

Скачать файлы

Наименование Файл Версия Размер
ФорматДаты
.ert 84,00Kb
17.07.13
73
.ert 84,00Kb 73 Скачать

См. также

Комментарии
1. Jurii (jmw) 59 28.07.10 11:19 Сейчас в теме
К чему мудрствовать лукаво?
Функция Представление(Слово1,Слово2,Слово3,_Чсл) Экспорт
	Ост2 = _Чсл % 100;
	Ост1 = _Чсл % 10;
	Если (Ост2 > 10) И (Ост2 < 20) Тогда
		ФормаЧисла = 3;
	ИначеЕсли Ост1 = 1 Тогда
		ФормаЧисла = 1;
	ИначеЕсли (Ост1 > 1) И (Ост1 < 5) Тогда
		ФормаЧисла = 2;
	Иначе
		ФормаЧисла = 3;
	КонецЕсли;
	Если ФормаЧисла = 1 Тогда
		Возврат Слово1;
	ИначеЕсли ФормаЧисла = 2 Тогда
		Возврат Слово2;
	Иначе
		Возврат Слово3;
	КонецЕсли;
КонецФункции // Представление
...Показать Скрыть

К примеру:
"2 " + Представление("банан", "банана", "бананов", 2) = "2 банана"
"12 " + Представление("банан", "банана", "бананов", 12) = "12 бананов"
2. Александр Губанов (gubanoff) 42 28.07.10 17:32 Сейчас в теме
В твоем примере решается задача формирования красивых сочетаний "число + слово", что, безусловно, тоже хорошо и использование такого приема должно всячески поощряться. В моем же примере, решается задача склонения даты, чтобы можно было красиво вставить дату, например, в это предложение: "Показатели должны быть выполнены во 2 квартале 2010 г." Чтобы получить нужное склонение, напишем "Показатели должны быть выполнены во [ФорматД(НужнаяДата,"ДККККГГГГ",6,1)]". Как тут твоими "бананами" справиться, ума не приложу.
3. Jurii (jmw) 59 29.07.10 09:21 Сейчас в теме
(2) В твоей разработке почти 200 строк никому не нужного кода!
Ведь давольно-таки сомнительно, что в какой-нибудь нитленке я буду его встраивать, а приведённый тобой пример решается одной строкой.
Вот так:
"Показатели должны быть выполнены " + ?( Число(ПериодСтр(НачКвартала(НужнаяДата), КонКвартала(НужнаяДата))) = 2, "во ", "в") + " квартале " + ДатаГод(НужнаяДата) + " г."
4. Александр Губанов (gubanoff) 42 29.07.10 10:18 Сейчас в теме
Бесспорно, твое
?( Число(ПериодСтр(НачКвартала(НужнаяДата), КонКвартала(НужнаяДата))) = 2, "во ", "в") + " квартале " + ДатаГод(НужнаяДата) + " г."
много лучше моего
[ФорматД(НужнаяДата,"ДККККГГГГ",6,1)]
, только тебе придется для каждого такого нешаблонного склонения изобретать конструкции (и тратить на изобретение оных время), типа приведенной, а я буду использовать универсальную функцию и менять пару ее параметров. А если надо будет написать нечто вроде "Данные предоставить к среде" ты тоже будешь каждый день недели в коде отчета правки делать? ;) или придумаешь функцию, которая по номеру дня недели будет его название выводить? Так вот, когда все варианты того, как может быть дата отформатирована моей функцией сложишь, посчитай количество строк кода.
5. Jurii (jmw) 59 29.07.10 11:12 Сейчас в теме
За 15 лет ни разу за весь свой опыт работы с 1С (начинал ещё с v6) никто и нигде меня не просил, чтобы эска писала "Показатели должны быть выполнены во 2 квартале 2010 г." или "Данные предоставить к среде".
Такие приказы отдать может только уполномоченное лицо, а не программа!
И тем более должно указываться конкретное число, а не гипотетическая среда.
6. Алексей Валерьевич (AVKonya) 29.09.11 11:11 Сейчас в теме
Приведенный на втором скриншоте пример неправильный.
"27 июля" будет именно июЛЯ в любом падеже.
И: Сегодня 27 июЛЯ
Р: У меня в календаре нет 27 июЛЯ
Д: Нужно успеть к 27 июЛЯ
и т.д.
У Вас описано склонение не "27 июля", а "27-й июль". Тогда бы действительно склонялось название месяца.
7. Александр Губанов (gubanoff) 42 03.10.11 22:43 Сейчас в теме
Точно, пожалуй, дал маху :) Отлично, что кто-то еще внимательно относится к русскому языку!
8. Татьяна Шулдикова (taasha25) 14 30.06.14 13:57 Сейчас в теме
Здравствуйте, уважаемый!

Как правильно открыть файл. 1С ругается на формат хранилища.

Заранее спасибо!
9. Александр Губанов (gubanoff) 42 30.06.14 17:33 Сейчас в теме
(8) taasha25, это обработка для 1С 7.7
10. Татьяна Шулдикова (taasha25) 14 01.07.14 08:12 Сейчас в теме
Спасибо! Я уже разобралась.
11. Марина Чирина (chmv) 01.07.14 08:25 Сейчас в теме
Мы пользуемся dll. но иногда должности слетают