gifts2017

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

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

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

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

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