Формативание в запросе

  1. 9 г. назад

    Задача походу не решаемая.. но все же

    в документе есть реквизит НалоговыйПериод,в нем хранится значение 2 014 тип - число
    мне нужно в запросе получить начало года по этому реквизиту, т.е. 01.01.2014

    Ответы: (1) (9) (47) (49)
  2. (0) Собери строковое значение - переведи в дату.

    Ответы: (4)
  3. Или так и оставь строкой:
    "01.01."+СокрЛП(НалоговыйПериод)

    Ответы: (4)
  4. 12.02.2015 15:52:15 отредактировано КитайскийМуй

    НАЧАЛОПЕРИОДА(<ЗначениеДаты>, ГОД) КАК НалоговыйПериод
    или:
    НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2014, 1, 1, 0, 0, 0), ГОД) КАК НалоговыйПериод

    Ответы: (5) (8)
  5. (1)(2) слово "в запросе" ни на что не наталкивает?

  6. (3)а вот нифига
    НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(док.НалоговыйПериод, 1, 1, 0, 0, 0), ГОД) КАК НалоговыйПериод

    прокатит только если
    док.НалоговыйПериод = 2014 //число
    если же док.НалоговыйПериод = 2 014 //число
    то ругаетсо

    Ответы: (8) (24) (50)
  7. + если б было так просто, я разве бы спрашивал)

    Ответы: (7)
  8. 12.02.2015 16:13:38 отредактировано Идун

    (6) Конфигуратор -Администрирование-Региональные установки ИБ- Сброс Исп. рег настр. тек сеанс., в параметр "Группировка" - значение 0. Остальное - как тебе надо, если надо.

    Ответы: (21)
  9. 12.02.2015 16:17:24 отредактировано КитайскийМуй

    (5)
    а:
    НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(ВЫРАЗИТЬ (док.НалоговыйПериод КАК ЧИСЛО(4) ), 1, 1, 0, 0, 0), ГОД) КАК НалоговыйПериод ?

    Ответы: (10)
  10. (0)пристегни левым соединением таблицу <ГодЧисло>/<НачГодаДата>

    Ответы: (11) (18)
  11. (8)пробовал. все равно с разделителем

  12. 12.02.2015 16:20:07 отредактировано Stim

    (9) нуу.. это конеш решит, но это не универсальный вариант)
    с тем же успехом можно написать

    выбор когда НП = 2 014 тогда 2014
    Когда НП = 2 013 тогда 2013

    и тд

    Ответы: (12) (14)
  13. 12.02.2015 16:21:05 отредактировано sf

    (11) проверять не хочу, попробуй
    2000+ВЫРАЗИТЬ (док.НалоговыйПериод КАК ЧИСЛО(3)

    Ответы: (13)
  14. (12) скуль ругаетсо, не может преобразовать

    Ответы: (15)
  15. (11)почему не универсальный?, это таблицу запросом сгенери например с нулевого года до 3000, профит

    Ответы: (17)
  16. (13) это понятно. 2000+ВЫРАЗИТЬ (Подстрока(док.НалоговыйПериод,3,3) КАК ЧИСЛО(3)

    Ответы: (16)
  17. (15) не катит.
    Подстрока выделяет подстроку из строки, а не из числа

    Ответы: (20)
  18. (14)охх.. можно конешн, но неужели без внешних таблиц нельзя преобразовать?

    Ответы: (18) (19)
  19. (17)я особо не заморачивалсо, знаю точно что преобразование типов в одинэсном языке запросов ооочень недоделано, всегда пользовал (9) )

  20. (17)кста зачем внешнюю? времянку, таблицу создаешь запросом

  21. Stim Подстрока выделяет подстроку из строки

    а у тебя что? 2 015 ?

  22. я так понял, что (7) Стимка не осилил.

    Ответы: (25)
  23. 
    select
     2014 as val
    into InputTable 
    union select 2015 union select 2016 union select 2017
    
    ;
    
    select
     2011 as num1
    ,datetime(2011, 1, 1) as date1
    into dates
    union select 2012,datetime(2012, 1, 1) union select 2013,datetime(2013, 1, 1) union select 2014,datetime(2014, 1, 1) union select 2015,datetime(2015, 1, 1)
    union select 2016,datetime(2016, 1, 1) union select 2017,datetime(2017, 1, 1) union select 2018,datetime(2018, 1, 1) union select 2019,datetime(2019, 1, 1)
    
    ;
    
    select 
     i.val
    ,dates.date1 as date
    from InputTable as i
    left join dates on (i.val=dates.num1)
    
  24. даты.png

  25. 12.02.2015 17:09:35 отредактировано andrewks

    (5) что за чушь? оператор ДАТАВРЕМЯ служит для описания литерала значения даты, т.е. это не функция, туда значения полей запроса нельзя передавать, только числовые литералы

  26. (21) пропустил 7
    ну да, возвращает без разделителя.
    надеюсь, в остальных отчетах это никак не отразится..

    Ответы: (26)
  27. (25) в твоём сеансе отразится.

    так я не понял, тебе тупо без разделителя надо было, или, всё-таки, получить дату начала года?

    Ответы: (28)
  28. ха, победил

  29. (26)мне - дату начала года

  30. получил одной строкой, ха

  31. ну чего никто не спрашивает как

  32. пусть эта тайна умрет вместе с тобой.

  33. ну кто ну кто.. фитиль епт!

  34. Можешь, конечно, написать. Но помни: это никому не интересно.

  35. я жду! Я сижу на Сокольниках и жду!

  36. мне кстати тоже не интересно

    я бы сделал ...(0+док.НалоговыйПериод)...

  37. гы гы гы, как сказал бы фиксен

  38. 12.02.2015 17:57:58 отредактировано Stim

    ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ГОД, Док.НалоговыйПериод - 1)

    Ответы: (38)
  39. (37) т.е. у меня правильный ответ?

    Ответы: (39) (40)
  40. (38) нуу.. у тебя направление верное. но ответ не точен. не в языке запросов

  41. (38) нет

    Ответы: (41) (42)
  42. (40) я знал. я чувствовал.

  43. (40) как нет, преобразоваваем 1 001 к 1001

    Ответы: (43)
  44. (42) ему нужно получить дату

    Ответы: (44) (49)
  45. (43) но проблема то не в этом а в том что число форматированное

    Ответы: (45)
  46. (44) проблема была в этом

    Ответы: (47)
  47. с разделителем разрядов, (0+...) должно помочь

  48. 12.02.2015 18:12:11 отредактировано Курильщик

    (45) невнимательно читал (0)?

    Ответы: (48)
  49. (47) внимательно

    Ответы: (50)
  50. 12.02.2015 18:13:33 отредактировано Bekas

    andrewks ему нужно получить дату

    фиг там! ему нужно получить не дату, а начало года

    Ответы: (51)
  51. (48) см. (5)

    Ответы: (52)
  52. (49) -image-

  53. (50) там чушь

  54. Эмм, начало года это тип дата, есличо. Это по умолчанию, если б был другой тип, я бы сказал

или зарегистрируйтесь чтобы ответить!