| 
    
        
     
     | 
    
    
  | 
Как преобразовать строку типа "23.05.2022" в дату в 1с. | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        alekosansey    
     01.06.22 
            ✎
    11:20 
 | 
         
        Как преобразовать строку типа "23.05.2022" в дату в 1с. Пишу Дата("23.05.2022") говорит что невозможно преобразовать. Как преобразовать правильно в формат дата строку. Заранее огромное спасибо     
         | 
|||
| 
    1
    
        Ненавижу 1С    
     гуру 
    01.06.22 
            ✎
    11:24 
 | 
         
        (0) начнем с того, откуда вы эту строку взяли     
         | 
|||
| 
    2
    
        alekosansey    
     01.06.22 
            ✎
    11:24 
 | 
         
        c текстового документа     
         | 
|||
| 
    3
    
        NorthWind    
     01.06.22 
            ✎
    11:25 
 | 
         
        Ну есть же конструктор Дата (ДД, ММ, ГГГГ) или как-то так? 
 
        Тогда Дата (Лев (Строка, 2), Сред (Строка, 3, 2), Прав (Строка, 4).  | 
|||
| 
    4
    
        NorthWind    
     01.06.22 
            ✎
    11:26 
 | 
         
        пардон, Сред (Строка, 4, 2). Ну вы поняли.     
         | 
|||
| 
    5
    
        Kassern    
     01.06.22 
            ✎
    11:26 
 | 
         
        (3) год вначале)     
         | 
|||
| 
    6
    
        Kassern    
     01.06.22 
            ✎
    11:26 
 | 
         
        А вообще можно попробовать xmlЗначение(Дата)     
         | 
|||
| 
    7
    
        NorthWind    
     01.06.22 
            ✎
    11:27 
 | 
         
        (5) я не помню точно. Поэтому и написал "или как-то так"     
         | 
|||
| 
    8
    
        Dmitrii    
     гуру 
    01.06.22 
            ✎
    11:29 
 | 
         
        (0) Напиши так.
 
        
или так (тоже самое) 
     | 
|||
| 
    9
    
        Dmitrii    
     гуру 
    01.06.22 
            ✎
    11:30 
 | 
         
        + к (8) Только учти, что это недокументированная особенность работы функции Дата().     
         | 
|||
| 
    10
    
        alekosansey    
     01.06.22 
            ✎
    11:34 
 | 
         
        6 Не работает     
         | 
|||
| 
    11
    
        alekosansey    
     01.06.22 
            ✎
    11:35 
 | 
         
        8 Спасибо самый удобный вариант     
         | 
|||
| 
    12
    
        Кир Пластелинин    
     01.06.22 
            ✎
    11:36 
 | 
         
        (3) имхо безопасней ориентироваться на "разделитель" частей даты. а то мало ли вдруг окажется, что вместо 01.12.22 будет 1.12.22     
         | 
|||
| 
    13
    
        vs7719    
     01.06.22 
            ✎
    11:53 
 | 
         
        ЗначениеДаты = ОбщегоНазначенияКлиентСервер.СтрокаВДату("23.05.2022");     
         | 
|||
| 
    14
    
        vis_tmp    
     01.06.22 
            ✎
    11:55 
 | 
         
        (13) Это в какой конфигурации?     
         | 
|||
| 
    15
    
        vs7719    
     01.06.22 
            ✎
    12:00 
 | 
         
        (14) это из БСП, так что функция может быть в актуальных конфигурациях.     
         | 
|||
| 
    16
    
        vs7719    
     01.06.22 
            ✎
    12:01 
 | 
||||
| 
    17
    
        Конструктор1С    
     01.06.22 
            ✎
    12:40 
 | 
         
        (13) ток там, вроде бы, СтроковыеФункцииКлиентСервер.СтрокаВДату(), хотя могли и в ОН пробросить     
         | 
|||
| 
    18
    
        NorthWind    
     01.06.22 
            ✎
    12:41 
 | 
         
        (12) да, это разумно.     
         | 
|||
| 
    19
    
        NorthWind    
     01.06.22 
            ✎
    12:42 
 | 
         
        (17) на худой конец, даже в глобальниках старых конф на 7.7, не говоря уже о восьмерочных, всегда присутствовала функа, которая дербанила куски из строки с разделителями. А сейчас, кажись, уже и в платформе есть. Дальше дело техники.     
         | 
|||
| 
    20
    
        timurhv    
     01.06.22 
            ✎
    12:42 
 | 
         
        (17) это в старой БСП     
         | 
|||
| 
    21
    
        Злопчинский    
     01.06.22 
            ✎
    15:39 
 | 
         
        (0) Переходи на 7.7 - там Дата("ДД.ММ.ГГГГ")- работает...     
         | 
|||
| 
    22
    
        yopQua    
     01.06.22 
            ✎
    16:10 
 | 
         
        (21) +1, люто)     
         | 
|||
| 
    23
    
        1Сергей    
     01.06.22 
            ✎
    16:13 
 | 
         
        Шах и мат, снеговички)     
         | 
|||
| 
    24
    
        Волшебник    
     модератор 
    01.06.22 
            ✎
    16:14 
 | 
         
        (21) Какой изврат...     
         | 
|||
| 
    25
    
        yopQua    
     01.06.22 
            ✎
    16:35 
 | 
         
        (23) всмысле лютый +1, топлю за такой вариант     
         | 
|||
| 
    26
    
        MWWRuza    
     гуру 
    01.06.22 
            ✎
    22:45 
 | 
         
        +(23) Ага... Для меня, это тоже было дико... Когда привык к тому, что в (21), и, казалось бы в снеговике должно быть не меньше возможностей по преобразованию значений... Ан нет :-)     
         | 
