Надо преобразовать "18 Февраля 2009" в Дату

Форум 1С: Одинэс.Ру

Найти!

Надо преобразовать "18 Февраля 2009" в Дату

VV
18.02.2009 - 12:25
есть у кого наработки красивые?
К списку тем 1 > К списку форумов

Интересные темы

odines.ru
20.10.2020 - 19:31
Смотри также:
Как быстро программно изменить родителя n-го числа элементов ? в 7.7
Плоский справочник как лог - вопросы
косяк в справочнике номенклатура

Re: Надо преобразовать "18 Февраля 2009" в Дату

lalex23
1 - 18.02.2009 - 12:29
некрасиво но работает, про год не придирайтесь - у меня других небыло
 
ДеньПисьма = Прав("0" + СокрЛП(Лев(ДатаНаписания,2)),2);
ГодПисьма = ?(Найти(ДатаНаписания,"2008") = 0,"2009","2008");
Если Найти(ДатаНаписания,"янва") > 0 Тогда
МесяцПисьма = "01";
ИначеЕсли Найти(ДатаНаписания,"февр") > 0 Тогда
МесяцПисьма = "02";
ИначеЕсли Найти(ДатаНаписания,"март") > 0 Тогда
МесяцПисьма = "03";
ИначеЕсли Найти(ДатаНаписания,"апре") > 0 Тогда
МесяцПисьма = "04";
ИначеЕсли Найти(ДатаНаписания,"мая") > 0 Тогда
МесяцПисьма = "05";
ИначеЕсли Найти(ДатаНаписания,"июн") > 0 Тогда
МесяцПисьма = "06";
ИначеЕсли Найти(ДатаНаписания,"июл") > 0 Тогда
МесяцПисьма = "07";
ИначеЕсли Найти(ДатаНаписания,"авгу") > 0 Тогда
МесяцПисьма = "08";
ИначеЕсли Найти(ДатаНаписания,"сентя") > 0 Тогда
МесяцПисьма = "09";
ИначеЕсли Найти(ДатаНаписания,"октяб") > 0 Тогда
МесяцПисьма = "10";
ИначеЕсли Найти(ДатаНаписания,"нояб") > 0 Тогда
МесяцПисьма = "11";
ИначеЕсли Найти(ДатаНаписания,"декаб") > 0 Тогда
МесяцПисьма = "12";
Иначе
МесяцПисьма = "01";
КонецЕсли;
ДатаПисьма = ДеньПисьма + "." + МесяцПисьма + "." + ГодПисьма;

Re: Надо преобразовать "18 Февраля 2009" в Дату

VV
2 - 18.02.2009 - 12:30
Спасибо, именинник :) С ДР!

Re: Надо преобразовать "18 Февраля 2009" в Дату

lalex23
3 - 18.02.2009 - 12:32
пасиба не булькает :)

Re: Надо преобразовать "18 Февраля 2009" в Дату

VV
4 - 18.02.2009 - 12:42
заижай, нальем :)

Re: Надо преобразовать "18 Февраля 2009" в Дату

lalex23
5 - 18.02.2009 - 12:49
а есл ине секрет - чего разбираешь?

Интересные темы

odines.ru
20.10.2020 - 19:31
Смотри также:
Внутренний идентификатор
Как уровни справочника увидеть...
Срочно нужен sauron - восстановление MD

Re: Надо преобразовать "18 Февраля 2009" в Дату

KonstS
6 - 18.02.2009 - 14:18
Функция ДатаИзСтроки(СтрДат)
Возврат Дата(Лев(СтрДат,2)+"."+Прав("0"+Найти("  ЯнвФевМарАпрМаяИюнИюлАвгСенОктНояДек",Лев(СокрЛП(Сред(СтрДат,3)),3))/3,2)+"."+Прав(СокрЛП(СтрДат),2))

Re: Надо преобразовать "18 Февраля 2009" в Дату

Друзья зовут меня Курулай
7 - 18.02.2009 - 16:10
(6) изящно! респект!

Re: Надо преобразовать "18 Февраля 2009" в Дату

Маус
8 - 18.02.2009 - 17:16
Если честно, (1) - это нормальный алгоритм, а вот (6) - этого "програмиста" нужно однозначно отправить куда подальше от компьютера (к примеру, картины писать, или гайки на складе пересчитывать)!
(прошу сильно не обижаться) - Так нельзя писать программы!

Re: Надо преобразовать "18 Февраля 2009" в Дату

lalex23
9 - 18.02.2009 - 17:19
(6) спасибо, красиво, коротко, изящно и просто...

Re: Надо преобразовать "18 Февраля 2009" в Дату

lalex23
10 - 18.02.2009 - 17:20
(8) в (1) дубовый алгоритм, в (6) красивое решение - сие есть две большие разницы.

Re: Надо преобразовать "18 Февраля 2009" в Дату

Маус
11 - 18.02.2009 - 17:28
(10) Ты не понял - это хорошо, что дубовый, он пишется за минуту, почти не требует отладки, ясен и понятен для любого. В (6)программу писал скорее художник, со своим складом мышления и тягой к прекрасному...

Re: Надо преобразовать "18 Февраля 2009" в Дату

lalex23
12 - 18.02.2009 - 17:30
(11) тебя я понял, это плохо?

Re: Надо преобразовать "18 Февраля 2009" в Дату

Маус
13 - 18.02.2009 - 17:35
это очень... очень плохо! Старайся не использовать подобные "красивые" алгоритмы! Код должен быть максимально прост! (даже возможно в ущерб скорости)!

Re: Надо преобразовать "18 Февраля 2009" в Дату

Маус
14 - 18.02.2009 - 17:39
кстати, что будет делать "красивый" алгоритм, если пользователь ошибется в названии месяца (и к примеру, его придется дописать, чтобы правильно обрабатывать месяцы с грамматическими ошибками)?

Re: Надо преобразовать "18 Февраля 2009" в Дату

aka AMIGO
15 - 18.02.2009 - 17:54
решение (1) приходит первым. И что характерно - оно простое.
Решение (6) - в самделе изящное :) и на ум приходит после дополнительных раздумий :)
ЗЫ. результат у обеих решений одинаков, так что "очень-очень плохо" - не-в-дугу и не-в-тую! т. Маус - шутник с чувством юмора.
Что касается грамматических ошибок - надо Маусу учить своих пользователей грамоте. Большенькие уж небось? :)) Регулярно задавай им диктанты. учи.

Re: Надо преобразовать "18 Февраля 2009" в Дату

Друзья зовут меня Курулай
16 - 18.02.2009 - 18:07
с Маусом категорически не согласен
алгоритм в (6) - один из самых изящных, которые я встречал за последний год.
и ещё: в алгоритме чувствуется почерк Мастера.
Охренительно приятно было увидеть такое.
если Маус этого не видит, это проблемы только Мауса, мне искренне жаль.

Re: Надо преобразовать "18 Февраля 2009" в Дату

marsi
17 - 18.02.2009 - 18:37
В (6) очень красивое решение. Но не будет работать для октября-декабря (010,011,012) или если в строке месяц будет написан с маленькой буквы.

Re: Надо преобразовать "18 Февраля 2009" в Дату

aka AMIGO
18 - 18.02.2009 - 18:44
(17) Врег() спасет отцов русдемократии..
можно написать вторую строчку кода, учитывающую 010-012

Re: Надо преобразовать "18 Февраля 2009" в Дату

marsi
19 - 18.02.2009 - 18:46
(17) Упс, поторопилась: окт-дек работают, не берет только маленькие буквы.

Re: Надо преобразовать "18 Февраля 2009" в Дату

Твинсен
20 - 18.02.2009 - 18:54
Я тоже считаю, что 6 отличное. Но можно универсальнее.
Строчка="18 Февраля 2009";
ЧислоМесяца=Число(Лев(Строчка,2));
Год=Число(Прав(Строчка,4));
Для К=1 по 12 Цикл
ОчереднаяДата=Дата(Число месяца, К, Год)//конструктор не такой, но пишу по памяти :)
Если СокрЛП(ВРЕГ(Строчка))=Формат(ОчереднаяДата,"подходящий формат") Тогда
Возврат ОчереднаяДата;

Re: Надо преобразовать "18 Февраля 2009" в Дату

lalex23
21 - 18.02.2009 - 19:16
вы блин ещё замер производительности проведите...

Re: Надо преобразовать "18 Февраля 2009" в Дату

Uho
22 - 18.02.2009 - 19:59
(14) даже из названия темы можно понять, что это писал не "человек", человек бы написал "февраля"

Re: Надо преобразовать "18 Февраля 2009" в Дату

КонецЦикла
23 - 18.02.2009 - 22:14
Если привести к виду '16 фев 2009' то с помощью SQL можно уже куда хочешь конвертить :)

Re: Надо преобразовать "18 Февраля 2009" в Дату

KonstS
24 - 19.02.2009 - 05:00
(14) А как будет работать в (1), если вместо Февраль" будет "Фивраль"? :-)
Кстати, алгоритм в (1) не сработает при "18 Февраля 2009" ;-)
Мой сделан строго по техзаданию, где фивраля быть не может. Почему - догадайся сам :-)
Хочется большей универсальности - ставим первой строкой СокрЛП(ВРег(СтрДат)) или СокрЛП(НРег(СтрДат)), с соответсвующими изменениям в следующей строке

Re: Надо преобразовать "18 Февраля 2009" в Дату

lalex23
25 - 19.02.2009 - 05:16
(14) ненадо глумицца над тупым одноэснегом...
А как будет работать в (1), если вместо Февраль" будет "Фивраль"? :-)
никак
Февраля
ну да, только у меня конкретная локальная задача была - все строки были такого формата:
ЧислоЦифрой МесяцПрописьюНижнимРегистром ГодИли2009Или2008
в этом случае мой алгоритм работает стабильно, большего мне для одноразовой операции не нужно.

Re: Надо преобразовать "18 Февраля 2009" в Дату

lalex23
26 - 19.02.2009 - 05:17
блин.. (25) -> (24)

Re: Надо преобразовать "18 Февраля 2009" в Дату

KonstS
27 - 19.02.2009 - 05:33
(25) согласен
К списку тем 1 > К списку форумов
Тема закрыта и находится в архиве.
Но Вы можете начать новую тему.
« Обращение к общему реквизиту в запросе Бюджет. Вопрос по КБК в ПКО »
© 2009 Форум 1С: Одинэс.Ру