Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Приведение строки к типу "Дата" , 1С 8          
Vofka Подменю пользователя
сообщение 20.07.11, 14:29
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Мне уже не в первой имеется надобность имея строку вида "20.07.2011" привести её к типу значения Дата (ну чтоб в запросе вставить куда-то, или записать в какой-то объект или... или...). К сожалению нету в 1С встроенной функции, которая могла бы помочь в этом деле. "А что же делать?", - спросят новички. А сделать надо следующее:
Функция ПривестиКТипуДата(СтрДата)
    День = Сред(СтрДата, 1, 2);
    Месяц = Сред(СтрДата, 4, 2);
    Год = Сред(СтрДата, 7, 4);
    Возврат(Дата(Год+Месяц+День));
КонецФункции

Ничего сложного нету. Спасибо за внимание smile.gif

Спасибо сказали: DartRomanius, MATEVI,

DartRomanius Подменю пользователя
сообщение 20.07.11, 14:37
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(Vofka @ 20.07.11, 15:29) *
Мне уже не в первой имеется надобность имея строку вида "20.07.2011" привести её к типу значения Дата (ну чтоб в запросе вставить куда-то, или записать в какой-то объект или... или...). К сожалению нету в 1С встроенной функции, которая могла бы помочь в этом деле. "А что же делать?", - спросят новички. А сделать надо следующее:
Функция ПривестиКТипуДата(СтрДата)
        ...........
    Возврат(Дата(Год+Месяц+День));
КонецФункции

........................


Возможен вариант когда не сработает. Тогда так:
Возврат Дата(Год+Месяц+День+"000000");


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

Vofka Подменю пользователя
сообщение 20.07.11, 14:59
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата
Возможен вариант когда не сработает.

Например?

DartRomanius Подменю пользователя
сообщение 20.07.11, 16:58
Сообщение #4

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(Vofka @ 20.07.11, 15:59) *
Например?


За давностью точно не помню. Что-то с настройками региональными или еще где. icon_kos7.gif
Короче лечилось просто полным указанием всей строки даты, то есть полный формат "ГГГГММДДччммсс"


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

Vladal Подменю пользователя
сообщение 19.07.16, 9:14
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

Нашел на [необходимо зарегистрироваться для просмотра ссылки].
    // для тестов:
    //Сообщить(СтрокаВДату("20:01:0"));    
    //Сообщить(СтрокаВДату("27/08\2015 3-15-22"));
    //Сообщить(СтрокаВДату(20150320220315));
    //Сообщить(СтрокаВДату("2/3/55"));
    //Сообщить(СтрокаВДату("05/3/15"));
    //Сообщить(СтрокаВДату("1 ФеВраЛя 05 г. 20:01:0"));    
    //Сообщить(СтрокаВДату("1 янв. 2005 г ::"));    
    //Сообщить(СтрокаВДату("1 янв 2005г. ::01"));
    //Сообщить(СтрокаВДату("1 янв 2005г ::01"));    
    //Сообщить(СтрокаВДату("1 ФеВраЛь 05 г. 0:02:"));
    //Сообщить(СтрокаВДату("1 янВа 2005 г. 20:01"));
    //Сообщить(СтрокаВДату("02/04/2015"));
    //Сообщить(СтрокаВДату("20150320220315"));
    //Сообщить(СтрокаВДату("27.08.2015 3:15:22"));
    //Сообщить(СтрокаВДату("27.08-2015 5:24"));

Функция СтрокаВДату(Знач ФорматДаты, Знач Дано, Ошибка = Ложь) Экспорт
    Попытка
        ё = Формат('00010101', "ДФ=" + ФорматДаты) // - необязательная проверка первого правильности параметра
    Исключение
        Ошибка = Истина;
        Возврат '00010101'
    КонецПопытки;
    Ч = Новый Соответствие;
    Для ё = 1 По СтрДлина(ФорматДаты) + 7 Цикл
        Ч[Сред(ФорматДаты + "dMyHhms", ё, 1)] = 0    // - инициализация частей даты
    КонецЦикла;
    Для ё = 1 По 12 Цикл
        Дано = СтрЗаменить(Дано, Формат(Дата(1, ё, 1), "ДФ=MMММ"), Формат(ё, "ЧЦ=4; ЧВН=")); // - замена названий месяцев числами
        Дано = СтрЗаменить(Дано, Формат(Дата(1, ё, 1), "ДФ=MMМ" ), Формат(ё, "ЧЦ=3; ЧВН="))
    КонецЦикла;
    Для ё = 1 По СтрДлина(ФорматДаты) Цикл
        Ч[Сред(ФорматДаты, ё, 1)] = 10 * Ч[Сред(ФорматДаты, ё, 1)] + Найти("123456789", Сред(Дано, ё, 1)); // - накопление частей даты
        Ошибка = Ошибка ИЛИ Найти("dMyHhms", Сред(ФорматДаты, ё, 1)) И НЕ Найти("0123456789", Сред(Дано, ё, 1)) // - необязательная проверка на цифры
    КонецЦикла;
    Ч["y"] = Ч["y"] + ?(Ч["y"] < 50, 2000, ?(Ч["y"] < 100, 1900, 0)); // - дополнение двух цифр года до четырех
    Попытка
        Возврат Дата(Ч["y"], Ч["M"], Ч["d"], Ч["H"] + Ч["h"], Ч["m"], Ч["s"])
    Исключение
        Ошибка = Истина;
        Возврат '00010101'
    КонецПопытки
КонецФункции

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 11:05
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!