Имя: Пароль:
1C
1С v8
Как в запросе 1с8.2 из строки получить дату?
0 Genych76
 
07.11.18
10:08
Здравствуйте! Подскажите пожалуйста как в запросе в 1с8.2 получить дату из реквизита. Скажем,
ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
    РеализацияТоваровУслуг.СуммаДокумента,
    РеализацияТоваровУслуг.Дата,
    РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Комментарий
ИЗ .....

Надо получить дату содержащуюся в РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Комментарий..

Заранее признателен за ответ
1 ДенисЧ
 
07.11.18
10:11
Никак
2 butterbean
 
07.11.18
10:12
если этот изврат из-за СКД, то проще сделать общую функцию разбирающую комментарий и ее использовать в СКД
3 Fragster
 
гуру
07.11.18
10:12
(1) прав
4 rsv
 
07.11.18
10:22
(0) Несколько неудобно..правда?.Но к сож.Выразить() это сильно обрезаный Саst()
5 zva
 
07.11.18
10:29
Что, программисты от 200к, сдулись?
6 1Сергей
 
07.11.18
10:44
Есть один способ, но он вам не понравится
7 Fragster
 
гуру
07.11.18
10:56
(5) программисты за 200к понимают, что методически неправильно хранить дату в строковом поле. Правильно добавить, например, дополнительный реквизит.
8 CHerypga
 
07.11.18
11:00
(0) вспомнилась обратная ситуация
http://devtrainingforum.v8.1c.ru/forum/mess_files/DILBERT.jpg
9 Timon1405
 
07.11.18
11:01
объяснение от 1с, вроде, было такое: в общем случае мы не знаем в какой локализации будет выполняться код, и поэтому дата, например, 03-09-2018 в США и в России будут отличаться. поэтому и преобразовывать автоматом никак.
10 YUN1
 
07.11.18
11:04
(0) Зачем это делать в запросе?
11 Fragster
 
гуру
07.11.18
11:11
(9) и оно правильное
12 МихаилМ
 
07.11.18
11:46
(0) соедините с заранее заполненной таблицей соответствий.
13 Йохохо
 
07.11.18
11:47
(11) скуль умеет в дату из разных локальных форматов, так что не совсем
14 elCust
 
07.11.18
11:51
(5) >> Что, программисты от 200к

Ооооо пригорело!
15 1Сергей
 
07.11.18
12:03
Заранее прошу прощения за простыню.

Кароче, вот:


ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ГОД, ТГоды.Год - 1), МЕСЯЦ, ТМесяцы.Месяц - 1), ДЕНЬ, ТДни.День - 1) КАК ДАТА,
    ТДни.ДеньС + "." + ТМесяцы.МесяцС + "." + ТГоды.ГодС КАК ДатаС
ПОМЕСТИТЬ ТаблицаДат
ИЗ
    (ВЫБРАТЬ
        1 КАК День,
        "01" КАК ДеньС
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        2,
        "02"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        3,
        "03"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        4,
        "04"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        5,
        "05"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        6,
        "06"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        7,
        "07"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        8,
        "08"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        9,
        "09"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        10,
        "10"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        11,
        "11"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        12,
        "12"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        13,
        "13"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        14,
        "14"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        15,
        "15"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        16,
        "16"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        17,
        "17"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        18,
        "18"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        19,
        "19"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        20,
        "20"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        21,
        "21"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        22,
        "22"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        23,
        "23"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        24,
        "24"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        25,
        "25"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        26,
        "26"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        27,
        "27"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        28,
        "28"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        29,
        "29"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        30,
        "30"
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        31,
        "31") КАК ТДни
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            1 КАК Месяц,
            "01" КАК МесяцС
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2,
            "02"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3,
            "03"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4,
            "04"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5,
            "05"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6,
            "06"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7,
            "07"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8,
            "08"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9,
            "09"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            10,
            "10"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            11,
            "11"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            12,
            "12") КАК ТМесяцы
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            2008 КАК Год,
            "2008" КАК ГодС
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2009,
            "2009"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2010,
            "2010"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2011,
            "2011"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2012,
            "2012"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2013,
            "2013"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2014,
            "2014"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2015,
            "2015"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2016,
            "2016"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2017,
            "2017"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2018,
            "2018"
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2019,
            "2019") КАК ТГоды
        ПО (ИСТИНА)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
    РеализацияТоваровУслуг.Комментарий,
    ТаблицаДат.ДатаС
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаДат КАК ТаблицаДат
        ПО (РеализацияТоваровУслуг.Комментарий ПОДОБНО ("%"+ТаблицаДат.ДатаС+"%"))
ГДЕ
    РеализацияТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
16 Serg_1960
 
07.11.18
12:14
(15) У меня нет слов... цензурных. Ну это то зачем сюда копипастить? :(
17 1Сергей
 
07.11.18
12:15
(16) это ответ на (0)
18 Serg_1960
 
07.11.18
12:16
Уж лучше бы промолчать :)
19 1Сергей
 
07.11.18
12:17
Я сразу сказал, что решение есть, но оно не понравится
20 Serg_1960
 
07.11.18
12:22
Мой скромный вклад :)
v8: Дата в строку в запросе..
21 Serg_1960
 
07.11.18
12:23
22 Fragster
 
гуру
07.11.18
12:24
(15) а если там дата в другом формате? а если пробел или еще какие слова перед датой?
23 1Сергей
 
07.11.18
12:26
(22) если в другом формате, тогда вообще задница. Никак не вытащить.
остальное учтено

ПО (РеализацияТоваровУслуг.Комментарий ПОДОБНО ("%"+ТаблицаДат.ДатаС+"%"))
24 АгентБезопасной Нацио
 
07.11.18
12:26
(8) !!!!!
25 1Сергей
 
07.11.18
12:27
(20) если отходить от концепции "только запросом", то проще постобработкой
26 arsik
 
гуру
07.11.18
12:29
Есть еще один вариант.
Создать большую таблицу с датами в виде строки от 1900 по 2100 и сравнивать с ней.
27 arsik
 
гуру
07.11.18
12:30
(23) А да. Извиняюсь, не увидел
28 Serg_1960
 
07.11.18
12:31
(25) Да вся эта тема - баян лохматый. Уже сто раз неоднократно обсуждали не только тут на форуме.
29 Serg_1960
 
07.11.18
12:33
ЛУчше научите автора поиском пользоваться :)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс