Age: 170 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Fri Feb 01, 2008 11:28 am Post subject:
-aim- wrote:
В этом состоит прелесть внутреннего проекта...
Понапривинчивал всего, что душе угодно к системе во имя собственного удобства и сидишь, бед не знаешь...
А внешний клиент иной раз голову готов открутить, если "лишнюю" z-скую табличку создашь....
Грустно...
Проект не внутренний, просто долгоиграющий....
Если клиенту так принципиально, можно месяца константами внутрь свой функции занести. С одной строны, это не позволяет использовать эти константы в других местах, а с другой - надежней.
Под 1С много чего написано. Как то нужно было написать функцию на C++ склонений ФИО. Нашел алгоритм только на 1С. Переплевался от 1эсины пока переписывал. Тоже еще тот фрукт.
Joined: 31 Oct 2007 Posts: 24 Location: 4.7, ECC 6.0
Posted: Fri Feb 01, 2008 1:13 pm Post subject:
Зачем для этой задачи падежи?
реализуется элементарно
Распиши 12 месяцев
января
февраля
...
декабря
Есть дата 20080212
сделай CONCATENATE день+месяц прописью+год
Делов на 15 минут
P.S.
"ДатаПрописью" в 1С никогда не было, там формат вывода реализуется так
Code:
Формат(<Параметр>,<Форматная_строка>)
где параментр значение типа дата
для дат - 'DПодстрокаФормата' (в русском регистре вместо D - Д), где
ПодстрокаФормата может быть вида:
DDMMYY (ДДММГГ), дата в виде - ДД.ММ.ГГ;
DDMMYYYY (ДДММГГГГ), дата в виде - ДД.ММ.ГГГГ;
DDMMMMYYYY (ДДММММГГГГ), дата в виде - ДД месяц прописью ГГГГ;
(0)DDMMMMYYYY ((0)ДДММММГГГГ) этот формат представляет собой вариант предыдущего формата с тем отличием, что число месяца всегда выводится двумя цифрами, т.е. для чисел меньших 10 спереди будет добавлен 0. Например: Формат('01.01.1999', ''Д (0)ДДММММГГГГ'') = 01 Января 1999 г.
MMMMYYYY (ММММГГГГ), дата в виде - месяц прописью ГГГГ;
MMMMYY (ММММГГ), дата в виде - месяц прописью ГГ;
QQQQYYYY (ККККГГГГ), дата в виде - N квартал ГГГГ;
QQQQYY (ККККГГ), дата в виде - N квартал ГГ;
YYYYMMDD (ГГГГММДД), дата в виде ГГГГММДД, то есть дата '10.11.1998' будет представлена как строка ''19981110'';
Joined: 31 Oct 2007 Posts: 24 Location: 4.7, ECC 6.0
Posted: Fri Feb 01, 2008 1:39 pm Post subject:
Вдогонку
Вместо
"Распиши 12 месяцев
января
февраля
...
декабря "
Можно использовать ФМ 'HR_RU_MONTH_NAME_IN_GENITIVE'
Передашь туда номер месяца он вернет название месяца сразу в нужном падеже.
Видимо этот ФМ есть только при наличии модуля HR.
Кстати внутри он прост до безобразия:
Code:
case month.
when 1. name = 'january'(001).
when 2. name = 'february'(002).
when 3. name = 'march'(003).
when 4. name = 'april'(004).
when 5. name = 'may'(005).
when 6. name = 'june'(006).
when 7. name = 'july'(007).
when 8. name = 'august'(008).
when 9. name = 'september'(009).
when 10. name = 'october'(010).
when 11. name = 'november'(011).
when 12. name = 'december'(012).
endcase.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.