|||
| 
    27
    
        ДедМорроз    
     01.06.22 
            ✎
    22:48 
 | 
         
        Я во всех языках пишу свой конвертер,т.к.потом ловить глюки смены региональных настроек и т.п.очень не хочется.
 
        Ну и отличить первый год от первого дня тоже достаточно просто,если он 4 цифры.  | 
|||
| 
    28
    
        Злопчинский    
     02.06.22 
            ✎
    01:19 
 | 
         
        Дата("29.06.2022")
 
        Дата("29\06\2022") Дата("29/06/2022") Дата("29-06-2022")  | 
|||
| 
    29
    
        NorthWind    
     02.06.22 
            ✎
    06:45 
 | 
         
        (26) в снеговике тип даты сделан правильно, как в других языках, в отличие от клюшек, где он урезанный, без времени. Поэтому вполне логично что есть некоторые отличия.     
         | 
|||
| 
    30
    
        Kigo_Kigo    
     02.06.22 
            ✎
    08:35 
 | 
         
        (29) Да, но такую элементарщину как Дата("23.05.2022") он же должен понимать? и если я так пишу, то я ИМХО подразумеваю что это начало дня, это вангую вопрос про время     
         | 
|||
| 
    31
    
        DEVIce    
     02.06.22 
            ✎
    09:47 
 | 
         
        Такое ощущение, что большинство участников ветки первый раз 1С увидели. Вопрос в (0) и ответы на него - это же база базная. Как можно такие вещи не знать? Ну ладно никто не помнит все константы наизусть, но блин в СП то можно посмотреть и простейший алгоритм преобразования строки в параметры для метода Дата пишется в одну строку. Про БСП вообще молчу.     
         | 
|||
| 
    32
    
        yopQua    
     02.06.22 
            ✎
    09:59 
 | 
         
        боль и унижение     
         | 
|||
| 
    33
    
        Garykom    
     гуру 
    02.06.22 
            ✎
    10:15 
 | 
         
        (30) а такую Дата("23.05.22") тоже должен?
 
        Не подскажешь тут что год а что число?  | 
|||
| 
    34
    
        yopQua    
     02.06.22 
            ✎
    10:32 
 | 
         
        (33) это одиннадцать часов вечера     
         | 
|||
| 
    35
    
        Kigo_Kigo    
     02.06.22 
            ✎
    11:13 
 | 
         
        (33) А так Дата("23.05.22 00:00:01") ?     
         | 
|||
| 
    36
    
        ДедМорроз    
     03.06.22 
            ✎
    21:35 
 | 
         
        Формата с двумя цифрами года и годом вначале не было.
 
        Тут можно считать,что год всегда в конце,а вот месяц и день - в зависимости от разделителей.  | 
|||
| 
    37
    
        Злопчинский    
     04.06.22 
            ✎
    09:39 
 | 
         
        а в клюшках (28) отработает....     
         | 
|||
| 
    38
    
        Злопчинский    
     04.06.22 
            ✎
    09:40 
 | 
         
        (31) "можно посмотреть и простейший алгоритм преобразования строки в параметры для метода Дата пишется в одну строку."
 
        в одну строку писать бяка, его отлаживать тяжело...  | 
|||
| 
    39
    
        Гений 1С    
     гуру 
    04.06.22 
            ✎
    13:25 
 | 
         
        у меня есть в списке шаблонов функции на этот счет
 
        Функция СтрокаДаты_ДД_ММ_ГГГГ_ВДату(Строка) Д = Число(Сред(Строка, 1, 2)); М = Число(Сред(Строка, 4, 2)); Г = Число(Сред(Строка, 7, 4)); Возврат Дата(Г, М, Д); КонецФункции Функция СтрокаДаты_ГГГГ_ММ_ДД_ВДату(Строка) Д = Число(Сред(Строка, 9, 2)); М = Число(Сред(Строка, 6, 2)); Г = Число(Сред(Строка, 1, 4)); Возврат Дата(Г, М, Д); КонецФункции  | 
|||
| 
    40
    
        Злопчинский    
     04.06.22 
            ✎
    14:28 
 | 
         
        (39) фу, какая гадость.
 
        две эти функции объединяет общее - наличие разделителей. прямую или реверсную запись можно определить позицией первого разделителя. . надо было еще выделение оставных частей даты в отдельные функции оформить...  | 
|||
| 
    41
    
        Гений 1С    
     гуру 
    04.06.22 
            ✎
    14:38 
 | 
         
        (40) перфекционизм - зло. Когда четко знаешь формат, лишние анализы только замедляют выполнение программы. А если тебе нужен анализатор, прикрути функцию разобратьАнализируяФормат, ггг     
         | 
|||
| 
    42
    
        Злопчинский    
     04.06.22 
            ✎
    14:53 
 | 
         
        (41) "перфекционизм - зло." - согласен.
 
        Обратная сторона плохо. "Когда четко знаешь формат" - кто знает? ты? а почему ты знаешь и я обязан знать? вполне достаточно "знать" что дата в типовом четырехгодовом формате с разделителями. обычно так бывает. МояДата = ПолучитьДатуБезГеморроя(датаСтрокой);  | 
|||
| 
    43
    
        Гений 1С    
     гуру 
    04.06.22 
            ✎
    17:44 
 | 
         
        (42) ну например, когда я импортировал из ZOHO BOOKS я точно знал формат даты в API, тогда как раз и написал эти функции. Еще вопросы, сэр?     
         | 
|||
| 
    44
    
        Злопчинский    
     04.06.22 
            ✎
    17:56 
 | 
         
        (43) Носэр!     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |