выразить строку как дату в запросе #581746


#0 by ботаникус
в запросе есть поле строка вида 20110401 . Как можно выразить это в дату?
#1 by Ненавижу 1С
только извращаясь с выбор
#2 by DrShad
КонецПериода справку украли?
#3 by Wobland
мне вот интересно, как такая строка туда попала
#4 by DrShad
неправильная архитектура регистров, справочников или еще чего нибудь
#5 by ботаникус
делаю запрос к 1с7 через внешний источник данных
#6 by ботаникус
и как здесь это поможет?
#7 by ботаникус
хм... чета ваще не догоняю, можете намекнуть?
#8 by DrShad
за тебя все написать?
#9 by PR
Никак
#10 by DrShad
весьма спорно
#11 by PR
+ Кроме сумасшедшего есно :))
#12 by DrShad
а через ?
#13 by PR
Что спорно? Что из строки в запросе не получишь дату? Если бы из строки можно было бы получить число, то помогло бы ПОДСТРОКА и ДАТАВРЕМЯ, но строку в число тоже не преобразуешь. Так что только через офигительный ВЫБОР.
#14 by PR
Это функции, работающие с датой, а не строкой.
#15 by Ненавижу 1С
вот это начало года: ВЫБОР  КОГДА ПОДСТРОКА(Стр,1,2)="19" ТОГДА ДАТАВРЕМЯ(1900,1,1)  КОГДА ПОДСТРОКА(Стр,1,2)="20" ТОГДА ДАТАВРЕМЯ(2000,1,1) КОНЕЦ, ВЫБОР  КОГДА ПОДСТРОКА(Стр,3,1)="0" ТОГДА 0  КОГДА ПОДСТРОКА(Стр,3,1)="1" ТОГДА 1  ...  КОГДА ПОДСТРОКА(Стр,3,1)="9" ТОГДА 9 КОНЕЦ*10+ ВЫБОР  КОГДА ПОДСТРОКА(Стр,4,1)="0" ТОГДА 0  КОГДА ПОДСТРОКА(Стр,4,1)="1" ТОГДА 1  ...  КОГДА ПОДСТРОКА(Стр,4,1)="9" ТОГДА 9 КОНЕЦ, ГОД) далее начало месяца, ну и день
#16 by ботаникус
не надо злиться. просто не понимаю, как НачаоПериода может помочь. Туда же надо дату передать, а даты то и нет
#17 by hhhh
ну ты выбирай дату их семерки. Нафига строку-то передаешь?
#18 by PR
Черт, спалил всю интригу :))
#19 by ботаникус
там дата в 1сжорн в формате Date+Time+IDDoc .    как  вы предлагаете выбрать дату?
#20 by PR
В стандартном 1С запросе Date+Time+IDDoc? o_O
#21 by ботаникус
что значит "В стандартном 1С запросе"? выше написано, что запрос из внешнего источника данных
#22 by PR
А в запросе из внешнего источника данных нельзя из Date+Time склепать дату?
#23 by ботаникус
спасибо! слишком сложно, но по другому похоже никак
#24 by ботаникус
может я чего-то не понимаю, но подскажите если не сложно там строка типа 2011040118f5g0 5www. Как получить дату?
#25 by PR
Эээ..., ну 20110401 очевидно дата, а вот насчет того, что 18f5g0 - время, не уверен.
#26 by ботаникус
да, 20110401 я получаю чере подстроку, а дальше нужно это в дату преобразовать
#27 by ботаникус
что и написано в названии темы
#28 by PR
А, запрос из внешнего источника данных же вроде как нигде явно не оперирует низкоуровневым запросом, а значит можно оперировать только текстом запроса 1С. А что мешает преобразовать это в дату позже? Или это отчет, который просто выводится без обработки?
#29 by ботаникус
"а значит можно оперировать только текстом запроса 1С. " да, скульный конверт вставить не получится Позже конечно можно, но для моей задачи это неприемлемо
#30 by PR
Что за задача-то? Утюг нести?
#31 by ботаникус
кстати, куда пропал докторШАД, ушел "читать справку" (с)? Нагрубил и съ..бался, короче типичный 1сник
#32 by Snorkler
На запросе все заканчивается? Не проще потом уже результат запроса преобразовать?
#33 by Snorkler
:0)
#34 by ботаникус
преобразовать в дату после выполнения запроса проще простого, но ведь ты и сам понимаешь, что это не лучшее решение... да топик совсем не об этом
#35 by МихаилМ
ну напишите ф-цию на TSQL конечно все написано до Вас. Но быстрее написать, чем искать в интернет
#36 by Snorkler
А мне всегда интуитивно казалось, что "проще простого" - это обычно и есть "лучшее решение"…   :0)
#37 by МихаилМ
в этом основная беда русских (ну и русско говорящих) упрощение  - как метод отимизации что чаще всего ошибка.
#38 by Snorkler
Отимизация - это когда отымели?   :0) Тогда правильнее отымизация. Не думаю, что это ЧАЩЕ всего ошибка. Можете поспорить об этом с Михаилом Калашниковым и "бритвой Оккама"…  :0)
#39 by DrShad
да согласен
#40 by ботаникус
молодец, что хоть признал свою ошибку
#41 by Inform
, лови: ВЫБРАТЬ    1,    "1" ОБЪЕДИНИТЬ ВЫБРАТЬ    2,    "2" ОБЪЕДИНИТЬ ВЫБРАТЬ    3,    "3" ОБЪЕДИНИТЬ ВЫБРАТЬ    4,    "4" ОБЪЕДИНИТЬ ВЫБРАТЬ    5,    "5" ОБЪЕДИНИТЬ ВЫБРАТЬ    6,    "6" ОБЪЕДИНИТЬ ВЫБРАТЬ    7,    "7" ОБЪЕДИНИТЬ ВЫБРАТЬ    8,    "8" ОБЪЕДИНИТЬ ВЫБРАТЬ    9,    "9" ; P.S.: я не тестировал особо эту штуку, так что проверь получше. По временным таблицам удобно разнесено, должно быть понятно что где исправить в случае чего...
#42 by ботаникус
спасибо, гляну
#43 by ботаникус
тут еще шальная мысль в голову пришла создаем тз с 2 колонками: Дата и ДатаСтрокой Забиваем ее датами за 3 года (мне больше не надо) Запихиваем во временную таблицу Соединяемся со временной таблицей и получаем нормальную дату
#44 by Inform
+ вот так правильнее: ВЫБРАТЬ    1,    "1" ОБЪЕДИНИТЬ ВЫБРАТЬ    2,    "2" ОБЪЕДИНИТЬ ВЫБРАТЬ    3,    "3" ОБЪЕДИНИТЬ ВЫБРАТЬ    4,    "4" ОБЪЕДИНИТЬ ВЫБРАТЬ    5,    "5" ОБЪЕДИНИТЬ ВЫБРАТЬ    6,    "6" ОБЪЕДИНИТЬ ВЫБРАТЬ    7,    "7" ОБЪЕДИНИТЬ ВЫБРАТЬ    8,    "8" ОБЪЕДИНИТЬ ВЫБРАТЬ    9,    "9" ;    (НЕ ВТ_Даты.Дата ЕСТЬ NULL ) СГРУППИРОВАТЬ ПО
#45 by Nutsiiam
ох, мать. Вчера тебя колбасило на 1спп, сегодня с датами воюешь. Самый правильный ответ, да простят меня коллеги, в . Функция элементарна настолько, насколько возможно - если ты отроешь любой мануал по T-SQL. На выходе получишь дату в виде строки. Дальше, дергаешь свой чистый запрос, получаешь резалт. Если в 1С нужно преобразование, то через конструктор создания даты получишь свою дату.
#46 by Error pro
вот может пригодится переносил доки из 7.7 в 8.2 Функция Дата77(Стр)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С